F# 不能在没有管道的情况下调用 Seq.fold?
F# can't invoke Seq.fold without piping?
我正忙于学习 F# 并在玩 Seq.fold
。任何人都可以解释为什么以下两个调用本质上不相同,一个错误而另一个错误。
这样调用:
Seq.fold (fun state input -> state + input) 0 Seq.ofList [1;2;3;4;5];;
导致以下错误:
error FS0001: This expression was expected to have type
''a -> 'b'
but here has type
'int'
使用管道调用工作正常:
Seq.ofList [1;2;3;4;5] |> Seq.fold (fun state input -> state + input) 0;;
我猜我以某种方式采用了通用函数并将其强制为 int。
您将 Seq.ofList 作为第三个参数传递给 Seq.fold。您需要添加一些括号:
Seq.fold (fun state input -> state + input) 0 (Seq.ofList [1;2;3;4;5]);;
Seq.ofList 不是强制性的。
可以直接写:
Seq.fold (fun state input -> state + input) 0 [1;2;3;4;5]
或:
[1;2;3;4;5] |> Seq.fold (fun state input -> state + input) 0
我正忙于学习 F# 并在玩 Seq.fold
。任何人都可以解释为什么以下两个调用本质上不相同,一个错误而另一个错误。
这样调用:
Seq.fold (fun state input -> state + input) 0 Seq.ofList [1;2;3;4;5];;
导致以下错误:
error FS0001: This expression was expected to have type
''a -> 'b'
but here has type
'int'
使用管道调用工作正常:
Seq.ofList [1;2;3;4;5] |> Seq.fold (fun state input -> state + input) 0;;
我猜我以某种方式采用了通用函数并将其强制为 int。
您将 Seq.ofList 作为第三个参数传递给 Seq.fold。您需要添加一些括号:
Seq.fold (fun state input -> state + input) 0 (Seq.ofList [1;2;3;4;5]);;
Seq.ofList 不是强制性的。 可以直接写:
Seq.fold (fun state input -> state + input) 0 [1;2;3;4;5]
或:
[1;2;3;4;5] |> Seq.fold (fun state input -> state + input) 0