연결자에 대해 설명하겠습니다.그것은 "fixpoint의 콤비"라고하며 다음과 같은 속성이 있습니다 :
는
본 숙박 다음 "fixpoint의 콤비는"함수를 f :: (a -> a)
및 발견하여는 "고정 점"그 함수 등이 f x == x
의 x :: a
걸립니다. 고정 점 연결자의 일부 구현은 "발견"시 더 좋거나 나쁠 수 있지만 종료한다고 가정하면 입력 기능의 고정 점이 생성됩니다. The Property를 만족하는 함수는 "고정 점 결합 자"라고 부를 수 있습니다.
"고정 지점 연결자"y
이라고합니다. 방금 말씀 드린 내용을 토대로 다음 내용이 적용됩니다.
-- as we said, y's input is f :: a -> a, and its output is x :: a, therefore
y :: (a -> a) -> a
-- let x be the fixed point discovered by applying f to y
y f == x -- because y discovers x, a fixed point of f, per The Property
f x == x -- the behavior of a fixed point, per The Property
-- now, per substitution of "x" with "f x" in "y f == x"
y f == f x
-- again, per substitution of "x" with "y f" in the previous line
y f == f (y f)
여기에 있습니다. 고정 지점 연결자의 필수 속성에 따라 이y
으로 정의되어 있습니다.
y f == f (y f)
. y f
이 x
을 발견했다고 가정하는 대신 x
은 분기 계산을 나타내며 여전히 동일한 결론 (iinm)을 취할 수 있습니다.
귀하의 기능이 The Property를 충족하므로이 기능이 고정 점 결합 자라고 결론을 내릴 수 있으며 유형을 포함하여 우리가 명시한 다른 속성이 귀하의 기능에 적용될 수 있습니다.
이것은 확실한 증거는 아니지만 추가적인 통찰력을 제공하기를 바랍니다.
이 코드가 실제 코드라고 가정하면이 코드를 생각해 낸 사람을 해고하십시오. –
@ 마틴 제임스 : 응? 코드가 잘못되었다고 생각합니까?기능을 정의하는 가장 좋은 방법은 아니지만 가장 간단합니다. –
@MartinJames에서이 함수는 [Y Combinator] (http://en.wikipedia.org/wiki/Fixed-point_combinator)라고하는 잘 연구 된 함수입니다. (나는 옳다고 생각합니다. 지금 당장 위키피디아를 다시 확인할 수는 없습니다!) 어쨌든, 당신은 그런 철학 때문에 해고 당할 것입니다 :-) –