교회 숫자 로 입력 및 출력 .
00000000 01011111 01100101 11101101 0
에서는 람다 계산법 , 이는 λ이고 m . λ n . λ F . λ x . m f ( n f x ).
브루나이 지수 : λ λ λ λ 4 2 (3 2 1)
Lambda 미적분학 은 매핑 (함수)을 설명하는 간결한 방법입니다.
예를 들어이 작업은 λ x 로 쓸 수 있습니다 . λ y . x + y
주목할 것은 이것이 두 개의 인수를 취하는 람다 (함수)가 아니라는 것입니다. 이것은 실제로 중첩 된 람다입니다. 그러나 두 가지 인수를 취하는 람다처럼 작동하므로 비공식적으로 설명 할 수 있습니다. 모든 람다는 공식적으로 하나의 주장 만 취합니다.
예를 들어이 람다를 3과 4에 적용하면
(λ x . λ y . x + y ) 3 4 ≡ (λ y . 3 + y ) 4 ≡ 3 + 4 = 7
따라서 첫 번째 람다는 실제로 다른 람다를 반환합니다.
교회 숫자 는 람다 기호와 변수 만 남기고 여분의 부호를 없애는 방법입니다.
교회 시스템의 각 숫자는 실제로 함수가 항목에 적용되는 횟수를 지정하는 람다입니다.
함수를 f 로하고 항목을 x로 합니다.
따라서 숫자 1은 λ f에 해당합니다 . λ x . f x 는 f 를 x에 정확히 한 번 적용 함을 의미합니다 .
예를 들어 숫자 3은 λ f 입니다. λ x . f ( f ( f x )), 즉 f 를 x에 정확히 세 번 적용한다는 의미 입니다.
따라서 두 개의 교회 숫자 (예 : m 및 n ) 를 더하려면 x 에 m , n 번 f 를 적용하는 것과 같습니다 .
이것은 처음에 f 를 x 에 n 번 적용한 다음 f 를 결과 항목 m에 적용하는 것과 같습니다 .
예를 들어, 2는 의미 f(f(x))
와 도 3은 의미 f(f(f(x)))
하므로, 2 + 3이 될 것이다 f(f(f(f(f(x)))))
.
적용하려면 F 를 X , N 번, 우리는이 N F X .
비공식적으로 두 인수를 취하는 함수로 m 과 n 을 볼 수 있습니다 .
그 후, 우리는 적용 f를 본 결과 항목, 다시 분 시간 : m의 F ( N F (X) ).
그런 다음 상용구를 다시 추가하여 λ m 을 얻습니다 . λ n . λ F . λ x . m f ( n f x ).
이제 이것을 De Bruijn index 로 변환해야합니다 .
먼저, 각 변수와 람다 선언 사이의 "상대 거리"를 계산합니다. 예를 들어, m 은 4 개의 람다 "ago"로 선언되기 때문에 거리는 4입니다. 마찬가지로, n 의 거리는 3이고, f 의 거리는 2이며, x 의 거리는 1입니다.
그래서 우리는 이것을 중간 형식으로 작성합니다 : λ m . λ n . λ F . λ x . 4 2 (3 2 1)
그런 다음 변수 선언을 제거하고 다음과 같이 남겨 둡니다. λ λ λ λ 4 2 (3 2 1)
이제 이진 람다 미적분으로 변환합니다 .
규칙은 다음과 같습니다.
- λ가됩니다
00
.
- m n (그룹화)가됩니다
01 m n
.
- 숫자 i 는
1
i 곱하기 + 가되고 0
, 예를 들어 4가됩니다 11110
.
λ λ λ λ 4 2 (3 2 1)
≡ λ λ λ λ 11110
110
( 1110
110
10
)
≡ λ λ λ λ 11110
110
0101 111011010
≡ λ λ λ λ 0101
111101100101111011010
≡ 00
00
00
00
0101
111101100101 111011010
≡ 000000000101111101100101111011010