我是函数式语言编程的新手。我正在尝试实现 F# 收集列表。
let rec collect func list =
match list with
| [] -> []
| hd::tl -> let tlResult = collect func tl
func hd::tlResult;;
collect (fun x -> [for i in 1..3 -> x * i]) [1;2;3];;
应该打印:
val it : int list = [1; 2; 3; 2; 4; 6; 3; 6; 9]
但我得到了:
val it : int list = [[1; 2; 3;], [2; 4; 6;], [3; 6; 9]]