Öneriler (P -> Q) -> Q
ve P \/ Q
eşdeğerdir.
Haskell'de bu denkliğe şahit olmanın bir yolu var mı:
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 = ???
öyle ki
from . to = id
ve to . from = id
?
g = const someHardcodedB
a
ya b
. Mantıklı.
to f = callcc (\k -> k (Right (f (\a -> k (Left a)))))
olsaydı işe yarardı. (Bu, çıkarımın geçerli bir klasik kanıtıdır.)
((a -> b) -> b)
izomorfik olmasıdıra
: olası tek uygulamag f = f someHardcodedA
.