完全按照 Haskell 中的原样读取字符串

Read A String Exactly As It Is in Haskell

我的程序是这样的:

func = do
      text <- getLine
      return text

如果我阅读第 36 行,结果自然是 \123\456。 我怎样才能得到36作为结果?

根据评论中的讨论,您似乎希望将字符串作为字符串 literal 来解析,只是它没有被引号括起来。

我们可以在这里使用 read :: Read a => String -> a ,对于字符串,将其解析为就好像它是字符串文字到字符串一样。唯一的问题是这个字符串文字被双引号括起来 (").

因此我们可以添加这些引号,并使用:

<b>read</b> ('"' : text ++ "\"") :: String

然而,并非每个字符串 text 本身都是有效的字符串文字,因此上述操作可能会失败。例如,如果 text 本身包含双引号,则其前面不直接带有反斜杠 (\).