【发布时间】:2018-08-16 06:06:09
【问题描述】:
我一直在研究一个单独的函数,它返回一个列表,在列表 l 的每个 k 元素之后插入元素 x(从 列表的末尾)。例如,单独的 (1, 0, [1,2,3,4]) 应该返回 [1,0,2,0,3,0,4]。我完成了该功能并使其工作如下:
fun separate (k: int, x: 'a, l: 'a list) : 'a list =
let
fun kinsert [] _ = []
| kinsert ls 0 = x::(kinsert ls k)
| kinsert (l::ls) i = l::(kinsert ls (i-1))
in
List.rev (kinsert (List.rev l) k)
end
我现在尝试使用 foldl/foldr 来简化函数,而无需任何递归,但我似乎无法让它正常工作。关于如何解决这个问题的任何提示/建议?谢谢!
【问题讨论】: