包装型
包装型は、拡張可能レコードおよびバリアントに代表されるHKDにおいて、要素を包むパラメータとなる型である。これらを活用することで、従来のレコードの概念にとらわれない強力な操作を実現できる。 Identity
code: (haskell)
newtype Identity a = Identity a
基本となるのは、値をそのまま包むIdentityである。
Const
code: (haskell)
newtype Const a b = Const { getConst :: a }
全部のフィールドが同じ型を持つ場合はConstが使える。
Maybe, Either
フィールドの値が欠けているという場合を表現できる。
Prod
code: (haskell)
data Prod f g a = Prod (f a) (g a)
二つのラッパーを贅沢に組み合わせる。Constと併用すれば、それぞれのフィールドに特定の型の値を付与することもできる。
Comp
code: (haskell)
newtype Comp f g a = Comp { getComp :: f (g a) }
ラッパーを重ねる。
Nullable
Match
Proxy
Field
Tangle