假设我有
D
T
l : D T -> T D
的comonad的D
在单子T
。如何定义comonad D T
?
你不能 假设D
标识为comonad且T
为Cont Void
,即空类型的连续单子。
newtype D a = D {runD :: a}
newtype T a = T {runT :: (a -> Void) -> Void}
然后,分布微不足道。但是extract :: D (T a) -> a
不能定义为一个整体可计算程序。这将是双重否定消除forall a. ((a -> Void) -> Void) -> a
,这在构造语言中是无法定义的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句