toh*_*ava 10 generics polymorphism haskell types heterogeneous
我在哪里可以找到Data.HList的简单使用示例?从我在维基中读到的内容来看,这个工具对于异构列表来说是一个"更好"的解决方案,而不是存在类型,我不明白为什么.
And*_*ewC 12
文章说HList更好,因为它是打字的.
如果使用存在类型,则会丢失所有类型信息,并且您无法对该数据执行任何操作.
你可以使它们成为某些CanDoStuff具有有用功能的类的实例(并且使用GADT来实现这一点看起来会更好).
(但是,这对于存在的类型类反模式来说是快速运行的,并且您可能更愿意避免所有的麻烦,而不是编写类型类CanDoStuff,您可以HandyStuff使用实际使用的函数和数据创建数据类型,并使用类型类简单地重载函数的名称toHandyStuff.这样你可以使用常规列表.)
我认为,最简单的方法来使用HList在使用运营商Data.HList.GhcSyntax.例如
andrew = name .=. "Andrew" .*.
awesomeness .=. 8000 .*.
glasses .=. True .*.
emptyRecord
Run Code Online (Sandbox Code Playgroud)
我可以andrew .!. awesomeness用来恢复数字8000并andrew .!. name获得"Andrew".很高兴,这些都是打字的,因此很方便.
我们可以做到这一点awesomeness .=. 4000000 .@. andrew让我感到非常棒.
与普通记录不同,HList记录可以随时使用您喜欢的任何类型的更多数据进行扩展.
这里是RalfLämmel关于HList的页面的链接,这里是纸张本身的链接.
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |