수색…


무료 빈 ~~ 신원

주어진

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