ML中的toString和反斜杠

时间:2014-03-23 04:14:40

标签: types functional-programming ocaml ml

假设我想在我的Metalanguage中表示一个字符串,所以我有一个像“String”这样的字符串,以下代码将为我做以下代码

我有

REPL> “中的字符串”

将输出:

\ “字符串\”

我知道问题与toString有关,从我读过的它将双引号转换为反斜杠系列,我的问题是我可以有一个函数,所以我可以正常输出字符串。

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

| expression2string(String(X)) = X

答案 1 :(得分:1)

我不知道你的解析器做了什么,但通常我希望它不会在字符串值中包含引号字符,即x中的String(x)应该只包含字符串的实际内容。然后你只需要定义

| expression2string(String s) = "\"" ^ String.toString s ^ "\""

这会正确地转义字符串内容(例如换行符或内部引号),而不是周围的引号,它们是语言语法,而不是内容。