如果您将列表l作为输入,那么mapList和x是什么?
let mapFold (f: 'a -> 'b) (l : List<'a>) : List<'b> =
l |> List.fold (fun mappedList x -> f x :: mappedList) [] |> List.rev
答案 0 :(得分:2)
lambda表达式(由fun
表示)定义了文件夹函数,其类型为'State -> 'T -> 'State
,其中State有时也称为累加器,缩写为acc
。并且'T
是列表l
的元素的类型。
一个简单的示例:(0, [1..10]) ||> List.fold (fun acc x -> acc + x)
其中0是状态(或acc)的初始值,而x
是列表[1..10]
的元素。
为回答您的问题,mappedList
是状态或累加器,其初始值为[]
或List.empty
,而x
是列表{ {1}}。 fold函数将从头到尾依次将folder函数应用于列表的每个元素“ x”,并在每次调用时更新并返回状态值,最后返回状态的最终值。