在哪里可以找到 Data.HList 的简单用法示例?从我在 wiki 中读到的内容来看,这个工具对于异构列表来说是一个比存在类型“更好”的解决方案,我不明白为什么。
问问题
1605 次
1 回答
12
这篇文章说 HList 更好,因为它是打字的。
如果您使用存在类型,您将丢失所有类型信息,并且您对这些数据无能为力。
您可以使它们成为具有有用功能的某个类的所有实例CanDoStuff
(并且使用 GADT 来执行此操作看起来会更好)。
(但是,这对存在类型类反模式运行得很快,您可能更愿意避免所有麻烦,而不是编写类型类CanDoStuff
,您可以HandyStuff
使用您实际使用的函数和数据创建数据类型,并使用类型类简单地重载函数的名称toHandyStuff
。这样你就可以使用常规列表。)
简单的 HList 用法
我认为使用 HList 最简单的方法是使用 Data.HList.GhcSyntax 中的运算符。例如
andrew = name .=. "Andrew" .*.
awesomeness .=. 8000 .*.
glasses .=. True .*.
emptyRecord
我可以andrew .!. awesomeness
用来找回号码8000
并andrew .!. name
获取"Andrew"
. 令人高兴的是,这些都是打字的,因此很方便。
我们可以做一些事情awesomeness .=. 4000000 .@. andrew
来打破我的敬畏。
与普通记录不同,HList 记录可以随时扩展为您喜欢的任何类型的进一步数据。
阅读更多
这是Ralf Lämmel 关于 HList 的页面的链接,这是论文本身的链接。
于 2013-07-19T00:30:05.363 回答