Вот код.Haskell - Как фильтр и голова работают в комбинации с где?
largestDivisible :: (Integral a) => a
largestDivisible = head (filter p [100000,99999..])
where p x = x `mod` 3829 == 0
Я немного смущен. Что такое p в этом случае? Кроме того, я не понимаю выражение where в этом конкретном примере, потому что мы получили два выражения с p и x с левой стороны, и у нас есть одно выравнивание, которое на самом деле является логическим.
Я был бы признателен, если бы кто-нибудь мог объяснить мне приведенный выше код.
Таким образом, это означает, что для первого случая: p 100000 Затем он оценивает p. Он возвращает true для p, если 100000 делится на 3829. Правильно? – tumbler
Да, но тогда вам нужно подумать о том, что делает 'filter' в этом случае. Когда вы понимаете, что делает 'filter', когда' p' возвращает 'True' и что' filter' делает, когда 'p' возвращает' False', вы можете сказать, что делает 'head'. –
@SassaNF: filter - это тип (a -> Boolean) -> [a] -> [a]. В этом случае он возвращает false для 100000. Таким образом, первый аргумент является ложным, поэтому 100000 не помещается в новый построенный список. Это что-то вроде этого? – tumbler