jQuery는 모나드이고 this answer은 underscore.js 라이브러리의 체인 기능이 모나드가 아니라는 것을 보여줍니다 (하지만 comonad). 그리고 비슷한 answer to this은 그것이 모노로이드임을 보여줍니다.jQuery는 모나드입니다
그래서 jQuery는 모나드입니까?
jQuery는 모나드이고 this answer은 underscore.js 라이브러리의 체인 기능이 모나드가 아니라는 것을 보여줍니다 (하지만 comonad). 그리고 비슷한 answer to this은 그것이 모노로이드임을 보여줍니다.jQuery는 모나드입니다
그래서 jQuery는 모나드입니까?
대부분의 API는 모나드 법을 만족하지 않습니다. jQuery
은 큰 API
이므로 통계적으로 "우연히"모나드 식일 확률은 낮습니다. 결과적으로 전체적으로 jQuery
API가 모나드 법칙 (즉 "jQuery는 모나드")을 충족시킬 수 있다는 것에 회의적입니다.
주어진 (매우 제한적인) 하위 집합이이를 만족시키지 않을 수도 있지만 API 전체가 추상화를 위반하여 사용시 법을 위반하는 "안전하지 않은"조작을 포함 할 가능성이 있습니다.
아무도 API의 전체 또는 일부가 법을 충족한다는 증거를 제시하지 않은 것으로 보이므로 증거가 제공 될 때까지 API가 그렇지 않다고 가정해야합니다.
그것은이 표시되어야
는return
?bind
에 해당합니까?그런 다음 jQuery API의 나머지 부분에서 어떤 법률 위반이 가능합니까? 예를 들어 다른 API 함수 중 하나를 호출하여 bind
을 깨뜨릴 수 있습니까?
참고 문헌 :
첫 번째 링크 404s. –
나는 당신이 jQuery의 암시 루프 동작을 참조하고 생각합니다. 그런 점에서 jQuery는 체인 모방이 bind
과 같은 목록 모나드에서 작동하고 $()
에 요소를 래핑하는 것이 return
과 비슷합니다 (추측). jQuery로 당신이 목록 된 div의 무리에 새 목록 요소를 추가 할 수있는 위치
$('div').children().append("<li>New list element</li>");
당신은 할 수 있습니다
appendToEachList divs = divs >>= children >>= append "<li>New list element</li>"
을 위는 메모리에서 가져와 의사 코드로 간주해야합니다.
어쨌든 "jQuery는 모나드입니다."라고 말하면 스트레칭이 될 것입니다.
jQuery를 모르므로 이에 대한 대답이 제한되어 있지만 공통 모나드 구조는 일반적으로 모나 딕 구조를 가짐을 의미합니다. [1] 올바른 방법을 보면 [1] : http : // comonad.com/reader/2011/monads-from-comonads/ –
jQuery API의 핵심에 대한 모나드 법칙을 보여줄 것을 다른 사람에게 요구하고 있습니까? –