Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在OCaml中将字符列表转换为字符串?_List_Char_Ocaml - Fatal编程技术网

List 如何在OCaml中将字符列表转换为字符串?

List 如何在OCaml中将字符列表转换为字符串?,list,char,ocaml,List,Char,Ocaml,我有一个字符列表['a';'b';'c'] 如何将其转换为字符串“abc” 感谢x您可以创建一个长度等于列表长度的字符串,然后使用计数器折叠列表,并使用列表内容初始化字符串。。。但是,自从OCAML4.02以来,字符串类型开始朝着不可变的方向转变(并在4.06中变得不可变),您应该开始将字符串视为不可变的数据结构。那么,让我们尝试另一种解决方案。有专门用于字符串生成的缓冲区模块: let cl2s cl = String.concat "" (List.map (String.make 1) c

我有一个字符列表
['a';'b';'c']

如何将其转换为字符串“abc”


感谢x

您可以创建一个长度等于列表长度的字符串,然后使用计数器折叠列表,并使用列表内容初始化字符串。。。但是,自从OCAML4.02以来,字符串类型开始朝着不可变的方向转变(并在4.06中变得不可变),您应该开始将字符串视为不可变的数据结构。那么,让我们尝试另一种解决方案。有专门用于字符串生成的
缓冲区
模块:

let cl2s cl = String.concat "" (List.map (String.make 1) cl)
# let buf = Buffer.create 16;;
val buf : Buffer.t = <abstr>
# List.iter (Buffer.add_char buf) ['a'; 'b'; 'c'];;
- : unit = ()
# Buffer.contents buf;;
- : string = "abc"

常用的Base库还提供了
Base.String.of\u char\u list

自OCaml 4.07以来,您可以使用序列轻松实现这一点

let l = ['a';'b';'c'] in
let s = String.of_seq (List.to_seq l) in
assert ( s = "abc" )

如果列表太长,此解决方案将产生堆栈溢出。在这种情况下,使用ivg的溶液。顺便说一句,电池中有一个
字符串。
let l = ['a';'b';'c'] in
let s = String.of_seq (List.to_seq l) in
assert ( s = "abc" )