jQuery是一个monad

我读过jQuery是monad的地方,这个答案显示了underscore.js库中的链函数不是monad(但是是comonad)。 并回答这个是类似的,表明是monoid。

那么,jQuery是一个单子吗?


大多数API不符合单子法。 jQuery是一个很大的API ,因此在统计上,它不太可能是“偶然”的monadic。 因此,我非常怀疑jQuery API作为一个整体可以满足monad规则(即“jQuery是monad”)。

这并不意味着一个给定的(非常有限的)子集可能不会满足它们,但是API作为一个整体可能包含“不安全”的操作,这些操作在使用时会违反法律,打破抽象。

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

它必须显示:

  • 什么jQuery操作对应于return (将值提升到jQuery monad中)?
  • 什么jQuery操作对应bind ,粘合计算在一起?
  • 左,右和联想法对这些操作有何影响?
  • 然后,鉴于jQuery API的其他部分,可能违反哪些法律? 例如,我可以通过调用其他API函数之一来打破bind吗?

    参考文献:

  • jQuery不是一个monad
  • jQuery仍然不是一个monad

  • 我认为你指的是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