哈斯克尔有几种句法形式



Norvig大师曾说过:

Scheme的美妙之处在于,完整的语言只需要5个关键字和8种句法形式。相比之下,Python有33个关键字和110种语法形式,Java有50个关键字和133种语法形式。所有这些括号可能看起来很吓人,但Scheme语法具有简单和一致性的优点。(有人开玩笑说,"Lisp"代表"很多令人恼火的愚蠢括号";我认为它代表"Lisp在语法上是纯粹的"。(

那么Haskell是如何进行比较的呢?

对于Haskell 98,可能与Python或Java的数量级大致相同。

很难确切地确定什么构成了"句法形式"。例如,看起来Java计数可能是从表达式级别及以上(即"标识符"是原子的级别(的扩展BNF规则的数量中获取的,就像在这个Java SE语法页面上列出的大约120个一样。这似乎也与Scheme上的这一页一致,我在这里计算了大约14个,忽略了似乎完全与标识符和文字的词汇结构有关的规则。我们在这里使用近似,其中8和14应该被认为是相等的。

因此,根据这个标准,我从Haskell 98报告第9.5节上下文无关语法(似乎与Java引用处于大致相同的抽象级别(中得到的快速而肮脏的计数是76。同样,我们在这里使用近似,其中76、110和133都应该被认为是相等的,所以Haskell=Python=Java。

同样可以肯定的是,根据注释,GHC特定的语法(杂注、基元和许多扩展(很容易将这一数量增加一倍或三倍。

话虽如此,我不确定这个指标有多有用。我不否认Scheme是一种美丽的语言的说法,但我认为Scheme之所以是一种美好的语言,是因为(或主要是因为(它有少量的关键词和句法形式,这充其量是一种过分简单化的说法。