Создать список путем умножения объекта на [1..n] - PullRequest
0 голосов
/ 11 февраля 2020

Я все еще не в Haskell и мне нужна подсказка для следующей функции.

Я хочу создать список, добавив каждое умножение пары:

all :: Int -> (Int,Int) -> [(Int, Int)] 
all n, pair = ...

Например n = 3, пара (1,2) => [(1,2), (2,4), (3,6)], которая расширяется до [(1 * (1,2)), ((2 * ( 1,2)), (3 * (1,2))]

Я знаю, что-то с x <- [1..n] и x*pair, но я не знаю, какая встроенная функция подходит для этого вместе!

1 Ответ

3 голосов
/ 11 февраля 2020

Вам необходимо выполнить умножение отдельно для элементов в кортежах, а затем воссоздать кортеж. Вы можете использовать fst и snd, чтобы получить элементы.

all n pair = [(x*(fst pair), x*(snd pair)) | x <- [1..n]]

Сопоставление с образцом - это еще один распространенный способ доступа к элементам кортежей.

all n (a, b) = [(x*a, x*b) | x <- [1..n]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...