gpt4 book ai didi

haskell - 是否可以组合类型类的实例?

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

我感觉这是不可能的,但希望得到一些意见,看看是否缺少一些扩展或技术。

我有一个类型类的通用实例,它定义了一些默认方法:

class TestClass a where 
foo :: a -> Maybe Text
bar :: a -> [Int]

instance TestClass a where
foo _ = Nothing
bar _ = []

data SpecificType = SomeValue | OtherValue

instance TestClass SpecificType where
foo SomeValue = Just "Success"
foo OtherValue = Just "Other Success"

我相信这已经需要OverlappingInstances,但问题是SpecificTypeTestClass实例没有实现bar 。我只想声明第二个实例的一部分,并使用其余部分的默认实现。有办法实现这一点吗?

最佳答案

在 Haskell 98 中,您可以输入 default implementationsclass定义中:

class TestClass a where
foo :: a -> Maybe Text
<b>foo _ = Nothing</b> -- default implementation
bar :: a -> [Int]
<b>bar _ = []</b> -- default implementation

现在,对于您自己未实现 foobar 的所有实例,它将采用默认实现。

关于haskell - 是否可以组合类型类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45307865/

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