vpo*_*hok 1 haskell conditional-statements
我是Haskell的初学者,在下一个街区遇到麻烦:
up_heap :: Num a => [a] -> [a] -> [a]
up_heap heap (h:t) =
let ppos = quot (length heap) 2 in
case ((ppos > 0) && ((heap !! ppos) > h)) of
True ->
let (upper, (p:lower)) = splitAt ppos heap in
up_heap upper (h:lower) ++ (p:t)
False ->
heap ++ h:t
Run Code Online (Sandbox Code Playgroud)
下一个错误:无法推断(Ord a)因使用">"而产生
怎么改进这个?
您正在使用>其元素heap类型Num a => a(元素).>是Ord类型类的一部分,你可以在文档中看到(http://hackage.haskell.org/packages/archive/base/3.0.3.1/doc/html/GHC-Num.html),类型实现Num不必须实施Ord.
class (Eq a, Show a) => Num a where
Run Code Online (Sandbox Code Playgroud)
在类型签名中添加约束,如(Num a, Ord a) => ....
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |