将整数列表转换为OCaml中的字符串

问题描述 投票:0回答:1

如何使用折叠将整数列表,例如[1; 2; 3]转换为单个字符串“ 123”?

现在,我想我正在这样做:

let int_list_to_string (s : int list) : string =
  fold (fun s combine -> combine + .... ) ""  

或沿这些方向的内容,其中....可能类似于String.length(我在另一个折叠问题中用于对字符串中的字符进行计数),但我不知道这是否是正确的。

谢谢!

list int ocaml fold
1个回答
0
投票

您的基本布局对我来说很合适。许多事情需要修复。这里有一些:

  1. 您必须选择要使用的特定折叠功能List.fold_leftList.fold_right

  2. 要折叠的函数带有两个参数。一个是累加结果,另一个是列表中的下一个输入。顺序取决于您使用fold_left还是fold_right。您的代码草图中有两个参数,但是其中一个可疑地命名为s。这将与输入列表不同sfun之后的名称是此时引入的新参数变量。

  3. 用于连接字符串的OCaml运算符是^,这是您在有+的地方(可能只是代码中的占位符)应该使用的方式。

  4. 您需要在连接之前将每个int转换为字符串。有一个名为string_of_int的函数可以执行此操作。

  5. 您必须将折页应用于列表。也就是说,fold需要3个参数,但是您在代码草图中仅提供了2个参数。

© www.soinside.com 2019 - 2024. All rights reserved.