Vinyl では、レコードのタイプ エイリアスを定義して、他のモジュールへのエクスポートを容易にすることができます。
import Data.Vinyl
name = Field :: "name" ::: String
age = Field :: "age" ::: Int
type Person = ["name" ::: String, "age" ::: Int]
ここで、高さを格納する別のフィールドを追加するとします。
height = Field :: "height" ::: Int
と を含むレコードの型エイリアスをうまく構築したいと思いPerson
ますheight
。単純に、それは次のようになります。
type MeasuredPerson = ("height" ::: Int) : Person
この構文は明らかに機能しません。これを行う方法はありますか?ここで使用されていると思われる型レベルの配列構文を説明する参考文献はありますか?