В приведенном ниже коде fibseq представляет последовательность чисел из последовательности Фибоначчи.
(из кода для решения Project Euler # 2)
Я определил инфиксную функцию |>:
(|>) x y = y x.
Это позволяет мне сделать следующее (например, unix-конвейер):
take 34 fibseq |> filter even |> filter (< 4000000) |> sum
Мой вопрос: зачем это работает?
Я бы подумал, что take 34 fibseq |> filter even должен преобразоваться в filter (take 34 fibseq) even, который (я думаю) приведет к ошибке типа.
Вместо этого он превращается в filter even (take 34 fibseq), который работает и что я хочу, но я не понимаю, почему он работает.