gpt4 book ai didi

haskell - “+”不是类的可见方法

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

我正在尝试在 Haskell 中创建自定义结构,如下所示:

data Interval = Interval Float Float 
instance Interval Float Float where
(Interval a b) + (Interval c d) = Interval (a + c) (b + d)
(Interval a b) - (Interval c d) = Interval (a - c) (b - d)

但是每次都会出现错误,例如:

'+' is not a visible method of class 'Interval'

那么我该如何正确制作呢?

最佳答案

您混淆了数据类型定义和类型类。

data Interval = Interval Float Float

定义了一个新的数据类型Interval,但是

instance Interval Float Float where

将尝试创建类型类Interval的实例。

我不确定你的意图是什么,但如果你想让你的类型 Interval 符合 Num 类型类,它提供像 (+ ) 等等,然后你会写:

data Interval = Interval Float Float 

instance Num Interval where
(+) (Interval a b) (Interval c d) = Interval (a + c) (b + d)
(-) (Interval a b) (Interval c d) = Interval (a - d) (b - c)

请注意,您需要为 Num 的完整实例实现更多函数。

关于haskell - “+”不是类的可见方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46675885/

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