【发布时间】:2014-07-06 12:56:32
【问题描述】:
作为 Haskell 的新手,我无法为我的数据类型实现 Order 实例, 即:
data Polynom = Polynom ([Double])
deriving Show
p0 = Polynom([3.9,4.2,2.7])
p1 = Polynom([0.0,0.2,-3.6,9.4])
多项式是一个双精度列表,即p0 = 2.7x² + 4.2x + 3.9。我的问题是我无法弄清楚声明各种 if-case 的正确语法,开始类似:
instance Ord Polynom where
realLength(a) > realLength(b) = a > b
where if realLength(a)) == realLength(b) = compare lastElement(a) lastElement(b)
我知道这是一个非常糟糕的伪代码,但我希望你能明白。
我真的很感激任何关于如何开始的提示,我想我可以自己找出不同的案例!
编辑:
认为instance Eq 可能是这样的,但编译器不接受它。
instance Eq Polynom where
(realPolynom a) == (realPolynom b) = (Polynom a) == (Polynom b)
realPolynom 的代码:
realPolynom :: Polynom -> Polynom
realPolynom (Polynom(m:ns))
| m==0.0 = realPolynom (Polynom(ns))
| otherwise = Polynom(m:ns)
【问题讨论】: