generated at
Prim.Row
PureScriptのRow型のための型クラス集Module
rowのための型クラス制約をもりもり書いていくことで、型レベルプログラミングができる







merge関数
Union型クラスNub型クラスをあわせたもの
purs(hs)
merge :: forall r1 r2 r3 r4. Union r1 r2 r3 => Nub r3 r4 => { | r1 } -> { | r2 } -> { | r4 } merge { x: 1, y: "y" } { y: 2, z: true } -- { x: 1, y: "y", z: true }






Lacks l r1 と書いた時に、rows r1 に、label l が含まれていないこと、を保証する
これによって、labelの重複が起こらないことが保証される
Lacks制約がなくてもinsertはできる
しかし、labelが重複する可能性が普通にある
purs(hs)
class Lacks (label :: Symbol) (row :: # Type)
insert関数
purs(hs)
insert :: forall r1 r2 l a . IsSymbol l => Lacks l r1 => Cons l a r1 r2 => SProxy l -> a -> { | r1 } -> { | r2 } insert (SProxy :: SProxy "x") "x" { y: "y", z: true } -- { x: "x", y: "y", z: true }
delete関数
purs(hs)
delete :: forall r1 r2 l a . IsSymbol l => Lacks l r1 => Cons l a r1 r2 => SProxy l -> { | r2 } -> { | r1 } delete (SProxy :: SProxy "x") { x: "x", y: "y", z: true } -- { y: "y", z: true }