rango :: [Integer] -> [Integer] -> [[Integer]] -> [Integer]
rango (length list) b list =
rango a b list = if ((list!!a) == (list!!b)) then 0++(rango a b+1 list)
else(rango2 a list!!b list)++(rango a b+1 list)
rango2 :: [Integer] -> [Integer] -> [[Integer]] -> [Integer]
rango2 a b list = if verif((take 2(map(+(a!!2))a)) (take 2(map(-(a!!2))a)) (take 2(b))) then [1]
else [0]
verif :: [Integer] -> [Integer] -> [Integer] -> Bool
verif a b c = if ((c!!0 < a!!0) && (c!!0 > b!!0) && (c!!1 < a!!1) && (c!!1 > b!!1)) then True
else False
错误是:解析错误(可能是错误的缩进或括号不匹配)
在这一行
rango a b list = if ((list!!a) == (list!!b)) then 0++(rango a b+1 list)
答案 0 :(得分:3)
rango :: [Integer] -> [Integer] -> [[Integer]] -> [Integer]
rango (length list) b list =
上述行在=
之后缺少定义。这会使编译器在下面的行中混淆。
此外,(length list)
不是有效模式,正如Rhymoid指出的那样。
作为一般性评论,您的代码似乎也包含多个类型错误。您可能应该重新考虑一下您的方法。您确定您的功能的类型签名是否正确?你真的需要输入两个整数列表和一个矩阵吗?输出是否是整数列表?
我的建议是首先学习Haskell的基础知识,从简单的练习开始。如果您正在尝试编写一个函数来计算矩阵的等级,那么在此阶段可能会过于复杂。