【发布时间】:2010-10-27 20:29:29
【问题描述】:
我知道 map 函数获取列表(序列)的每个元素并对其应用函数。递归(并且不考虑终止条件等)
map(s, f) = f(s.head) :: map(s.tail, f)
我正在寻找类似的功能
foo(s, f) = f(s) :: map(s.tail, f).
所以是一个“映射器”,其中映射函数在子列表而不是单个元素上调用。在 lisp 术语中,我正在寻找一个地图列表,而不是地图车。这样的事情是否存在,还是我必须自己滚动(或使用递归)?
或者,我会采用一个函数,该函数将一个序列作为输入并返回一个中端子序列序列,即
bar(s, f) = s :: bar(s.tail, f)
【问题讨论】:
-
你能举一个所需输入和输出的例子吗?我跟不上。
-
我不知道这个问题的答案,但是如果您需要高级类型和函数,请参阅 Scalaz 库:code.google.com/p/scalaz
标签: scala functional-programming list-manipulation