Добавление списка точек вместе - PullRequest
1 голос
/ 07 октября 2019

Как мне добавить все x координаты в список точек типа Pt?

Пример:

 [Pt 1 2, Pt 3 4]  =>  1 + 3  =>  4

Вот тип данных и функциязаявление, которое я использую:

data Point = Pt Double Double

x :: [Point] -> Point

Это то, что я пробовал.

x :: [Point] -> Point
x  [Pt x y] = Pt(x+x)

Ответы [ 2 ]

4 голосов
/ 07 октября 2019

Вероятно, самый простой способ сделать это - сначала создать функцию, которая может извлечь x -координату точки. Например, с xPt:

xPt :: Point -> Double
xPt (Pt x _) = x

тогда мы можем использовать sum :: (Foldable f, Num a) => f a -> a и map :: (a -> b) -> [a] -> [b] для сопоставления списка точек со списком x -координат:

xSum :: [Point] -> Double
xSum = <b>sum</b> . <b>map</b> xPt
0 голосов
/ 09 октября 2019

Для этого вы можете использовать понимание списка:

xSum :: [Point] -> Double
xSum pts = sum [x | Pt x _ <- pts]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...