カリーハワード対応
Bool Either () () true Left false Right この記事では,上記の対応付けを使って,ポイントフリースタイルで論理演算を定義します。 否定 not の定義 a not a true false false true notを定義するには,ArrowChoiceの(|||)を使います。 not :: Either () (…
3つの指数法則 指数法則を数式から型に書き換える 数式 型 b -> a Either a b (a, b) この表の通りに指数法則を書き換えると,こうなります。 (a, b) -> c = a -> (b -> c) (a -> b, a -> c) = a -> (b, c) (a -> c, b -> c) = (Either a b -> c) これらは,…