Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell是否允许在标识符中使用关键字?_Haskell_Keyword_Identifier - Fatal编程技术网

Haskell是否允许在标识符中使用关键字?

Haskell是否允许在标识符中使用关键字?,haskell,keyword,identifier,Haskell,Keyword,Identifier,C#允许在变量名前加@。所以 int@int=0; 在C#中有效 Haskell有类似的东西吗?或者它完全不允许这样做 谢谢看来这是不允许的。请注意,您通常可以将'放在关键字之后(因为这是一个有效的标识符字符),然后获取非关键字。某些单词在某些上下文中是关键字,但在其他上下文中可以自由用作标识符,例如作为和隐藏 C#技巧只不过是稍微更改名称,使其不再是关键字。在Haskell中,您可以在名称前或名称后添加一个,或在名称后附加一个GHC还特别允许。但是在某些上下文中有一个常规含义(例如对于类型,它

C#允许在变量名前加@。所以 int@int=0; 在C#中有效

Haskell有类似的东西吗?或者它完全不允许这样做


谢谢

看来这是不允许的。请注意,您通常可以将
'
放在关键字之后(因为这是一个有效的标识符字符),然后获取非关键字。

某些单词在某些上下文中是关键字,但在其他上下文中可以自由用作标识符,例如
作为
隐藏


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