Haskell 98报告
顶部|后面|下一个|目录|功能索引
1 介绍
Haskell是一个通用的、纯功能的编程语言融合了许多最新的创新编程语言设计。Haskell提供高阶函数,非限定语义,静态多态类型,用户定义代数数据类型、模式匹配、列表理解、模块系统、一元I/O系统和一组丰富的原始数据类型,包括列表,数组、任意和固定精度整数以及浮点数字。哈斯克尔既是巅峰并巩固了多年来对非严格泛函的研究语言。
此报表定义Haskell程序的语法和此类含义的非正式抽象语义程序。我们作为实施离开依赖于Haskell程序的方式操纵、解释、编译等。这包括以下问题编程环境的性质和未定义程序返回的错误消息(即正式评估为_ | _的项目)。
1.1 程序结构
在本节中,我们将描述Haskell,以及它与报告的其余部分。
- 在最顶层,Haskell程序是一个集合属于模块,详见第章5模块提供控制名称空间的方法以及在大型程序中重用软件。
- 模块的顶层包含声明,其中有几种,均已描述在第章中4.声明定义普通值、数据类型、类型等内容类和固定信息。
- 下一个较低级别是表达,已描述在第章中三。表达式表示价值并且有一个静态类型; 表达是Haskell编程“在小范围内”
- 最底层是哈斯克尔的词汇结构,定义见第章2. The词汇结构抓住了具体Haskell程序在文本文件中的表示。
本报告自下而上Haskell的句法结构。以上未提及的章节为第章6,其中描述了Haskell中的标准内置数据类型和类,以及第章7,其中讨论了Haskell中的I/O设施(即Haskell程序如何与外部世界沟通)。此外,还有几章描述了前奏曲,具体语法、文字编程、派生的规范实例和大多数Haskell编译器支持的杂注。
给出了Haskell程序片段在运行文本中的示例用打字机字体:
设x=1
z=x+y
以z+1为单位
程序片段中的“孔”表示任意Haskell代码片段是用斜体书写的,如如果e(电子)1 然后e(电子)2 其他的e(电子)三.通常斜体名称为助记符,例如e(电子)对于表达式,d日对于声明,t吨用于类型等。
1.2 哈斯克尔内核
哈斯克尔采用了许多方便的句法结构已经流行起来的在函数编程中。在本报告中句法糖是通过翻译成更简单的结构来给出的。如果这些翻译被详尽地应用,结果就是一个程序用Haskell的一个小子集编写,我们称之为内核.
虽然内核没有正式指定,但它本质上是一个略带甜味的lambda演算变体指称语义。每个句法结构的翻译随着语法的引入,内核中给出了。这个模块设计便于对Haskell程序进行推理,并提供为语言的实现者提供有用的指导。
1.3 值和类型
表达式的计算结果为价值并且有一个静止的类型。值和类型不混合在哈斯克尔。然而,类型系统允许用户定义各种类型的数据类型,并且不仅允许参数多态性(使用传统的Hindley-Milner型结构),但也特别的多态性,或过载(使用类型类).
Haskell中的错误在语义上等价于_|_. 从技术上讲,它们是不可区分的来自非终结,因此该语言不包含任何机制用于检测错误或对错误采取行动。然而,实施可能会尝试提供有关错误。参见第节3.1.
1.4 命名空间
Haskell中有六种名称:变量和施工人员表示数值;那些用于类型变量,类型构造函数、和类型类参考相关实体类型系统;和模块名称请参阅模块。命名有两个约束:
- 变量和类型变量的名称是开始的标识符带有小写字母或下划线;其他四种名称是以大写字母开头的标识符。
- 标识符不能用作类型构造函数的名称和同一范围内的类。
这些是唯一的约束;例如,国际可以同时是模块、类和构造函数的名称在单个范围内。
Haskell 98报告
顶部|后面|下一个|目录|功能索引
2002年12月