Ocaml - 字符串到(int * int * int)列表

时间:2011-06-17 16:42:58

标签: string list int ocaml

是否在ocaml函数中可以像这样解析字符串“[(1,2,3);(1,2,5);(2,3,4)]”到(int * int * int)列表?或者我是否必须编写自己的解析功能?

由于

格雷格

2 个答案:

答案 0 :(得分:4)

嗯,借助标准库中的Scanf模块,它应该不会太困难 - 您将能够轻松扫描三元组,然后只需要添加一些逻辑来解析列表

或者您可以查看deriving

  

扩展到OCaml以从类型声明中派生函数。包括用于漂亮打印,类型安全编组的派生程序,包括结构共享,动态类型,相等等。

答案 1 :(得分:4)

如果您愿意使用稍微不同的格式,您可以免费使用解析器。使用sexplib语法扩展,您只需编写:

type t = (int * int * int) list with sexp

这将自动为您定义两个函数sexp_of_tt_of_sexp。 Sexplib还提供了多种解析功能。

然而,s表达式的具体语法是不同的。您的示例将呈现:

((1 2 3) (1 2 5) (2 3 4))