나는 이것을 어디서도 읽지 못했지만 이것이 가 파생 될 수 있다고 믿는 방법입니다 .와이
재귀 함수 , 아마도 계승 또는 이와 유사한 것을 갖도록합시다 . 비공식적으로, 우리는 정의합니다 의사 람다 용어로 자신의 정의에 발생합니다 :f f에프에프에프
에프= … f… f…
먼저 재귀 호출을 매개 변수로 고려할 수 있습니다.
에프= ( λ r . ( … r … r … ) )엠에프
를 자신에게 인수로 전달하는 방법 만 있다면 정의 할 수 있습니다. 물론 우리는 를 가지고 있지 않기 때문에 불가능합니다 . 우리가 가진 것은 입니다. 이후 우리가 정의하는 데 필요한 모든 기능이 포함되어 , 우리는 통과를 시도 할 수 있습니다 대신 인수로 및 재구성을 시도 나중에 내부 그것에서. 첫 번째 시도는 다음과 같습니다.f M M f M f f에프에프엠엠에프엠에프에프
에프= ( λ r . ( … r … r … ) )엠( λ r . ( … r … r … ) )엠
그러나 이것은 완전히 정확하지 않습니다. 전에, 는 내부의 대체되었습니다 . 그러나 이제 우리는 대신 을 전달 합니다. 을 사용하는 모든 장소를 어떻게 든 수정 하여 에서 를 재구성해야합니다 . 실제로 이것은 전혀 어렵지 않습니다. 이제 이라는 것을 알았 으므로 을 사용하는 모든 곳에서 단순히 을 대체합니다 .r M M r f M f = M M r ( r r )에프아르 자형엠엠아르 자형에프엠에프= M엠아르 자형( r r )
에프= ( λ r . ( … ( r r ) ... ( r r ) … ) )엠'(λr.(…(rr)…(rr)…))M′
이 솔루션은 좋지만 내부에서 을 변경해야했습니다 . 이것은 매우 편리하지 않습니다. 우리는 수정할 필요없이 더 우아하게이 작업을 수행 할 수 있습니다 다른 도입하여 로 전송 표현 작성자 : 인수 자체에 적용을 같이 우리가 얻을M λ M M ' λ x . M ( x x )MMλMM′λx.M(xx)
f=(λx.(λr.(…r…r…))M(xx))(λx.(λr.(…r…r…))M(xx))
이 경우의 방법은, 대입 , 대입 과 동일하게 정의이고, . 이것은 유효한 람다 항으로 표현 되는 비 재귀 정의를 제공합니다 !MxMMrff
로의 전환 이 쉬워졌습니다. 대신 임의의 람다 항을 사용 하여이 절차를 수행 할 수 있습니다. 그래서 우리는 빼고 정의 할 수 있습니다YMM
Y=λm.(λx.m(xx))(λx.m(xx))
실제로 은 정의한대로 로 줄입니다.YMf
참고 : 나는 문헌에 정의 된대로 를 파생 했습니다. 위에서 설명한 조합기는 값별로 호출되는 언어를 위한 의 변형이며 때로는 라고도 합니다. 참조 이 위키 백과 문서를 .YYZ