无法将矩阵相加
我在编译以下内容时遇到问题:
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并且m2是Matrixes,而不是[[Float]]s,所以你不能zipWith在这些上使用。您需要从Matrix数据构造函数中解开列表列表:
aditionMat :: Matrix -> Matrix -> Matrix
aditionMat (Matrix m1) (Matrix m2) = Matrix $ zipWith (zipWith (+)) m1 m2