Я где-то читал, что jQuery является монадой, а этот ответ показывает, что цепочечная функция в библиотеке underscore.js не является монадой (но comonad). И ответьте на это, что похоже, показывает, что это моноид.
Итак, является ли jQuery монадой?
Я где-то читал, что jQuery является монадой, а этот ответ показывает, что цепочечная функция в библиотеке underscore.js не является монадой (но comonad). И ответьте на это, что похоже, показывает, что это моноид.
Итак, является ли jQuery монадой?
Большинство API не удовлетворяют законам монады. jQuery
является большим API
, поэтому статистически он вряд ли будет "случайно" монадическим. В результате я скептически отношусь к тому, что API jQuery
в целом может удовлетворять законам монады (т.е. Что "jQuery является монадой" ).
Это не означает, что данное (очень ограниченное) подмножество может не удовлетворить их, но API в целом, скорее всего, будет содержать "небезопасные" операции, которые будут нарушать законы при их использовании, нарушая абстракцию.
Поскольку никто, кажется, не представил доказательств того, что API полностью или частично удовлетворяет законам, я предлагаю предположить, что это не так, пока не будут представлены доказательства.
Должно быть показано:
return
(снятие значения в монаде jQuery)?bind
, для склеивания вычислений вместе?И затем, какие правовые нарушения возможны, учитывая остальную часть jQuery API? Могу ли я, например, сломать bind
, вызвав одну из других функций API?
Литература:
Я думаю, вы имеете в виду неявное поведение цикла jQuery. В этом отношении jQuery похож на работу в монаде списка, где цепочка эквивалентна bind
, а обертка элемента в $()
сродни return
(я думаю).
Итак, где с jquery вы можете добавить новый элемент списка в кучу divs списков с помощью:
$('div').children().append("<li>New list element</li>");
... в haskell у вас может быть:
appendToEachList divs = divs >>= children >>= append "<li>New list element</li>"
Вышеизложенное из памяти и должно рассматриваться как псевдокод ерунда.
В любом случае, я думаю, что было бы сказать, что "jQuery - это Монада".