将字符串拆分为字符列表的最简单方法是什么?

What is the simplest way to split a string into a list of characters?

这似乎包含在 api 文档中的 Str 模块中,但根据 this issue opened,这是一个疏忽。

这可能是最简单的,但肯定不是最有效的:

let split = s =>
    s |> Js.String.split("")
      |> Array.to_list
      |> List.map(s => s.[0])

这样效率更高,而且跨平台:

let split = s => {
    let rec aux = (acc, i) =>
        if (i >= 0) {
          aux([s.[i], ...acc], i - 1)
        } else {
          acc
        }

    aux([], String.length(s) - 1)
}

虽然我认为将字符串转换为列表通常没有多大意义,因为无论采用何种方法,转换都会产生大量开销,最好直接迭代字符串。如果确实有意义,那可能是因为字符串足够小,以至于第一种方法和第二种方法之间的差异无关紧要。