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