Пропозиції (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.