Использование переменных внутри функций - PullRequest
0 голосов
/ 12 апреля 2019

Допустим, у меня есть тип данных с именем "Coord", который определен так:

type Coord a = [(Int, Int)]

Я хочу создать переменную типа "Coord" для использования в моей функции ниже. Функция принимает переменную типа Coord и умножает координату x каждого элемента в списке на 2. Затем она сохраняет каждую из этих новых координат в переменной NEW Coord; Я не уверен, как создать / объявить / использовать эту новую переменную, которую я намерен вернуть.

foo :: (Eq a) => Coord a -> Coord a

1 Ответ

5 голосов
/ 13 апреля 2019

Это был бы ручной способ сделать что-то для каждого элемента в списке:

type Coord = [(Int, Int)]

multiplyXBy2 :: Coord -> Coord
multiplyXBy2 [] = []
multiplyXBy2 ((x, y):rest) = (x*2, y) : multiplyXBy2 rest

Вот вызов через ghci:

*Main> multiplyXBy2 [(1,2), (3,4)]
[(2,2),(6,4)]

Для самых основиспользуя язык, например, как получить доступ к элементам списка, переданным в функцию, или как программно построить список, пожалуйста, подумайте о том, чтобы следовать учебному пособию, такому как синтаксис LYAH в функциях или RWH определение типов, оптимизация функций

...