![](/img/trans.png)
[英]What kind of structure is this? (Monad with a partial inverse but not a comonad)
[英]Is list a monad and comonad?
列表类型构造函数a↦μL。1 a ↦ μ L. 1 + a * L
不允许comonad结构。 回想一下,如果它是一个普通符号,我们将拥有(使用Haskell的Functor
和Comonad
类型类的名称)
fmap :: ∀ a b. (a → b) → [a] → [b]
extract :: ∀ a. [a] → a
duplicate :: ∀ a. [a] → [[a]]
但是,即使不遵循任何必需的法律, extract
也无法实现,因为extract
的输入可能是空列表,无法给出a
。
非空列表类型构造函数a ↦ μ NE. a + a * NE
a ↦ μ NE. a + a * NE
确实接受了共纳结构,其中extract
返回第一个元素,并将[x, y, ..., z]
duplicate
到[[x], [x, y], ..., [x, y, ..., z]]
(请注意,它们在构造上都是非空的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.