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