28

은 찾을 : 미래의 모든 방법을 야기하는 포장 객체에 chain를 호출underscore.js의 chain 함수가 모나드를 생성합니까? <a href="http://underscorejs.org/#chaining" rel="noreferrer">the <code>chain</code> documentation</a>에서

뿐만 아니라 포장 개체를 반환하는 를 호출합니다. 계산이 완료되면 value을 사용하여 최종 값을 검색하십시오.

따라서 chain 함수는 모나드를 생성합니까?

+3

haskellers가이 주제에 관해 말할 수 있기 때문에이 haskell에 태그를 지정했습니다. – Marcin

답변

38

아니, 모나드가 아니라 코모 데드! 그것은 래핑 된 객체를 취하고 일반 값을 래핑 된 객체를 가져 와서 반환하는 함수로 반환하는 함수를 켭니다. 하스켈 타입의 서명으로 그는 다음과 같습니다

(Wrapped a -> b) -> (Wrapped a -> Wrapped b) 

value의 유형 서명은 다음과 같습니다

Wrapped a -> a 

이 당신이 comonad에 필요한 것을 정확하게이다. 첫 번째 기능은 보통 extend이고 두 번째 기능은 extract입니다.

당신은 코모도를 추가 컨텍스트가있는 값으로 생각할 수 있습니다. 그리고 그것은 정확히 chain이하는 일입니다.

comonads에 대한 자세한 내용은 this Stackoverflow question을 참조하십시오.

+8

나는이 대답을 좋아한다. 언더 스코어 개체 메서드를 형식에 매핑하는 방법을 설명하는 것이 더 의미가 있다고 생각됩니다. 만약 내가 올바르게 이해한다면, 메소드는 일반적으로'Wrapped a -> b's이지만,'chain'은 그 메소드 ('value'를 제외한)가 모두'Wrapped a -> Wrapped b' 인 객체를 리턴합니다. 약간의 하스켈을 알고 있지만, 문제는 원래 하스켈에 태그가 붙어 있지 않았기 때문에 답변이 JS 라이브러리에 어떻게 매핑되어 있는지에 대한 설명이 도움이 될 수 있습니다. – ellisbben

관련 문제