jQueryはモナドであるとどこかで読みましたが、この回答は、underscore.jsライブラリのチェーン関数がモナドではないことを示しています(ただし、コモナドです)。そして、似ているこれに対する答えは、それがモノイドであることを示しています。
では、jQuery はモナドですか?
jQueryはモナドであるとどこかで読みましたが、この回答は、underscore.jsライブラリのチェーン関数がモナドではないことを示しています(ただし、コモナドです)。そして、似ているこれに対する答えは、それがモノイドであることを示しています。
では、jQuery はモナドですか?
ほとんどの API はモナドの法則を満たしていません。jQuery
は大きいAPI
ので、統計的に「偶然に」モナドになる可能性は低いです。その結果、私はjQuery
API 全体がモナドの法則 (つまり、「jQuery はモナドである」) を満たすことができるかどうかについてかなり懐疑的です。
これは、特定の (非常に制限された) サブセットがそれらを満たさない可能性があることを意味するものではありませんが、API 全体として、使用すると法律に違反し、抽象化を破る「安全でない」操作が含まれる可能性があります。
API が全体的または部分的に法律を満たしているという証拠を誰も提供していないように見えるので、証拠が提供されるまで、そうではないと仮定することをお勧めします。
それは示されなければなりません:
return
ますか(値をjQueryモナドに持ち上げる)?bind
計算を結合するために、どの jQuery 操作が に対応しますか?それでは、jQuery API の残りの部分を考えると、どのような法律違反が考えられるのでしょうか? たとえば、bind
他の API 関数の 1 つを呼び出して を中断できますか?
参考文献:
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はモナドだ」と言うのは大袈裟だと思います。