9

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

この構文は明らかに機能しません。これを行う方法はありますか?ここで使用されていると思われる型レベルの配列構文を説明する参考文献はありますか?

4

1 に答える 1