В настоящее время я изо всех сил пытаюсь изучить Haskell. Следующая функция:Не удалось совместить ожидаемый тип `Int 'с фактическим типом` m0 Int'
findPivot :: [[Double]] -> Int
findPivot matrixA =
do
let firstCol = (transpose(matrixA)!!0)
let maxColValue = maximum firstCol
let pivotIndex = elemIndex maxColValue firstCol
return (fromJust(pivotIndex))
Предполагается взять 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. Любая помощь в понимании этой проблемы и ее решении будет чрезвычайно оценена.
Спасибо.
Это не 'return' вы ищете. Хооглинг для «возвращения» и изучения типов должен быть просвещен. –