【发布时间】:2014-12-10 14:27:25
【问题描述】:
OCaml 中典型的 List.map 函数非常简单,它接受一个函数和一个列表,并将该函数递归地应用于列表的每个项目。我现在需要将 List.map 转换为尾递归函数,怎么做?累加器应该累加什么?
【问题讨论】:
-
这听起来像是家庭作业(对我来说)。所以也许你应该首先建议你认为它可以如何工作。
-
这实际上不是作业,而是我正在学习的一些旧考试。但是我确实有一些想法,例如模式匹配列表,如果它为空则返回累加器(尾递归的标准做法),如果它的形式为 hd::tl 然后将 tl 传递给下一个函数并附加( f hd) 到累加器
-
这对我来说听起来很棒。如果你这样做,你如何处理基本情况(当你的输入为空时)。那个时候的蓄能器是什么样子的?
标签: list ocaml tail-recursion