列表l中的mapedList和x是什么?

时间:2019-07-07 16:43:27

标签: functional-programming f#

如果您将列表l作为输入,那么mapList和x是什么?

let mapFold (f: 'a -> 'b) (l : List<'a>) : List<'b> =
    l |> List.fold (fun mappedList x -> f x :: mappedList) [] |> List.rev

1 个答案:

答案 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”,并在每次调用时更新并返回状态值,最后返回状态的最终值。