generated at
Row polymorphism


OCamlにもあるらしい
構造的部分型にも似ている



{ a :: A | r } と書けば、
{ a :: A} は許容する
{ a :: A, b :: B } も許容する
{ b :: B, c :: C} は許容しない




日本語でなぜ列多相と呼ぶのか




擬似コードをgpt-4に書かせて理解しようと思ったけど、これ疑似TypeScriptじゃだめだなmrsekut
実行時に型情報を見て挙動が変わるようなものを想定しないと理解がおかしくなる



参考
forall r. { foo :: Int, bar :: Int | r } -> Int r がRow型

hsに入れるproposal