jQuery是monad吗?

jcu*_*bic 32 monads jquery functional-programming

我在某处读到jQuery是monad,这个答案表明underscore.js库中的链函数不是monad(而是comonad).并且回答这个类似的,表明它是幺半群.

那么,jQuery是monad吗?

Don*_*art 31

大多数API不符合monad法律.从统计上讲,它jQuery是一个很大的API,它不太可能是"意外"的monadic.因此,我非常怀疑jQueryAPI作为一个整体可以满足monad定律(即"jQuery是monad").

这并不意味着给定的(非常受限制的)子集可能不满足它们,但API作为一个整体可能包含"不安全"操作,这些操作在使用时会违反规则,从而破坏了抽象.

由于似乎没有人提供证据证明API全部或部分符合法律,我建议我们应该假设它没有,直到提供证据.

必须显示:

  • jQuery操作对应什么return(将值提升到jQuery monad中)?
  • jQuery操作对应于什么bind,将计算粘合在一起?
  • 左,右和相关性法律如何控制这些行动?

然后,鉴于jQuery API的其余部分,可能会违反哪些法律?例如,我可以bind通过调用其他API函数来打破它吗?

参考文献:

  • 第一个链接404s. (2认同)

jbe*_*man 11

我认为你指的是jQuery的隐式循环行为.在这方面,jQuery类似于在列表monad中工作,其中链接相当于bind,并且包含元素$()类似于return(我猜).

那么在jquery中你可以将一个新的列表元素附加到一堆div列表中:

$('div').children().append("<li>New list element</li>");
Run Code Online (Sandbox Code Playgroud)

...在哈斯克尔你可能有:

appendToEachList divs = divs >>= children >>= append "<li>New list element</li>"
Run Code Online (Sandbox Code Playgroud)

以上是来自内存,应该被认为是伪代码废话.

无论如何,我认为说"jQuery是Monad"会有一段时间.