Основная проблема заключается в том, что вы вызываете функции, как если бы вы делали это на языке, таком как Java, C ++ или Python.
Вам необходимо заключить average
в круглые скобки, например:
centroid cenpoint = Pt <b>(</b>average (pointsX cenpoint)<b>)</b> <b>(</b>average (pointsY cenpoint)<b>)</b>
Как говорит @ dfeuer , здесь не нужны внешние скобки.
Более того, вы, возможно, захотите использовать (/)
здесь вместо div
, так как вы работаетес Double
s, тогда как div
работает на Integral
типах:
average :: [Double] -> Double
average xs = sum xs <b>/</b> genericLength xs
, но, как и @ leftroundabout говорит , мы можем лучше использовать length
, а затем использовать fromIntegral
:
average :: [Double] -> Double
average xs = sum xs <b>/</b> <b>fromIntegral</b> (length xs)