Задать вопрос
@trapce

Как работает where p x =... на Haskell?

У меня есть функция larg, она находит первое число из списка кратное 3829,но я не совсем понимаю "where p x = mod x 3829 == 0" .То есть x - это число,но как "выдавливается "x из списка ,если мы даже не указали явно "голову" списка или этим занимается head???
larg :: [Integer]->Integer
larg x= head (filter p x)
       where p x  = mod x 3829==0
  • Вопрос задан
  • 190 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
wiz
@wiz
Ортодоксальный хаскелит
"Выдавливанием" из списка занимается `filter`, применяя функцию `p` к каждому элементу на входе.
Если она возвращает True (т.е. когда остаток от деления равен нулю), то элемент зачисляется в выходной список.

`head` тут берёт первый элемент из уже отфильтрованного списка. Или крашится с сообщением вроде "head: empty list" и лучше бы её заменить на `case`.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы