我正在努力减少对Haskell语法的困惑,并希望找出Haskell中单独的命名空间.
命名空间意味着与编译器管理的各种符号表相对应的语法命名空间,而不是代码中定义的名称范围.
例如:
我很感兴趣,因为我在阅读Haskell代码时遇到了麻烦(肯定比其他任何语言都要多),因为我经常很难搞清楚我在看什么(尤其是数据/类型构造函数/类型声明).
Haskell似乎<name> <name> ...在许多地方重用了一些语法结构(特别是)并依赖于上下文 - 事实证明编译器在这方面比我好多了......
dav*_*420 13
Haskell中有六种名称:变量和 构造函数表示值; 那些类型的变量,类型构造,和类型类是指有关的类型系统实体; 和模块名称是指模块.命名有两个限制:
- 变量和类型变量的名称是以小写字母或下划线开头的标识符; 其他四种名称是以大写字母开头的标识符.
- 标识符不能用作类型构造函数的名称和同一范围内的类.
这是唯一的限制; 例如,Int可以同时是单个范围内的模块,类和构造函数的名称.
如果你确定你明白你在读什么,就可以避免混淆: