Haskell 98报告
顶部|后面|下一个|目录|功能索引

1  介绍

Haskell是一个通用的、纯功能的编程语言融合了许多最新的创新编程语言设计。Haskell提供高阶函数,非限定语义,静态多态类型,用户定义代数数据类型、模式匹配、列表理解、模块系统、一元I/O系统和一组丰富的原始数据类型,包括列表,数组、任意和固定精度整数以及浮点数字。哈斯克尔既是巅峰并巩固了多年来对非严格泛函的研究语言。

此报表定义Haskell程序的语法和此类含义的非正式抽象语义程序。我们作为实施离开依赖于Haskell程序的方式操纵、解释、编译等。这包括以下问题编程环境的性质和未定义程序返回的错误消息(即正式评估为_ | _的项目)。

1.1  程序结构

在本节中,我们将描述Haskell,以及它与报告的其余部分。

  1. 在最顶层,Haskell程序是一个集合属于模块,详见第章5模块提供控制名称空间的方法以及在大型程序中重用软件。

  2. 模块的顶层包含声明,其中有几种,均已描述在第章中4.声明定义普通值、数据类型、类型等内容类和固定信息。

  3. 下一个较低级别是表达,已描述在第章中。表达式表示价值并且有一个静态类型; 表达是Haskell编程“在小范围内”

  4. 最底层是哈斯克尔的词汇结构,定义见第章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中有六种名称:变量施工人员表示数值;那些用于类型变量,类型构造函数、和类型类参考相关实体类型系统;模块名称请参阅模块。命名有两个约束:

  1. 变量和类型变量的名称是开始的标识符带有小写字母或下划线;其他四种名称是以大写字母开头的标识符。
  2. 标识符不能用作类型构造函数的名称和同一范围内的类。
这些是唯一的约束;例如,国际可以同时是模块、类和构造函数的名称在单个范围内。


Haskell 98报告
顶部|后面|下一个|目录|功能索引
2002年12月