在 OCaml 中将整数列表转换为字符串
Turning list of integers into string in OCaml
如何使用 fold 将整数列表(例如 [1;2;3])转换为单个字符串“123”?
现在,我想我在做:
let int_list_to_string (s : int list) : string =
fold (fun s combine -> combine + .... ) ""
或类似的东西,其中 .... 可能类似于 String.length (我在不同的折叠问题中使用它来计算字符串中的字符数)但我不知道这是否甚至是完全正确的。
谢谢!
我觉得你的基本布局很合适。许多事情需要解决。这里有一些:
您必须选择要使用的特定折叠函数,List.fold_left
或 List.fold_right
。
要折叠的函数有两个参数。一个是累积的结果,另一个是列表中的下一个输入。顺序取决于您使用 fold_left
还是 fold_right
。您的代码草图有两个参数,但其中一个参数的名称可疑 s
。这将与输入列表不同 s
。 fun
后面的名字是当时引入的新参数变量。
用于连接字符串的 OCaml 运算符是 ^
,这是您应该在有 +
的地方使用的运算符(可能只是代码中的占位符)。
您需要在连接之前将每个 int 转换为字符串。有一个名为 string_of_int
的函数可以执行此操作。
您必须将折叠应用于列表。即,fold 有 3 个参数,但您在代码草图中只提供了 2 个参数。
如何使用 fold 将整数列表(例如 [1;2;3])转换为单个字符串“123”?
现在,我想我在做:
let int_list_to_string (s : int list) : string =
fold (fun s combine -> combine + .... ) ""
或类似的东西,其中 .... 可能类似于 String.length (我在不同的折叠问题中使用它来计算字符串中的字符数)但我不知道这是否甚至是完全正确的。
谢谢!
我觉得你的基本布局很合适。许多事情需要解决。这里有一些:
您必须选择要使用的特定折叠函数,
List.fold_left
或List.fold_right
。要折叠的函数有两个参数。一个是累积的结果,另一个是列表中的下一个输入。顺序取决于您使用
fold_left
还是fold_right
。您的代码草图有两个参数,但其中一个参数的名称可疑s
。这将与输入列表不同s
。fun
后面的名字是当时引入的新参数变量。用于连接字符串的 OCaml 运算符是
^
,这是您应该在有+
的地方使用的运算符(可能只是代码中的占位符)。您需要在连接之前将每个 int 转换为字符串。有一个名为
string_of_int
的函数可以执行此操作。您必须将折叠应用于列表。即,fold 有 3 个参数,但您在代码草图中只提供了 2 个参数。