Haskell运算符允许使用哪些字符?
是否有一个完整的允许字符列表,或者有一个规则确定标识符和运算符中可以使用什么?来自: 运算符符号由一个或多个符号字符组成 将符号字符定义为以下任意一种符号:代码>或“任何[非ascii]Unicode符号或标点符号” 注意:用户定义的运算符不能以Haskell运算符允许使用哪些字符?,haskell,syntax,operators,Haskell,Syntax,Operators,是否有一个完整的允许字符列表,或者有一个规则确定标识符和运算符中可以使用什么?来自: 运算符符号由一个或多个符号字符组成 将符号字符定义为以下任意一种符号:或“任何[非ascii]Unicode符号或标点符号” 注意:用户定义的运算符不能以:开头,因为引用“以冒号开头的运算符符号是构造函数。”从中,这是允许的符号的语法: a | b指a或b和 a表示除b以外的a special -> ( | ) | , | ; | [ | ] | `| { | } symbol -&g
:
开头,因为引用“以冒号开头的运算符符号是构造函数。”从中,这是允许的符号的语法:
a | b
指a或b
和
a
表示除b以外的a
special -> ( | ) | , | ; | [ | ] | `| { | }
symbol -> ascSymbol | uniSymbol<special | _ | : | " | '>
ascSymbol -> ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @
\ | ^ | | | - | ~
uniSymbol -> any Unicode symbol or punctuation
运算符符号由一个或多个符号字符组成,如下所示:
定义,并在词汇上区分为两个名称空间
(第1.4节):
- 以冒号开头的运算符符号是构造函数
- 以任何其他字符开头的运算符符号是普通标识符李>
请注意,冒号本身“:”仅保留用作
Haskell列表构造函数;这使得它的处理与其他产品一致
列表语法的部分,例如“[]”和“[a,b]”
除了前缀否定的特殊语法外,所有运算符都是
中缀,尽管每个中缀运算符都可以在一个节中使用以产生
部分应用的运算符(见第3.5节)。所有的标准
中缀运算符只是预定义的符号,可能会反弹
我要找的是完整的角色列表。根据其他答案,完整列表如下:
Unicode标点符号:
Unicode符号:
但不包括Haskell中具有特殊含义的以下字符:
(),;[]`{}_:"'
:
仅允许作为运算符的第一个字符,并表示构造函数(请参见)。有趣的是,您可以使用任意Unicode。例如,λ或⊗ 是否为有效的Haskell运算符?否,λ
是Unicode字母,而不是Unicode符号或Unicode标点符号。因此,您不能将其用作运算符名称的一部分(但可以将其用作普通标识符的一部分)⊗代码>作为Haskell操作符,但我不确定。你可以。它的generalCategory
是MathSymbol
(为了确保,我实际上定义了一个操作符(⊗)被接受)。这些天可能应该引用而不是Haskell 98报告(尽管在这种情况下,据我所见,他们说的是相同的事情)。FWIW,tryhaskell.org目前给出了一个试图使用数学括号符号之一的词汇错误,例如,let a⟬ b=1
这简直是疯了!使用任何Unicode符号都是可能的,这很好,但不幸的是,它们通常很难在当前的键盘上键入。@Qqwy-Haskell是为在识字编程环境中使用而设计的。您可以生成一个专为使用代码片段排版而设计的文档,并将这些代码片段在您的源文档中,这些操作实际上是可执行的。为此,定义unicode运算符的能力是非常宝贵的。
(),;[]`{}_:"'