В приведенном ниже коде 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)
, который работает и что я хочу, но я не понимаю, почему он работает.