Hackage에 MonadIO
과 유사한 typeclass가 있지만 작업을 IO
을 기반으로 쉽게 IO
개의 작업을 쉽게 들어 올릴 수 있습니다. Applicative
의 경우?"ApplicativeIO"클래스가 있습니까?
그런 typeclass가 존재하는 경우 Applicative-Monad Proposal의 구현으로 사용되지 않습니까? 제안에 에 대한 Monad
제약 조건의 완화가 포함되어 있습니까?
Hackage에 MonadIO
과 유사한 typeclass가 있지만 작업을 IO
을 기반으로 쉽게 IO
개의 작업을 쉽게 들어 올릴 수 있습니다. Applicative
의 경우?"ApplicativeIO"클래스가 있습니까?
그런 typeclass가 존재하는 경우 Applicative-Monad Proposal의 구현으로 사용되지 않습니까? 제안에 에 대한 Monad
제약 조건의 완화가 포함되어 있습니까?
년 전에 a related discussion on haskell-cafe이있었습니다. Reddit comments에서 나는 응용 펑터 모프 즘 (즉, Gabriel Gonzalez이 언급 한 법칙을 만족함)이지만 모나드 모프 즘이 아닌 다른 모나드에서 자연 변환 (g
)의 자연 변형 (g
)을 an example으로 보냈습니다 ~ >>=
). 따라서 AMP가 적용된 세계에서도 과 MonadIO m
은 m
이 Monad
인 경우와 전혀 다른 모습입니다.
이상적인 세계에서는이 같은 설정 거라고 :
class Functor f => FunctorIO f where
liftIO :: IO a -> f a
-- such that liftIO is a natural transformation (automatic, by parametricity)
class (Applicative f, FunctorIO f) => ApplicativeIO f where
-- ... and liftIO is an applicative functor morphism
class (Monad f, ApplicativeIO f) => MonadIO f where
-- ... and liftIO is a monad morphism
을하고 해당 법률이 만족 할 때 마법의 요정 정확히 ApplicativeIO
및 MonadIO
인스턴스를 정의하는 것입니다.
'Monad' 제약을 완화하는 것이 고려해 볼 가치가 있다고 생각합니다. –
사람들이 궁금해하는 경우 법칙은 'liftAIO (순수한 r) = 순수한 r'이고 'liftAIO (f <*> x) = liftAIO f <*> liftAIO x' –
나는 대답은 "Hackage a 어딘가에 있습니까? MonadIO와 유사하지만 응용 프로그램에 대한 typeclass? " "아니오"(적어도 아무것도 찾을 수는 없었 음). 그러나 이것이 @GabrielGonzalez이 어느 시점에서 블로그 게시물을 작성하지 않는다는 의미는 아닙니다. – bheklilr