제안 (P -> Q) -> Q
과 P \/ Q
동일합니다.
Haskell에서이 동등성을 목격 할 방법이 있습니까?
from :: Either a b -> ((a -> b) -> b)
from x = case x of
Left a -> \f -> f a
Right b -> \f -> b
to :: ((a -> b) -> b) -> Either a b
to = ???
그런
from . to = id
그리고 to . from = id
?
g = const someHardcodedB
a
또는 b
. 맞는 말이다.
to f = callcc (\k -> k (Right (f (\a -> k (Left a)))))
작동합니다. (이것은 그 의미에 대한 유효한 고전적 증거입니다.)
((a -> b) -> b)
가 동형 일a
수 있다는 것입니다g f = f someHardcodedA
. 가능한 유일한 구현 방법은 입니다.