을 녹이고 난 다음 한 람다 계산법 :람다 계산법
(λx. + (- x 1)) 9 3
오른쪽 베타 감소는 다음과 같습니다
+ (- 9 1) 3
내가 실수를하고 3 번 갔다 대신 9 :
+ (- 3 1) 9
을
와 같은 결과가 있습니다.
해결 방법과 비교하기 전까지 나는 잘못되었다는 것을 알지 못했습니다.
가장 가까운 치환을해야합니까?이 경우 9입니까?
을 녹이고 난 다음 한 람다 계산법 :람다 계산법
(λx. + (- x 1)) 9 3
오른쪽 베타 감소는 다음과 같습니다
+ (- 9 1) 3
내가 실수를하고 3 번 갔다 대신 9 :
+ (- 3 1) 9
을
와 같은 결과가 있습니다.
해결 방법과 비교하기 전까지 나는 잘못되었다는 것을 알지 못했습니다.
가장 가까운 치환을해야합니까?이 경우 9입니까?
이 산술 예에서 동일한 답을 얻은 사실은 람다 계산법보다는 산술에 의한 우연입니다. 당신이 기간 구조 명확하게하기 위해 더 많은 공간을 썼다면
, 구문 분석 트리를 표시 불필요한 여분의 괄호,
(\x. + (- x 1)) 9 3
수단에 무슨 일이 일어나고 있는지보고 쉬울 것
((\x. (+ (- x 1))) 9) 3
신청서는 왼쪽에 있습니다 ("우리 모두가 60 년대에했던 것처럼"- Roger Hindley).
그래서 3은 x 대신에 잘못된 위치에 있습니다. 우리는 단지
((\x. (+ (- x 1))) 9) 3
=
(+ (- 9 1)) 3
=
(+ 8) 3
=
11
예, 항상 "첫 번째"(가장 왼쪽) 인수에 람다를 적용해야합니다.
이론적으로 다중 인수와 같은 것은 없으며 단일 인수 만 적용됩니다. 반복 신청시에는 f M N O
을 쓰는 것이 일반적입니다. (((f M) N) O)
. f
이 인수로 M
인 방법을 참고하십시오.
일반적으로 응용 프로그램을 다른 순서로 실행하면 동일한 결과를 얻지 못합니다. 당신의 본보기는 사건 일뿐입니다.