는 그 기사에서 definition of monad입니다 :Haskell의 모든 Monad 인스턴스가 Hask에서 Hask 로의 맵핑을위한 다른 방법입니까? 여기 <a href="https://en.wikibooks.org/wiki/Haskell/Category_theory" rel="nofollow noreferrer">Haskell/Category theory</a>을 읽고 있어요
모나드는 몇 가지 추가적인 구조를 지원하는 같은 카테고리 범주에서 펑터의 특별한 유형이다. 따라서 정의까지.
가단위 : C의 모든 오브젝트 X 두 morphisms 함께 C-> C : 모나드는 펑 M 인 X -> M (X)
가입 : M (M (X)) -> M (X)
내가 알고있는 것처럼, 하스켈 return
에서이 unit
에 해당합니다.
x :: [Int] -- x is a member of Lst category
x = return 5
을이 하스켈에서 유효 코드 : 그러나 return
와 나는 쓸 수 있습니다. 지금 보시는 것처럼 5
은 Lst
의 회원이 아니며 return
이 적합합니다. C-> C :
그래서, Lst
이 M에서하지 С이라고 생각한다. 그런데 누가?
아마 정답은 Hask
,하지만 난 "의 하위 범주에 카테고리에서 펑은" "같은 범주에 카테고리에서 펑"와 동일한 지 모르겠어요.
'Hask'란 무엇입니까? – Thilo
이것은 "Haskell/Categry theory"에서 나온 것입니다 : "이 기사에서 다루는 주요 범주는 하스켈 (Haskell)이며 하스켈 형식을 대상으로 취급하고 하스켈은 형태 상으로 기능합니다 ..." – azaviruha
'M : C -> C '는 클래스 모나드에서'm'에 해당하고'C'는'Hask' 카테고리이지만 '.. : C -> C'에서는'C'가 객체를 참조하고 있습니다. 이 경우에는 유형 인 'C'의. 나는 M : Obj (C) -> Obj (C)'를 쓰는 것이 더 정확하다고 가정합니다. – user2407038