gpt4 book ai didi

haskell - 如何在 Haskell 中转义双引号?

转载 作者:行者123 更新时间:2023-12-03 21:48:53 26 4
gpt4 key购买 nike

我知道要在 Haskell 中转义特殊字符,我们可以使用 \" ,所以如果我尝试作为参数传递:

parseString :: String
parseString = "{\"coord\":[\"D\",\"7\"],\"result\":\"HIT\",\"prev\":{\"coord\":[\"A\",\"10\"],\"result\":null,\"prev\":null}}"

到函数
take 7 parseString

一切正常,但我想知道是否有更短的方法来产生相同的结果,而无需放置转义符号 \"无处不在(想象一下大 JSON)?

例如,Python 有这个:
>>> s = """my string with "double quotes" blablabla"""
'my string with "double quotes" blablabla'

最佳答案

您可以使用反斜杠(\" 在字符串中)转义双引号,例如:

"\"To be, or not to be\" - William Shakespeare"

如果你需要写很多双引号,上面当然会相当麻烦。 Haskell 使准引用成为许多 Haskell 包用来在 Haskell 中开发“迷你语言”的一种方式。据我所知,准引号并未在 Haskell 报告中指定,因此它并不是真正的“Haskell 功能”,但最流行的编译器 (GHC) 支持这一点。像 raw-strings-qq [Hackage] 这样的包允许您利用此功能编写原始字符串,如下所示:
{-# LANGUAGE QuasiQuotes #-}

import Text.RawString.QQ(r)

quote = [r|"To be, or not to be" - William Shakespeare|]

因此,这会产生如下字符串:
Prelude Text.RawString.QQ> [r|"To be, or not to be" - William Shakespeare|]
"\"To be, or not to be\" - William Shakespeare"

QuasiQuotes 不仅用于生成原始字符串。例如,在 Yesod 中,有一些迷你语言可以在莎士比亚语言中定义 HTML/CSS/JavaScript 模板( hamletluciuscassiusjulius)。如果用“vanilla”Haskell 表达某些东西需要大量工作,则通常使用它,而用特定语言编写它会更容易。

关于haskell - 如何在 Haskell 中转义双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52641516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com