Haskell Language
무료 모나드로 일반적인 모나드
수색…
무료 빈 ~~ 신원
주어진
data Empty a
우리는 가지고있다.
data Free Empty a
= Pure a
-- the Free constructor is impossible!
동형 인
data Identity a
= Identity a
자유로운 정체성 ~~ (Nat,) ~ Writer Nat
주어진
data Identity a = Identity a
우리는 가지고있다.
data Free Identity a
= Pure a
| Free (Identity (Free Identity a))
동형 인
data Deferred a
= Now a
| Later (Deferred a)
또는 동등하게 (fst 요소를 먼저 평가하겠다고 약속 한 경우) (Nat, a)
, Writer Nat a
data Nat = Z | S Nat
data Writer Nat a = Writer Nat a
무료 아마 ~~ MaybeT (작가 Nat)
주어진
data Maybe a = Just a
| Nothing
우리는 가지고있다.
data Free Maybe a
= Pure a
| Free (Just (Free Maybe a))
| Free Nothing
이는
data Hopes a
= Confirmed a
| Possible (Hopes a)
| Failed
또는 동등하게 (fst 요소를 먼저 평가한다고하면) (Nat, Maybe a)
, MaybeT (Writer Nat) a
data Nat = Z | S Nat
data Writer Nat a = Writer Nat a
data MaybeT (Writer Nat) a = MaybeT (Nat, Maybe a)
무료 (작가 w) ~~ 작가 [w]
주어진
data Writer w a = Writer w a
우리는 가지고있다.
data Free (Writer w) a
= Pure a
| Free (Writer w (Free (Writer w) a))
동형 인
data ProgLog w a
= Done a
| After w (ProgLog w a)
또는 이와 동등하게 (로그를 먼저 평가한다고 약속 한 경우) Writer [w] a
.
무료 (Const c) ~~ c
주어진
data Const c a = Const c
우리는 가지고있다.
data Free (Const c) a
= Pure a
| Free (Const c)
동형 인
data Either c a
= Right a
| Left c
무료 (리더 x) ~~ 리더 (스트림 x)
주어진
data Reader x a = Reader (x -> a)
우리는 가지고있다.
data Free (Reader x) a
= Pure a
| Free (x -> Free (Reader x) a)
동형 인
data Demand x a
= Satisfied a
| Hungry (x -> Demand x a)
또는 이와 동등하게 Stream x -> a
를
data Stream x = Stream x (Stream x)
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow