在下面的代码中,fibseq表示来自Fibonacci序列的数字序列.(从代码中解决Project Euler#2)
我已经定义了一个中缀函数|>:
(|>) x y = y x.
Run Code Online (Sandbox Code Playgroud)
这让我可以执行以下操作(如unix管道):
take 34 fibseq |> filter even |> filter (< 4000000) |> sum
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么这有效?
我本以为 take 34 fibseq |> filter even应该转换成filter (take 34 fibseq) even,(我认为)会导致类型错误.
相反,它似乎正在转变为filter even (take 34 fibseq)哪些作品并且是我想要的,但我不明白它为什么会起作用.
我喜欢将类型名称与Go中的变量进行一些视觉分离.我一直在玩以下内容:
var target (int64) = 600851475143
var largest (int64) = 0
var i (int64)
Run Code Online (Sandbox Code Playgroud)
到目前为止,它编译正确,我没有看到我的程序运行结果有任何差异.
这有危险吗?上面和下面之间是否有语义差异?
var target int64 = 600851475143
var largest int64 = 0
var i int64
Run Code Online (Sandbox Code Playgroud)
谢谢