2017-08-22 6 views
1

私はF#の学習に忙しく、Seq.foldで遊んでいました。次の2つの呼び出しが本質的に同じではなく、1つのエラーと他のエラーがなぜ同じではないのか誰にも説明できますか?次のエラーで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にするように強制しました。

答えて

7

Seq.foldの3番目のパラメータとしてSeq.ofListを渡しています。あなたは、いくつかの括弧を追加する必要があります。

Seq.fold (fun state input -> state + input) 0 (Seq.ofList [1;2;3;4;5]);;

+0

を私は言うことができる "Dohのを!"。ありがとう! – user783836

3

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 
関連する問題