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