2017-12-01 25 views
2

알고있는 한, 열렬한 평가에서 우리는 if-branch와 recursion을 보통 순서의 평가에서와 같은 방법으로 인코딩 할 수 없습니다.eager 평가에서 if-branch와 recursion을 인코딩하십시오.

예를 들어, 람다 계산법에-가지 경우 계승 (FAC)는 우리가 열망 평가의 경우 분기 및 재귀를 인코딩 할 수

if e1 e2 e3 = e1 e2 e3 
fac = Y(λf.λn. if n=0 1 n*f(n-1)) 
Y = λf.(λx. f(xx))(λx. f(xx)) 

을 인코딩 할 수 있습니까? 람다 (lambda) 미적분학을 사용하여 열망한 평가에서 if-branch와 factorial을 어떻게 인코딩해야하는지 알고 싶습니다.

if e1 e2 e3 = ??? 
fac = ??? 

답변

0

둘 다 인수를 무시하는 람다로 랩핑 한 다음 강제로 분기를 선택할 수 있으면 더미 값을 전달합니다.

은 그래서 할 수 있지만 경우에만 '경우'과 같이 사용됩니다 if e1 (λ_.e2) (λ_.e3)

+0

응답에 대한 감사합니다! :) 정말 도움이됩니다. –