2017-01-26 3 views
0

을 녹이고 난 다음 한 람다 계산법 :람다 계산법

(λx. + (- x 1)) 9 3 

오른쪽 베타 감소는 다음과 같습니다

+ (- 9 1) 3 

내가 실수를하고 3 번 갔다 대신 9 :

+ (- 3 1) 9 

와 같은 결과가 있습니다.

해결 방법과 비교하기 전까지 나는 잘못되었다는 것을 알지 못했습니다.

가장 가까운 치환을해야합니까?이 경우 9입니까?

답변

7

이 산술 예에서 동일한 답을 얻은 사실은 람다 계산법보다는 산술에 의한 우연입니다. 당신이 기간 구조 명확하게하기 위해 더 많은 공간을 썼다면

, 구문 분석 트리를 표시 불필요한 여분의 괄호,

(\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 
1

예, 항상 "첫 번째"(가장 왼쪽) 인수에 람다를 적용해야합니다.

이론적으로 다중 인수와 같은 것은 없으며 단일 인수 만 적용됩니다. 반복 신청시에는 f M N O을 쓰는 것이 일반적입니다. (((f M) N) O). f이 인수로 M 인 방법을 참고하십시오.

일반적으로 응용 프로그램을 다른 순서로 실행하면 동일한 결과를 얻지 못합니다. 당신의 본보기는 사건 일뿐입니다.