大部分API不满足单子律。 jQuery
是一个庞大的API
,因此从统计上来看,它不太可能“无意中”成为单子。因此,我相当怀疑整个jQuery
API是否能满足单子律(即“jQuery是一个单子”)。
这并不意味着某个(非常受限制的)子集不可能满足它们,但整个API很可能包含“不安全”的操作,使用时会违反法律,破坏抽象。
由于似乎没有人提供证据表明API整体或部分满足法律,因此我建议我们假设它不满足,直到提供证据为止。
必须显示:
return
(将值提升到jQuery单子)?bind
,用于粘合计算?然后,鉴于其余的jQuery API,可能存在什么样的违法行为?例如,我可以通过调用其他API函数之一来打破bind
吗?
参考文献:
我认为你指的是jQuery的隐式循环行为。在这方面,jQuery类似于在列表单子中工作,其中链接相当于bind
,而用$()
包装一个元素类似于return
(我猜)。
因此,在jQuery中,如果你想将一个新的列表元素附加到一系列div和列表中,可以这样做:
$('div').children().append("<li>New list element</li>");
在 Haskell 中可能会有:
appendToEachList divs = divs >>= children >>= append "<li>New list element</li>"
以上内容为记忆中的伪代码,并不具有实际意义。
总之,我认为说"jQuery是一个Monad"有些牵强附会。