サーチ…


空き空き~~アイデンティティ

与えられた

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 、with

data Nat = Z | S Nat
data Writer Nat a = Writer Nat a

無料かもしれない~~ MaybeT(Writer 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

または同等に(最初にMaybeT (Writer Nat) a要素を評価すると約束している場合) (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

無料(Reader x)~~リーダー(Stream 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