gpt4 book ai didi

haskell - 在 Haskell 中包含具有默认实现的类型类

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

考虑以下定义:

class Foo a where
foo :: a -> Int

class Bar a where
bar :: a -> [Int]

现在,我怎么说“每个 Foo 也是一个 Barbar 在Haskell 中默认定义为 bar x = [foo x] ”?

(无论我尝试什么,编译器都会给我“非法实例声明”或“约束不小于实例头”)

顺便说一句,我可以定义我的 FooBar以其他方式上课,如果这有帮助的话。

最佳答案

class Foo a where
foo :: a -> Int

-- 'a' belongs to 'Bar' only if it belongs to 'Foo' also
class Foo a => Bar a where
bar :: a -> [Int]
bar x = [foo x] -- yes, you can specify default implementation

instance Foo Char where
foo _ = 0

-- instance with default 'bar' implementation
instance Bar Char

关于haskell - 在 Haskell 中包含具有默认实现的类型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4469615/

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