乙烯基:撰写记录类型别名
-
21-12-2019 - |
题
在vinyl中,我可以为记录定义别名,以便更容易导出到其他模块:
import Data.Vinyl
name = Field :: "name" ::: String
age = Field :: "age" ::: Int
type Person = ["name" ::: String, "age" ::: Int]
.
现在假设我添加另一个存储高度的字段。
height = Field :: "height" ::: Int
.
我希望为包含生意经阳极缩剧和生成的记录构造一个类型的别名。天真地,这可能看起来像这样:
type MeasuredPerson = ("height" ::: Int) : Person
.
这个语法不起作用,显然是!有没有办法做到这一点?是否有任何良好的参考文献,可以解释似乎在此处使用的类型级别阵列语法?
解决方案
结果是我设法错过的非常容易的答案:
Data.Vinyl.Rec
定义了缺点并为类型级别列表附加,因此以下作品:
type MeasuredPerson = ("height" ::: Int) ': Person
.
如果我有两个列表,我可以按如下方式追加:
type Other = Person ++ Address
. 不隶属于 StackOverflow