Я где-то читал, что 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 - это Монада".