如何更改矩阵条目并返回矩阵

时间:2017-04-24 19:26:32

标签: haskell

我想定义一个函数,它接受三个参数,坐标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的初学者 我很感激任何帮助

1 个答案:

答案 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

建议始终在顶级绑定中添加类型签名。这可以极大地帮助澄清一个人的想法,并帮助编译器提供良好的错误消息。