我试图在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)但是,每次错误都会发生,比如:
“+”不是类“间隔”的可见方法。
那我该怎么做呢?
发布于 2017-10-10 21:21:34
你做了什么,
data Interval = Interval Float Float 这里您说的是Interval是一个具有一个构造函数(也称为Interval)的类型,它有两个未命名的Float字段。
instance Interval Float Float where这里您说的是Interval是一个类型类(而不是一个类型),它接受作为Float提供的两个类型参数,这意味着在某个地方有一行可以读取class Interval a b where ...。
(Interval a b) + (Interval c d) = Interval (a + c) (b + d)
(Interval a b) - (Interval c d) = Interval (a - c) (b - d)在这里,假设您要缩进,您将定义两个函数,它们是Interval类型类的方法(不存在),这些方法名为+和-。
您可能想要的
我想你想要定义一种类型,间隔,然后你做到了。
我认为您希望定义加法和减法,这是Num类型类的方法:
instance Num Interval where
(Interval a b) + (Interval x y) = Interval (a + b) (x + y)
...https://stackoverflow.com/questions/46675885
复制相似问题