ข้อเสนอ(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)
เป็น isomorphic ไปa
:g f = f someHardcodedA
การดำเนินงานที่เป็นไปได้เพียงอย่างเดียวคือ