Functional programming 如何在ML中查找双引号

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

我有一段代码,它可以找到双引号,并将这些引号的内部转换为字符串。它设法找到了第一个引号,但找不到第二个引号,因此:“this”应该是“this”。我如何得到它?我可以让这个函数找到完整的字符串。

也许这太明显了:

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