以下代码中,fibseq
表示斐波那契数列中的一系列数字。
(来自解决欧拉计划题目 #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)
,这个方法可以正常工作并且就是我想要的,但我不明白它为什么有效。
x |> f = f x
。 - Tom Lokhorst