在 Opa 中实现“反转字符串”功能的最高效方法是什么?
我知道String.reverse()
。它确实完成了工作,但它的源代码绑定到了一些外部函数。我想了解重新排序字符串的最佳(最快)工具是什么。
因此,例如,这可行,但不是特别快:
reverse(s:string) =
p = parser
| x=(.) xs=(.*) -> Text.concat(reverse(Text.to_string(xs)), x)
| x=(.*) -> x
Parser.parse(p, s)
我怎样才能让这个表现更好?
编辑:基于 akoprowski 答案的另一种实现
我想这就是他的想法。这个比解析器版本快得多,但是如果您需要做的只是反转一个字符串,那么内置String.reverse
是要走的路。
reverse_list(l:list(string)):list(string) =
match l with
| [x|xs] -> reverse_list(xs) ++ [x]
| _ -> []
reverse_string(s:string) =
string_list = List.init((i -> String.get(i, s)), String.length(s))
String.flatten(reverse_list(string_list))
编辑:上述实现并不理想
查看接受的答案以获得更好的选择。