gpt4 book ai didi

haskell - Haskell 中类型参数的正确类型签名

转载 作者:行者123 更新时间:2023-12-04 23:14:10 26 4
gpt4 key购买 nike

我有两种数据类型,想编写一个类,从这些数据类型返回数据:

data D1 a = Da1 a | Db1 a 
data D2 a = Da2 a | Db2 a

class D a where
extract :: ??? a -> a

instance D (D1 a) where
extract (Da1 a) = a
extract (Db1 a) = a

instance D (D2 a) where
extract (Da2 a) = a
extract (Db2 a) = a

如果我只有一种类型 D1 或 D2,我可以在类型签名中命名它,但是在有多种可能性的情况下我该怎么办?这甚至可能吗?

最佳答案

您需要制作 D1D2 D 的实例而不是 D1 aD2 a .那么你可以量化extracta并制作 extract返回 aD所有 a .

因为那可能不是很清楚(抱歉):

class D d where
-- `d` is the type constructor that's an instance of `D` (i.e. `D1` or
-- `D2`) and `a` is a new type variable that can be any possible type
extract :: d a -> a

instance D D1 where
extract (Da1 a) = a
extract (Db1 a) = a

关于haskell - Haskell 中类型参数的正确类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379828/

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