gpt4 book ai didi

generics - Haskell 中多种类型的列表

转载 作者:行者123 更新时间:2023-12-02 05:28:39 26 4
gpt4 key购买 nike

假设我有一组记录,如

data A = A { a:: String } deriving (Show)
data B = B { b:: String } deriving (Show)

然后是一些类型类

class Foo a where
foo :: a -> IO ()

instance Foo A where
foo c = ...

我也想做类似的事情

bar = do
push (A {a="x"})
push (B {b="y"})

然后把这些东西放在列表 l 中的某个地方,以便稍后运行,这样我就可以

map foo l

我是否应该编写模板 haskell 来生成包装器类型并派生实例,以便列表可以是包装器类型?有没有更聪明的方法来解决这个问题?老实说,我觉得 haskell 类型系统让我束手无策,并且知道必须有更好的方法来做到这一点。

最佳答案

有一些方法可以通过存在量化来做到这一点,但它通常是矫枉过正的。一种更像 Haskell 的方法是简单地在前面应用 foo 并保留结果操作的 [IO ()] 列表,然后你可以 sequence 稍后运行它们。

关于generics - Haskell 中多种类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865623/

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