いいえ、少なくとも非終端操作や安全でない操作は不可能です。
引数は本質的にthis oneに似ています:f
を利用して、私たちが住むことができないと知っているタイプに住んでいます。
は
f :: Monad m => ((a -> b) -> c -> d) -> (a -> m b) -> m c -> m d
がc ~()
f :: Monad m => ((a -> b) ->() -> d) -> (a -> m b) -> m() -> m d
したがって
(\g h -> f (\x _ -> g x) h (return()))
:: Monad m => ((a -> b) -> d) -> (a -> m b) -> m d
Speciazlize d ~ a
特化が存在すると仮定する。
(\g h -> f (\x _ -> g x) h (return()))
:: Monad m => ((a -> b) -> a) -> (a -> m b) -> m a
Speclialize m ~ Cont t
(\g h -> runCont $ f (\x _ -> g x) (cont . h) (return()))
:: ((a1 -> b) -> a) -> (a1 -> (b -> r) -> r) -> (a -> r) -> r
したがって、タイプ((r -> b) -> r) -> r
が生息している
(\g -> runCont (f (\x _ -> g x) (cont . const) (return())) id)
:: ((r -> b) -> r) -> r
したがってh = const
(\g -> runCont $ f (\x _ -> g x) (cont . const) (return()))
:: ((r -> b) -> a) -> (a -> r) -> r
取り、Hカリー・ハワードアイソフォームの命題は、命題的直観主義論理の定理に相当する。しかし、式((A -> B) -> A) -> A
はPeirce's lawであり、このような論理では証明できないことが知られている。
私たちは矛盾を得ているので、そのようなものはありませんf
。これとは対照的に
、タイプ
f2 :: Monad m => ((a -> a) -> b -> b) -> (a -> m a) -> m b -> m b
は用語
f2 = \ g h x -> x
が住んでいるが、私は、これはあなたが本当に欲しいものではありません疑います。
出典
2017-11-18 08:57:48
chi
これまでに何を試みましたか?どこに問題がありますか? Hoogleでそれらの機能を検索しようとしましたか? –