如何修复Haskell中的解析错误(可能是缩进不正确或括号不匹配)

时间:2019-05-04 22:14:53

标签: list haskell

我编写了以下代码,并将错误放在标题中。 有谁可以帮助我吗? 第7行出现错误

punkteImKreis :: Double -> [(Double, Double)]
punkteImKreis k = [(x,y)|x <- [1.0,2.0..k-1.0],
                         y <- [1.0,2.0..k-1.0] ]

anteilImKreis :: Double -> Double
let l = length(punkteImKreis)
in anteilImKreis k = (fromIntegral (l)) / k^2

1 个答案:

答案 0 :(得分:6)

该定义中有错误:

anteilImKreis :: Double -> Double
let l = length(punkteImKreis)
in anteilImKreis k = (fromIntegral (l)) / k^2

let是一个表达式;因此,它必须在定义的 内(即=符号的 right 上)。应该是:

anteilImKreis :: Double -> Double
anteilImKreis k =
  let l = length(punkteImKreis)
  in (fromIntegral (l)) / k^2

顺便说一句,当函数的参数只是一个标识符时,实际上并不需要括号。我将其重写如下:

anteilImKreis :: Double -> Double
anteilImKreis k =
  let l = length punkteImKreis
  in (fromIntegral l) / k^2

此外,这还会暴露另一个错误。 punkteImKreis不是列表;它是一个返回列表的函数,这意味着您不能直接获取其length。我认为您的意思是:

anteilImKreis :: Double -> Double
anteilImKreis k =
  let l = length (punkteImKreis k)
  in (fromIntegral l) / k^2