gpt4 book ai didi

haskell - 在 Haskell 中可以将 "Either"列表转换为 "HList"吗?

转载 作者:行者123 更新时间:2023-12-02 12:22:09 24 4
gpt4 key购买 nike

例如,假设我有一个 [Either Int Bool],我想将其转换为 HList......所以

[Left 1, Right False, Left 2]

会变成

1 .*. False .*. 2 .*. HNil

(我实际上认为这是不可能的,但很想听听其他情况......甚至为这样的函数编写类型似乎也是不可能的,尽管也许有一种方法可以做到这一点,而不仅仅是编写函数) .

最佳答案

您无法将[Either Int Bool]转换为HList,因为它是动态值,但HList具有取决于其值的静态类型。考虑以下因素:

  • 1 .*。错误的 。*。 2.*。 HNil 的类型为 HCons 1 (HCons False (HCons 2 HNil))
  • 1 .*。 HNil 的类型为 HCons 1 HNil

这两个值都是您假定的转换函数的可能结果,但它们具有不同的类型。

以上都是因为有关 HList 具有什么值的信息必须可供编译器用来确定其类型。在您的情况下,您只能在运行时获取该值,即当程序已经编译时。

关于haskell - 在 Haskell 中可以将 "Either"列表转换为 "HList"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19074441/

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