jQuery是一个monad
我读过jQuery是monad的地方,这个答案显示了underscore.js库中的链函数不是monad(但是是comonad)。 并回答这个是类似的,表明是monoid。
那么,jQuery是一个单子吗?
大多数API不符合单子法。 jQuery
是一个很大的API
,因此在统计上,它不太可能是“偶然”的monadic。 因此,我非常怀疑jQuery
API作为一个整体可以满足monad规则(即“jQuery是monad”)。
这并不意味着一个给定的(非常有限的)子集可能不会满足它们,但是API作为一个整体可能包含“不安全”的操作,这些操作在使用时会违反法律,打破抽象。
由于似乎没有人提供证据表明API的全部或部分符合法律,所以我建议我们应该假设它没有,直到提供证据。
它必须显示:
return
(将值提升到jQuery monad中)? bind
,粘合计算在一起? 然后,鉴于jQuery API的其他部分,可能违反哪些法律? 例如,我可以通过调用其他API函数之一来打破bind
吗?
参考文献:
我认为你指的是jQuery的隐式循环行为。 在这方面,jQuery类似于monad列表中的工作,其中链接相当于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”将是一个延伸。
链接地址: http://www.djcxy.com/p/8363.html上一篇: Is jQuery a monad
下一篇: Monad in non