首页 > 解决方案 > Turning list of integers into string in OCaml

问题描述

How could I turn a list of integers, such as [1;2;3], into a single string "123" using fold?

Right now, I think I'm doing:

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

or something along these lines, where .... could be something similar to String.length (which I used in a different fold problem to count characters in a string) but I don't know if this is even remotely correct.

Thank you!

标签: listintocamlfold

解决方案


你的基本布局对我来说很合适。很多事情需要解决。这里有几个:

  1. 您必须选择要使用的特定折叠功能,List.fold_left或者List.fold_right.

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

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

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

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


推荐阅读