gpt4 book ai didi

Haskell 函数组合(正向管道) - 为什么会这样?

转载 作者:行者123 更新时间:2023-12-03 12:10:34 26 4
gpt4 key购买 nike

在下面的代码中,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)哪个有效并且是我想要的,但我不明白它为什么有效。

最佳答案

函数应用程序(如 filter even )比任何运算符绑定(bind)得更紧密,因此您的代码等效于:

(take 34 fibseq) |> (filter even) |> (filter (< 4000000)) |> sum

关于Haskell 函数组合(正向管道) - 为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com