我正在学习F#。我已经为列表编写了自定义折叠函数(在StackOverflow上有帮助)。我现在正在尝试写回折函数说myOwnFoldBack。预期输出可能myOwnFoldBack (+) 0 [1; 2; 3 ]
应返回6
。
这是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'
答案 0 :(得分:2)
我想我终于明白了!
let rec myOwnFoldBack f s0 =
function
| [] -> s0
| x::tail -> f x (myOwnFoldBack f s0 tail)