我想定义一个函数,它接受三个参数,坐标i,j和矩阵本身。 它必须改变给定位置(i,j)的条目并返回新矩阵。
我的预定义矩阵:
fieldA 1 1 = 0
fieldA 1 2 = 1
fieldA 2 1 = 1
fieldA 2 2 = 0
我的第一次尝试是以下代码&错误:
changeValue i j matrix =
do matrix i j <- 0
return matrix
test.hs:113:12: error:
Parse error in pattern: matrix
Possibly caused by a missing 'do'?
我的第二个问题是以下代码&amp;错误:
changeValue i j matrix =
map (\a b -> if a == i && b == j then matrix i j <- 0 else matrix i j <- matrix i j) matrix
test.hs:113:58: error:
parse error on input ‘<-’
Perhaps this statement should be within a 'do' block?
我认为解决方案很简单,但我绝对是Haskell的初学者 我很感激任何帮助
答案 0 :(得分:1)
也许你想要这样的东西:
changeValue :: Int -> Int -> Matrix -> Matrix
changeValue i j matrix = matrix2
where
matrix2 i2 j2 | i2==i && j2==j = 0
| otherwise = matrix i2 j2
建议始终在顶级绑定中添加类型签名。这可以极大地帮助澄清一个人的想法,并帮助编译器提供良好的错误消息。