如何使用折叠将整数列表,例如[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个参数。