我编写了以下代码,并将错误放在标题中。 有谁可以帮助我吗? 第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
答案 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