[프로그래밍 언어 및 Lambda 계산] 4.3 Lambda 표현식에서 부울 값 코딩

4.3 부울 코딩

언어 B에서는 "거짓"과 "참"을 "표현"하기 위해 f와 t를 선택했습니다. Lambda 미적분에서는 다른 선택을 할 것입니다. 원칙적으로는 무작위이지만 이것이 매우 편리한 경우입니다.
여기에 사진 설명 삽입

≐ 기호는 우리가 XOR "매크로"축약 식임을 나타냅니다. "true", "false"및 "if"매크로는 유용 할 경우 매우 유용합니다. 예를 들어 모든 M과 N에 대해 다음과 같이 생각할 수 있습니다.
참이면 M N = n M if \ true \ M \ N = _nMi f t r u e M N   =NM
: 매크로를 확장하여 다음을 증명할 수 있습니다.
여기에 사진 설명 삽입

마찬가지로 거짓 MN = n N 인 경우 :
여기에 사진 설명 삽입

사실, 우리는 (참이면) = n 참이고 (거짓이면) = n 거짓임을 발견했습니다. 즉, true의 속기 (매크로)는 첫 번째 매개 변수 분기로 이동합니다. false의 속기 (매크로)는 두 번째 매개 변수 분기로 이동합니다. if의 속기 (매크로)는 가독성을위한 것입니다.

연습 4.3

증명 (참인 경우) = n 및 (거짓 인 경우) = n 거짓.

대답

(참인 경우) = (λv.λt.λf.vtf) (λx.λy.x)

n β (λt.λf. (λx.λy.x) tf)

n β (λf. (λx.λy.x) f)

n β (λx.λy.x) = 참

(거짓 인 경우) = (λv.λt.λf.vtf) (λx.λy.y)

n β (λt.λf. (λx.λy.y) tf)

n β (λf. (λx.λy.y) f)

n β (λx.λy.y) = 거짓

운동

및 / 또는 매크로 연산자를 정의하여 동작이 자연 조건과 일관되게 만듭니다 (then 및 true false = n false 등).

대답
  • xy가 거짓이면 ≐ λx.λy
  • 또는 ≐ λx.λy x 참인 경우 y

추천

출처blog.csdn.net/qq_35714301/article/details/113812178