0
私はF#を学んでいます。私はリストのためのカスタム折り畳み関数を書いています(StackOverflowのヘルプを参照)。私は今、myOwnFoldBackというフォールドバック関数を書こうとしています。期待される出力はを返すべきmyOwnFoldBack (+) 0 [1; 2; 3 ]
であるかもしれません。ここでF#リストのカスタム折り返し機能を書く
はmyOwnFold
let rec myOwnFoldf s0 =
function
| [] -> s0
| x::tail -> myOwnFoldf (f s0 x) tail
これは正常に動作のために私のコードです。ここで がmyOwnFoldBack
let rec myOwnFoldBack f s0 =
function
| [] -> 0
| x::tail -> x f (myOwnFoldBackf tail)
ためのコードである私が手にエラーがある:
Type mismatch. Expecting a
'a
but given a
('b -> 'a -> int) list -> int
The resulting type would be infinite when unifying ''a' and '('b -> 'a -> int) list -> int'
あなたは小さなタイプミス、二 'myOwnFoldBack'は' myOwnFoldBackf' –
を持っているように、私はそれとは別に、いくつかのより多くの問題があると思い見えます。 –
もう少しあるようです。 'myOwnFoldBackf'は空リストの場合には' s0'のisnteadを返しますが、 'f'に' x'を適用すると 's0'を再帰呼び出しに渡すことはありません... –