В Haskell операторы являются нормальными функциями, которые имеют имена, состоящие из символов и использующие инфикс по умолчанию. Вы можете использовать их как обычный идентификатор, обернув их в скобках:
λ> :t (+)
(+) :: Num a => a -> a -> a
$
просто оператор, как это само по себе. Он представляет собой применение функции и определяется следующим образом:
f $ x = f x
Вы можете получить его тип, как и (+)
:
λ> :t ($)
($) :: (a -> b) -> a -> b
Haskell операторы также могут быть частично применены как обычные функции, путем оборачивать их в скобки с аргументы в одну сторону. Например, (+ 1)
совпадает с \ x -> x + 1
и (1 +)
- это то же самое, что и \x -> 1 + x
.
Это относится и к $
тоже, так что ($ fst client)
такая же, как \ f -> f $ fst client
или просто \ f -> f (fst client)
. Фрагмент кода у вас есть проверки, если любой списка функций возвращает true с учетом fst client
.
'3. PROFIT !!!! ' – leppie