在列表中已有的每个元素之间添加一些内容 - OCaml

时间:2014-03-05 06:22:27

标签: list ocaml

我想知道是否有一个列表函数允许您在列表中的每个元素之间添加一个分隔符。

例如:

[1;2;3;4;5] -> [1;0;2;0;3;0;4;0;5]

2 个答案:

答案 0 :(得分:3)

如果您的意思是OCaml标准库中的函数,则没有这样的函数。您可以在OCaml manual中自行查找此信息。列表函数描述为here

Core list moduleCore_list.intersperse,完全符合您的描述。

Batteries list moduleBatList.interleave,这也完全符合您的描述(再多一点)。

答案 1 :(得分:1)

你可以像这样定义一个函数:

let rec intersperse sep ls =
    match ls with
    | [] | [_] -> ls
    | hd::tl -> hd :: sep :: intersperse sep tl

示例用法:

intersperse 0 [1; 2; 3; 4; 5]
(* Returns: [1; 0; 2; 0; 3; 0; 4; 0; 5] *)