Haskell 运算符允许使用哪些字符?

2024-01-13

是否有某个地方允许的字符的完整列表,或者确定可以在标识符和运算符中使用什么的规则?


来自哈斯克尔报告 https://www.haskell.org/onlinereport/lexemes.html,这是允许的符号的语法:

a | b means a or b and

a<b> means a except b

special    ->   ( | ) | , | ; | [ | ] | `| { | } 
symbol     ->   ascSymbol | uniSymbol<special | _ | : | " | '>
ascSymbol  ->   ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @
                \ | ^ | | | - | ~
uniSymbol  ->   any Unicode symbol or punctuation 

因此,符号是 ASCII 符号或 Unicode 符号,除了special | _ | : | " | ',这是保留的。

意味着不能使用以下字符:( ) | , ; [ ] ` { } _ : " '

该报告在下面的几段中给出了 Haskell 运算符的完整定义:

varsym     -> ( symbol {symbol | :})<reservedop | dashes>
consym     -> (: {symbol | :})<reservedop>
reservedop -> .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>

运算符号由一个或多个符号字符组成,如 上面定义的,并且在词法上区分为两个名称空间 (第 1.4 节):

  • 以冒号开头的运算符符号是构造函数。
  • 以任何其他字符开头的运算符符号是普通标识符。

请注意,冒号本身“:”仅保留用作 Haskell 列表构造函数;这使得它的治疗与其他治疗一致 列表语法的一部分,例如“[]”和“[a,b]”。

除了前缀否定的特殊语法之外,所有运算符都是 中缀,尽管每个中缀运算符都可以在一个部分中使用以产生 部分应用运算符(参见第 3.5 节)。全部符合标准 中缀运算符只是预定义的符号,可能会反弹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 运算符允许使用哪些字符? 的相关文章

随机推荐