Haskell是否允许在标识符中使用关键字?
C#允许在变量名前加@。所以 int@int=0; 在C#中有效 Haskell有类似的东西吗?或者它完全不允许这样做Haskell是否允许在标识符中使用关键字?,haskell,keyword,identifier,Haskell,Keyword,Identifier,C#允许在变量名前加@。所以 int@int=0; 在C#中有效 Haskell有类似的东西吗?或者它完全不允许这样做 谢谢看来这是不允许的。请注意,您通常可以将'放在关键字之后(因为这是一个有效的标识符字符),然后获取非关键字。某些单词在某些上下文中是关键字,但在其他上下文中可以自由用作标识符,例如作为和隐藏 C#技巧只不过是稍微更改名称,使其不再是关键字。在Haskell中,您可以在名称前或名称后添加一个,或在名称后附加一个GHC还特别允许。但是在某些上下文中有一个常规含义(例如对于类型,它
谢谢看来这是不允许的。请注意,您通常可以将
'
放在关键字之后(因为这是一个有效的标识符字符),然后获取非关键字。某些单词在某些上下文中是关键字,但在其他上下文中可以自由用作标识符,例如作为和隐藏
C#技巧只不过是稍微更改名称,使其不再是关键字。在Haskell中,您可以在名称前或名称后添加一个
,或在名称后附加一个GHC还特别允许
。但是
在某些上下文中有一个常规含义(例如对于类型,它意味着未装箱)。类似地,“
通常意味着前面名称的派生或严格版本。
在绑定前面还有一个附加含义,即“如果我不使用该绑定,请不要警告我”。在C中,名称保持不变,例如int@a=0;f(a)代码>运行f(0)。试着用'@int'代替'@a',当你试图用'int'而不是'@int'调用'f'时,你会让编译器抓狂。我想@int是你告诉编译器变量名为“int”的方式。例如,如果它是一个类的成员字段,反射api将显示“int”而不是“@int”。在Scala中,u可以使用倒勾来转义:val`int`=5