首页 > 解决方案 > 列表 l 中的 mappedList 和 x 是什么?

问题描述

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

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

标签: functional-programmingf#

解决方案


lambda 表达式(由fun关键字表示)定义了文件夹函数,它的类型'State -> 'T -> 'State有时也称为累加器,缩写为acc. 并且'T是列表元素的类型l

一个简单的例子:(0, [1..10]) ||> List.fold (fun acc x -> acc + x) 其中 0 是状态(或 acc)的初始值,x是 list 的一个元素[1..10]

因此,要回答您的问题,mappedList是状态或累加器,它具有初始值[]or List.empty,并且x是 list 的一个元素l。fold 函数将从头到尾依次将文件夹函数应用于列表的每个元素“x”,每次调用都会更新并返回状态值,最后返回状态的最终值。


推荐阅读