基础列表操作

实践练习C++17

函数式编程经常通过 map、filter 和 fold 等操作处理列表。本题要求你理解这些操作的含义,并自己实现它们。

任务说明

实现基本列表操作。

函数式语言常用 length、map、reduce 等操作。请自行实现,不使用已有同类函数。

为避免与现有名称冲突,不同语言课程的具体名称与数量可能不同,主要包括:

  • append:把第二个列表全部追加到第一个末尾。
  • concatenate:把一组列表展平为单一列表。
  • filter:按谓词保留满足 predicate(item) 的元素。
  • length:返回元素总数。
  • map:对每项应用函数,返回结果列表。
  • foldl:从左向右把元素归约到初始累加器。
  • foldr:从右向左归约到初始累加器。
  • reverse:返回顺序相反、元素相同的列表。

注意,foldl、foldr 中调用归约函数时,参数顺序非常重要。