我目前正在努力学习 Haskell。以下功能:
findPivot :: [[Double]] -> Int
findPivot matrixA =
do
let firstCol = (transpose(matrixA)!!0)
let maxColValue = maximum firstCol
let pivotIndex = elemIndex maxColValue firstCol
return (fromJust(pivotIndex))
应该采用一个二维的双精度列表,表示一个矩阵,并确定哪一行在第一列中具有最大值。我知道有一些低效的部分,例如使用列表表示矩阵和使用转置,但我遇到的问题涉及以下编译器错误:
Couldn't match expected type `Int' with actual type `m0 Int'
In the return type of a call of `return'
In a stmt of a 'do' block: return (fromJust (pivotIndex))
In the expression:
do { let firstCol = (transpose (matrixA) !! 0);
let maxColValue = maximum firstCol;
let pivotIndex = elemIndex maxColValue firstCol;
return (fromJust (pivotIndex)) }
我不确定这m0
意味着什么,但我认为它意味着单子。所以,我认为这意味着该函数正在返回一个单子 int。对于理解这个问题以及如何解决它的任何帮助将不胜感激。
谢谢。