나는 (MonadCo
는 코 루틴 모나드를 대표하는 내 자신의 typeclass입니다. 당신이 좋아하는 경우. 문제는 동일합니다. 대신하는 경우 MonadError e m
을 고려할 수) 유형제약 조건을 구체화하기 위해 Data.Constraint를 어떻게 사용합니까?
(forall m. (MonadCo r m, MonadReader Int m) => m())
-> (forall m. (MonadCo r m, MonadReader Int m) => m())
의 기능이
이 보인다 내가 제약 조건을 구체화하고 형식 서명이있는 함수로 끝낼 수 있어야합니다.
(Equals k (MonadCo r, MonadReader Int))
=> (Constrain k()) -> (Constrain k())
그러나이 구현 방법에 대해서는 잘 모릅니다. 연습. 나는 :-
과 :=>
이 실제로 무엇인지에 대해 완전히 당혹 스럽다. 내가 을 어딘가에 필요로한다고 가정 해 보겠습니다. 왜냐하면 저는 보편적으로 m
을 계량하고 있기 때문입니다.하지만 어디에 적합해야하는지 모르겠습니다.
실제로 내가하고자하는 일은 forall m. (MonadCo r m, MonadReader Int m)
제약을 구체화하는 것입니다. 나는 그 일을 할 때 왼편에 나타나는 모든 것이 자동적으로 "옳은 일"이라고 생각합니다.
Data.Constraint
은 매우 강력하게 보이지만 어디에서 시작할 수 있습니까?
확실히 가능합니다. 그리고''-'' 또는''Forall1''과 같은 무서운 것들을 필요로하지 않습니다. – MigMit