gpt4 book ai didi

escaping - 为什么 '\SO' 的行为与 Agda 中的其他转义码不同?

转载 作者:行者123 更新时间:2023-12-04 12:29:40 28 4
gpt4 key购买 nike

似乎我可以通过它的转义码来定义一个字符,比如

mychar : Char
mychar = '\US'
但不适用于 '\SO',因为
mychar : Char
mychar = '\SO'

Lexical error in string or character literal: bad escape code


即使 Data.Char.show '\14'回馈 "'\\SO'" ,所以我不明白为什么它不应该工作。
它是否与“\SOH”的存在有某种关系?以 Agda 也可以读取的方式打印任何字符的最佳方法是什么?

最佳答案

这看起来像是 Agda 解析器中的一个错误,so I've reported it as such .特别是the match function不适用于非无前缀的情况,例如 SO对比 SOH .为了说明,这里有一个简短的例子:

λ» M.parse defaultParseFlags [] (runLookAhead error $ match [("FO", pure 1), ("FOO", pure 2)] (pure 3)) "FOO"
ParseOk (PState {parseSrcFile = Nothing, parsePos = Pn {srcFile = (), posPos = 1, posLine = 1, posCol = 1}, parseLastPos = Pn {srcFile = (), posPos = 1, posLine = 1, posCol = 1}, parseInp = "FOO", parsePrevChar = '\n', parsePrevToken = "", parseLayout = [NoLayout], parseLexState = [], parseFlags = ParseFlags {parseKeepComments = False}}) 2
λ» M.parse defaultParseFlags [] (runLookAhead error $ match [("FO", pure 1), ("FOO", pure 2)] (pure 3)) "FOB"
ParseOk (PState {parseSrcFile = Nothing, parsePos = Pn {srcFile = (), posPos = 1, posLine = 1, posCol = 1}, parseLastPos = Pn {srcFile = (), posPos = 1, posLine = 1, posCol = 1}, parseInp = "FOB", parsePrevChar = '\n', parsePrevToken = "", parseLayout = [NoLayout], parseLexState = [], parseFlags = ParseFlags {parseKeepComments = False}}) 3
λ» M.parse defaultParseFlags [] (runLookAhead error $ match [("FO", pure 1), ("FOO", pure 2)] (pure 3)) "FO"
*** Exception: unexpected end of file
CallStack (from HasCallStack):
error, called at <interactive>:31:44 in interactive:Ghci8
如我们所见,如果我们有 "FO""FOO"作为两种情况,解析 "FOO"按预期工作(返回 2),解析 "FOB"按预期工作(从默认情况返回 3),但输入 "FO"导致解析错误。

关于escaping - 为什么 '\SO' 的行为与 Agda 中的其他转义码不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66816547/

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