Haskell-输入"->"上的解析错误



我创建了这个程序来返回 no 值为零的矩阵的位置列表。

此代码:

type Pos = (Int,Int)
type Matrix = [[Int]]
v0 [Pos]->Matrix->[Pos]
v0 [] m =[]
v0 [p:ps] m = if ((takeH m p) == 0) then v0 ps m
                                    else p:v0 ps m
takeH:: Matrix->Pos->Int
takeH m (i,j)= (m!!(i-1))!!(j-1)

产生此错误:

Parse error on input '->'
Failed,modules loades: nome.

为什么?

我希望我已经说清楚了。

在函数类型之前需要::

-- vv here
v0 :: [Pos] -> Matrix -> [Pos]
v0 [] _ = []
-- v    v also parenthesis, not square brackets
v0 (p:ps) m = if ((takeH m p) == 0) then v0 ps
                                    else p:v0 ps

此外,您的takeH函数需要将矩阵和Pos作为参数,但您似乎只向它传递了一个Pos...?我假设你想要像takeH x (i, j) = (x!!(i-1))!!(j-1)这样的东西.

一般来说,我强烈警告不要使用部分函数,例如!.如果您的矩阵不包含足够的值并且超出范围怎么办?程序将终止并引发错误。也要考虑到这一点

相关内容

  • 没有找到相关文章

最新更新