Как использовать карту в Haskell с переменной и списком - PullRequest
0 голосов
/ 16 июня 2019

Я планирую написать функцию карты, которая, по сути, принимает переменную и список и возвращает список.

Я пытался использовать стандартную карту, но из того, что я видел, она находится в формате «список функций карты», когда здесь я пытаюсь передать другой аргумент, который является другим пунктом.

data Point = {xCoord :: Int,
              yCoord :: Int}

movePoint :: Point -> Point -> Point
movePoint (Point x y) (Point xMove yMove)
    = Point (x + xMove)  (y + yMove)

 // Add a "vector" to a list of points
movePoints :: [Point] -> Point -> [Point]
movePoints = error "Not yet"

Например, если у меня есть вектор, например (2,2), и у меня есть список точек, таких как [(-2,1), (0,0), (5,4) и т. Д.] I хочу использовать карту, чтобы добавить (2,2) ко всем точкам в списке и вернуть список точек, я не уверен, как это сделать. Я новичок, когда дело доходит до Хаскелла, поэтому любые советы будут великолепны.

1 Ответ

8 голосов
/ 16 июня 2019

Частично применить функцию movePoint (то есть вызвать ее с меньшим количеством аргументов, чем нужно), например:

movePoints pts vec = map (movePoint vec) pts

В результате создается новая функция, для которой нужен только один аргумент, который вы не указали в первый раз. Это известно как карри.

...