Это, пожалуй, самый простой, хотя, конечно, не самый эффективный:
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)
}
Я так не думаюобычно имеет смысл преобразовать строку в список, поскольку преобразование будет иметь значительные накладные расходы независимо от метода, и было бы лучше просто выполнить итерацию строки напрямую.Если это имеет смысл, вероятно, когда строки достаточно малы, разница между первым и вторым методом не имеет большого значения.