Умножение результата функции высшего порядка - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь удвоить результат суммирования списка, но не могу понять, почему это неправильно.

sumDoubles =map(2*)(foldr (+) 0 )

1 Ответ

2 голосов
/ 06 августа 2020

Если вы уже вычислили сумму списка (Foldable), то это число, поэтому вы можете просто умножить его на 2, так:

sumDoubles :: (Foldable f, Num a) => f a -> a
sumDoubles = <b>(2 *) .</b> sum

A map используется для сопоставления каждого элемента в списке, но суммирование списка приведет к скалярному числу, поэтому сопоставление не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...