현재 대학을 위해 하스켈을 운영 중입니다.haskell의 부울 논리 및 유형
이true::t -> t1 -> t
true = (\x y -> x)
false::t -> t1 -> t1
false = (\x y -> y)
-- Implication
(==>) = (\x y -> x y true)
작업은 함수 (==>)
의 종류를 결정하는 것입니다 : 다음 하스켈 코드를 감안할 때. GHCi는 (==>) :: (t1 -> (t2 -> t3 -> t2) -> t) -> t1 -> t
이라고 말합니다.
나는 평가 순서는 (유형이 동일하게 유지로) 다음과 같은 것을 볼 수 있습니다 : (x y)
에
(==>) = (\x y -> (x y) true)
그래서 기능 true
표준시 인수.
왜 결과 유형 t가 첫 번째 인수의 결과에 바인딩되고 GHCi가 (==>)
유형을 결정하는지 설명 할 수 있습니까?
이 도움이 될 수 있습니다 : 그것은 GHC는 추론 분명히 실제 알고리즘은 더 (물건의 종류를 확인하는 데 사용하는 기본 알고리즘을 설명 http://lucacardelli.name/Papers/BasicTypechecking.pdf 복잡한,하지만이 예제에서 작동) – Wes
x는 가장 바깥 쪽 함수이기 때문에 x의 반환 형식은 ==>의 반환 형식입니다. – user3001