Types toString和反斜杠(以ML为单位)

Types toString和反斜杠(以ML为单位),types,functional-programming,ocaml,ml,Types,Functional Programming,Ocaml,Ml,假设我想用我的元语言表示一个字符串,所以我有一个类似“string”的字符串。下面的代码将为我执行以下操作 我有 repl>“字符串” 将输出: \“字符串” 我知道这个问题与toString有关,从我所读到的内容来看,它将双引号转换为一系列反斜杠,我的问题是有一个函数可以正常输出字符串 您可以尝试以下方法: | expression2string(String(X)) = X 我不知道解析器做什么,但通常我希望它不会在字符串值中包含引号字符,即string(x)中的x应该只包含字符串的实际内

假设我想用我的元语言表示一个字符串,所以我有一个类似“string”的字符串。下面的代码将为我执行以下操作

我有

repl>“字符串”

将输出:

\“字符串”

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

您可以尝试以下方法:

| expression2string(String(X)) = X

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

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

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

哇,我觉得自己很笨。谢谢你!