gpt4 book ai didi

haskell - 无法将预期类型 `Int' 与实际类型 `m0 Int' 匹配

转载 作者:行者123 更新时间:2023-12-02 10:18:03 25 4
gpt4 key购买 nike

我目前正在努力学习 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 列表,并确定哪一行在第一列中具有最大值。我知道有一些低效的部分,例如使用列表来表示矩阵并使用转置,但我遇到的问题涉及以下编译器错误:

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 是什么意思,但我认为它意味着单子(monad)。所以,我认为这意味着该函数返回一个单子(monad) int。对于理解这个问题以及如何解决它的任何帮助,我们将不胜感激。

谢谢。

最佳答案

doreturn 与 monad 相关。当您使用它们时,您告诉编译器您打算使用 monad。

您的函数类型是非单子(monad)的。这告诉编译器您不打算使用 monad。编译器只是警告您这种差异。

您可以在 do 之外使用 let,但语法有点不同

findPivot matrixA = 
let
firstCol = (transpose(matrixA)!!0)
maxColValue = maximum firstCol
pivotIndex = elemIndex maxColValue firstCol
in fromJust(pivotIndex)

关于haskell - 无法将预期类型 `Int' 与实际类型 `m0 Int' 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26950391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com