Bob*_*Bob 1 monads haskell functional-programming scala comonad
假设我有
DTl : D T -> T DcomonadD对 monad的分配法则T。我如何定义 comonad D T?
你不能。假设D是恒等共子并且T是Cont Void,即空类型的延续单子。
newtype D a = D {runD :: a}
newtype T a = T {runT :: (a -> Void) -> Void}
Run Code Online (Sandbox Code Playgroud)
那么分配性就变得微不足道了。但extract :: D (T a) -> a不能定义为完全可计算的程序。这将是双重否定消除forall a. ((a -> Void) -> Void) -> a,这在构造性语言中是无法定义的。