'String'上的模式匹配以获得Escaped Quote

Kev*_*ith 1 haskell

是否可以在转义报价上进行模式匹配?

这是我(错误地)尝试的:

g :: String -> Bool
g ('\\':'"':_) = True
g _            = False
Run Code Online (Sandbox Code Playgroud)

但结果不符合我期望的功能行为.

ghci> g "\""
False
ghci> g "\\\""
True
Run Code Online (Sandbox Code Playgroud)

Tik*_*vis 5

字符串字符串文字之间有区别.基本上,字符串是一个接一个的字符列表,字符串文字只是相同的一些表示法.符号必须"逃避"某些字符,否则会导致语法模糊,但它仍然表示没有转义的字符串.

Haskell表达式"\""是包含单个字符的字符串的表示法".我们需要反斜杠,因为"""没有它的写入会使字符串的内容看起来就像一个结束语并打破我们的符号.但是字符串本身仍然只有一个".

当您匹配字符串值时,您将匹配字符串本身,而不是其符号.这意味着您不必担心字符串中的转义字符,因为它们仅存在于符号级别.因此,要匹配仅包含"您的字符串,请使用以下模式:

foo ['"'] = ...
Run Code Online (Sandbox Code Playgroud)

如果您尝试考虑反斜杠,则会匹配不同的字符串.