gpt4 book ai didi

generics - haskell Data.HList 的简单使用示例

转载 作者:行者123 更新时间:2023-12-02 13:01:33 25 4
gpt4 key购买 nike

在哪里可以找到 Data.HList 的简单使用示例?从我在 wiki 中读到的内容来看,这个工具对于异构列表来说是比存在类型“更好”的解决方案,我不明白为什么。

最佳答案

这篇文章说 HList 更好,因为它是类型化的。

如果您使用存在类型,您就会丢失所有类型信息,并且您无法对这些数据做太多事情。

可以将它们设为某个类的所有实例CanDoStuff它具有有用的功能(并且使用 GADT 来执行此操作看起来会好得多)。

(但是,这正在快速走向 existential typeclass antipattern ,您可能更愿意避免所有麻烦,而不是编写类型类 CanDoStuff ,您可以使用实际的函数和数据创建数据类型 HandyStuff使用,并使用类型类来重载函数的名称 toHandyStuff 。这样您就可以使用常规列表。)

简单的HList使用

我认为使用 HList 最简单的方法是使用 Data.HList.GhcSyntax 中的运算符。例如

andrew = name .=. "Andrew" .*.
awesomeness .=. 8000 .*.
glasses .=. True .*.
emptyRecord

我可以使用andrew .!. awesomeness恢复号码8000andrew .!. name获取"Andrew" 。令人高兴的是,这些都是打字的,因此很方便。

我们可以做awesomeness .=. 4000000 .@. andrew来提升我的威力。

与普通记录不同,HList 记录可以随时使用您喜欢的任何类型的更多数据进行扩展。

了解更多

这里是 Ralf Lämmel's page about HList 的链接,这是指向 paper itself 的链接.

关于generics - haskell Data.HList 的简单使用示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com