Как исправить ошибку разбора (возможно, неправильный отступ или несоответствующие скобки) в Haskell - PullRequest
0 голосов
/ 05 мая 2019

Я написал следующий код и поместил ошибку в заголовок. Может кто-то помочь мне, пожалуйста? Ошибка в строке 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 Ответ

6 голосов
/ 05 мая 2019

Ошибка в этом определении:

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

let является выражением;следовательно, оно должно быть внутри определения (то есть справа знака =).Это должно быть:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...