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 w
或i = fromIntegral (length w)
。
关于haskell - 为什么这会给我“是受约束的刚性类型变量”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7979413/