私は現在、Haskellの学習に苦労しています。次の関数:
findPivot :: [[Double]] -> Int
findPivot matrixA =
do
let firstCol = (transpose(matrixA)!!0)
let maxColValue = maximum firstCol
let pivotIndex = elemIndex maxColValue firstCol
return (fromJust(pivotIndex))
行列を表す double の 2D リストを取得し、最初の列に最大値を持つ行を決定することになっています。たとえば、行列を表現するためにリストを使用したり、転置を使用したりするなど、非効率的な部分があることはわかっていますが、発生している問題には次のコンパイラ エラーが含まれます。
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 を返していることを意味すると思います。この問題とその解決方法を理解するための助けがあれば、非常に高く評価されます。
ありがとう。