heist :: (Num n) => [n] -> [n] -> n -> n
-- heist [] [] _ = 0
heist w v maxw = func w v i j where
    i = length w
    j = maxw
func :: (Num n) => [n] -> [n] -> n -> n -> n
func _ _ 0 0 = 0


上面的代码给了我:

Heist.hs:15:27:
无法推论(n〜Int)
从上下文(数字n)
受类型签名的约束
heist :: Num n => [n]-> [n]-> n-> n
在Heist.hs:(15,1)-(17,16)
“ n”是一个刚性类型变量,由
heist的类型签名:: Num n => [n]-> [n]-> n-> n
在Heist.hs:15:1
在“ func”的第三个参数中,即“ i”
在表达式中:func w v i j
在“抢劫”的方程式中:
抢劫
=函数w v i j
哪里
i =长度w
j =最大


为什么会这样呢?

我一头又一头地围绕Haskell型系统

最佳答案

length返回一个Int;使用i = Data.List.genericLength wi = fromIntegral (length w)

关于haskell - 为什么这会给我“是受约束的刚性类型变量”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7979413/

10-13 06:05