2
行多型レコードを表す型/エイリアスを定義する方法はありますか?多型レコード型エイリアスの構文
だから私は別名としてレコード型を定義したい
tester :: forall r. {val :: Int | r} -> Int
tester a =
a.val
callTester = tester {val: 1, b: 2}
この例を与えられました。何かのように
type Val = forall r. {val :: Int | r}
tester :: Val -> Int
tester a =
a.val
callTester = tester {val: 1, b: 2}
しかし、それはコンパイルされません。
複数の型を定義するより大きなレコードとより複雑な関数の場合、かなりのノイズが発生します。これを因数分解すると良いでしょう。例: fn :: a -> b -> a
a
を2回定義する必要があります
非多形レコードの場合はシンプルですが、前もってわからない追加のフィールドを持つレコードを明示的に許可したいと考えています。
ありがとうございます。