Ruw*_*ngi 4 ocaml string-conversion
我的代码中有以下类型定义:
type tag =
| Head
| Title
| Body
| H1
| P;;
type domtree =
| Empty
| Node of tag * string * domtree list;;
Run Code Online (Sandbox Code Playgroud)
我需要打印标签和字符串.但我找不到任何方法将标记(第一个类型定义中的构造函数名称)转换为字符串并将它们与domtree的字符串部分连接起来.有没有具体的方法来做到这一点?OCaml是否提供了将非内置类型转换为字符串的方法?我在这里发现了一个类似的问题,但我不太明白.
小智 6
在OCaml中没有这样的设施,你需要自己编写转换功能tag_to_string : tag -> string.
很容易自动生成这个字符串的主体,例如,使用这个sed单行:
sed -e 's/\| \(.*\)/| \1 -> "\1"/'
Run Code Online (Sandbox Code Playgroud)
并将标记定义粘贴到其标准输入中.它产生了
| Head -> "Head"
| Title -> "Title"
| Body -> "Body"
| H1 -> "H1"
| P;; -> "P;;"
Run Code Online (Sandbox Code Playgroud)
而你只需要清理;;.
还有很多其他解决方案来定义这个样板代码,我也喜欢使用Emacs宏.