Haskell HList:如何查找一个值

Haskell HList: how to lookup a value

我正在使用 HList 包,我需要两个函数,例如 (!!)elem。第一个函数接收一个 HList 和一个整数 n 和 returns HListn-th 元素。第二个接收一个 HList 和一个元素,并根据 Eq[=24 验证该元素是否在 HList 中=] 该元素的实例。

有人可以帮我实现这个吗?

HList 的索引函数被称为 hLookupByHNat

您不能简单地通过 IntHList 进行索引,因为结果的类型取决于索引,而 Haskell 没有依赖类型(目前)。可以在 Haskell 中模拟依赖类型,因此存在 hLookupByHNat 作为 HList 上的查找函数。但请注意,dependently-typed 编程并不容易,即使是在实际支持它们的语言中也是如此。