Functional programming 如何在ML中查找双引号
我有一段代码,它可以找到双引号,并将这些引号的内部转换为字符串。它设法找到了第一个引号,但找不到第二个引号,因此:“this”应该是“this”。我如何得到它?我可以让这个函数找到完整的字符串。也许这太明显了:Functional programming 如何在ML中查找双引号,functional-programming,ml,Functional Programming,Ml,我有一段代码,它可以找到双引号,并将这些引号的内部转换为字符串。它设法找到了第一个引号,但找不到第二个引号,因此:“this”应该是“this”。我如何得到它?我可以让这个函数找到完整的字符串。也许这太明显了: if (ch = #"\"") then SOME(String(x ^ "\"")) 我不太理解您的代码:您在第一次出现引号之后返回字符串,但是这个字符串是用您在它之前找到的字符构建的。此外,为什么您返回SOME(Error)而不是NONE 您需要使用一个布尔变量来知道何时看到第一个
if (ch = #"\"") then SOME(String(x ^ "\""))
我不太理解您的代码:您在第一次出现引号之后返回字符串,但是这个字符串是用您在它之前找到的字符构建的。此外,为什么您返回
SOME(Error)
而不是NONE
您需要使用一个布尔变量来知道何时看到第一个引号,并在找到第二个引号时停止
fun parseString x inStr quote =
case (TextIO.input1 inStr, quote) of
(NONE, _) => NONE
| (SOME #"\"", true) => SOME x
| (SOME #"\"", false) => parseString x inStr true
| (SOME ch, true) => parseString (x ^ (String.str ch)) inStr quote
| (SOME _ , false) => parseString x inStr quote;
并使用false
初始化quote