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