0
我的矩阵乘法实现:更改不希望的类型推断在Haskell
mtrxMult :: (Num a) => [[a]] -> [a] -> [a] -> [a]
mtrxMult [[]] _ _ = []
mtrxMult xs [] vec = 0 : mtrxMult xs vec vec
mtrxMult (x:xs) (v:vs) vec = head x * v + mtrxMult (tail x : xs) vs vec
的想法是,函数调用mtrxMult [[0,1],[1,0]] [2,3] [2,3]
将扩大到0 * 2 + 1 * 3 : 2 * 1 + 3 * 0 : []
将评估为[3,2]
。然而,编译器希望x是列表的列表,而不是头部是数字的列表。 Haskell的类型推断系统如何给出这种期望以及如何修改代码以实现矩阵乘法的一致性?
还未完成查看,但是您确定要基本案例为[[]]'(列表中只有一个空列表)吗? –
我太累了,无法解决algorthmic问题,但类型问题来自使用'+'在第4行而不是':' – jozefg