众所周知,应用函子在复合情况下是闭的,而单子不是。然而,我一直很难找到一个具体的反例来说明单子并不总是构成。
这个回答 给出了 [String -> a]
作为非单子的一个例子。经过一段时间的尝试,我凭直觉相信它,但是这个答案只是说“ join 不能实现”,没有给出任何正当理由。我想要更正式一点的。当然,[String -> [String -> a]] -> [String -> a]
类型的函数有很多,我们必须证明任何这样的函数都不一定满足单子定律。
任何示例(附带证明)都可以; 我不一定要特别寻找上述示例的证明。