无法将矩阵相加

我在编译以下内容时遇到问题:

data Matrix = Matrix [[Float]] deriving (Eq)

aditionMat :: Matrix -> Matrix -> Matrix
aditionMat m1 m2 = Matrix $ zipWith (zipWith (+)) m1 m2

我正在定义自定义矩阵数据类型,但我为将两个矩阵相加而制定的方法不起作用。
aditionMat当我给它两个时工作正常,但当我给它两个[[Float]]时不会编译Matrix。错误如下:

无法将预期类型[[Float]]与实际类型匹配Matrix (对于 m1 和 m2)

为这个微不足道的问题道歉,但我不明白为什么它会失败

回答

m1并且m2Matrixes,而不是[[Float]]s,所以你不能zipWith在这些上使用。您需要从Matrix数据构造函数中解开列表列表:

aditionMat :: Matrix -> Matrix -> Matrix
aditionMat (Matrix m1) (Matrix m2) = Matrix $ zipWith (zipWith (+)) m1 m2


以上是无法将矩阵相加的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>