我已经在这段代码中待了将近 2 个小时,并且一直收到相同的编译器错误消息。我已经完成了我的研究,但找不到答案
buildTable :: Int -> Int -> (Int -> Int -> a) -> [[a]]
buildTable n m fun = [[ fun x y
| x <- [0..n-1]]
| y <- [0..m-1]]
lookupAns :: Int -> Int -> [[Int]] -> Int
lookupAns len1 len2 theArray =
theArray !! len1 !! len2
lcsLength :: String -> String -> Int
lcsLength s1 s2 =
let
n1 = (length s1)
n2 = (length s2)
table = buildTable (n1 n2 lcsHelp)
lcsHelp = if ( n1 == 0 || n2 == 0 )
then 0
else if ( last s1 == last s2 )
then
(lookupAns
(n1 - 1)
n2
table)
+ 1
else
max
(lookupAns
n1
(n2-1)
table)
(lookupAns
(n1-1)
n2
table)
in lookupAns
(length s1)
(length s2)
table
现在,无论我尝试什么,我都会收到相同的错误消息。错误消息是“无法将预期类型 '[[Int]] -> Int' 与实际类型 [Int] 匹配”,其他规范指向代码末尾的第一次调用 max。请帮忙,这真的很令人沮丧
它现在可以使用我的新代码编译和运行。我一定会稍后再发布它,因为它有点晚了,我会把它写下来过夜。