小编Kri*_*smu的帖子

Haskell Ord实例悖论在Eq

我希望能够订购Polynomes,首先按长度(度)进行比较,然后按系数进行比较.Polynomes是双打的列表[1,2,3] = 3x²+2x+1.但是如果最后一个元素为零,那么它应该被删除,所以我写了一个函数来做那个调用realPolynom.realPolynom [1,2,3,0] = [1,2,3] 现在,我的Ord实例看起来像:

instance Ord Polynom where                                  
    compare a b = compare ((realLength a), reverse (pol2list (realPolynom a))) ((realLength b), reverse (pol2list (realPolynom b)))
Run Code Online (Sandbox Code Playgroud)

realLength 只是最后没有零的多项式的长度.

pLength :: Polynom -> Int       
pLength (Polynom(a)) = length a

realLength :: Polynom -> Int                        
realLength a = pLength(realPolynom(a))
Run Code Online (Sandbox Code Playgroud)

pol2listPolynom p = p

pol2list :: Polynom -> [Double]
pol2list (Polynom p) = p 
Run Code Online (Sandbox Code Playgroud)

问题是:

  • [0,2,0] < [0,2,3] 是的,这很好

  • [0,2,0] < [0,2] 虚假,也很好

  • [0,2,0] …

haskell equality polynomials

1
推荐指数
1
解决办法
197
查看次数

标签 统计

equality ×1

haskell ×1

polynomials ×1