首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哈斯克尔,逃跑意味着什么?

在哈斯克尔,逃跑意味着什么?
EN

Stack Overflow用户
提问于 2019-07-09 22:45:33
回答 1查看 2.2K关注 0票数 35

我看了Haskell 2010的报告,发现了一个奇怪的逃逸序列,其中有一个符号:\&。我找不到一个解释这个逃逸序列代表什么。它也可能只位于字符串中。我尝试了print "\&" in GHCi,它打印了一个空字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 22:51:48

它逃脱了..。没有性格。它是有用的“打破”一些转义序列。例如,我们可能希望将"\12" ++ "3"表示为单个字符串文本。如果我们尝试明显的方法,我们就会得到

代码语言:javascript
复制
"\123" ==> "{"

然而,我们可以使用

代码语言:javascript
复制
"\12\&3"

为了预期的结果。

另外,"\SOH""\SO"都是有效的单个ASCII字符转义,使得"\SO" ++ "H"很难用单个文字来表示:我们需要"\SO\&H"

标准Show String实例也利用了这个转义技巧,该实例必须生成有效的文字语法。我们可以在GHCi中看到这一点:

代码语言:javascript
复制
> "\140" ++ "0"
"\140\&0"
> "\SO" ++ "H"
"\SO\&H"

此外,这极大地帮助了旨在生成Haskell代码(例如元编程)的外部程序。当为字符串文本发出字符时,外部程序可以在可能不明确的转义符(甚至所有转义符)的末尾添加\&,这样程序就不必处理不必要的交互。例如,如果程序现在想要发出\12,它可以发出\12\&,并且可以作为下一个字符自由地发出任何内容。否则,程序应该记住,当发出下一个字符时,如果它是一个数字,则必须由\&加码。即使不需要添加\&,始终添加它也更简单:\12\&A是合法的,具有与\12A相同的含义。

最后,引用Haskell报告,解释\&

2.6字符和字符串文字 ..。 与“最大咀嚼”规则一致,字符串中的数字转义字符由所有连续数字组成,可以是任意长度的。类似地,一个模棱两可的ASCII转义代码"\SOH"被解析为长度为1的字符串。转义字符\&作为一个"null character"提供,以允许构造诸如"\137\&9""\SO\&H"这样的字符串(都是长度2)。因此,"\&"等同于"",字符'\&'是不允许的。第6.1.2节进一步定义了字符的等价物。

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56961342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档