マスターノーヴィッグはかつて言った:
Schemeの優れた点は、完全な言語で必要なのは5つのキーワードと8つの構文形式だけであるということです。比較すると、Pythonには33個のキーワードと110個の構文形式があり、Javaには50個のキーワードと133個の構文形式があります。これらの括弧はすべて威圧的に見えるかもしれませんが、Scheme構文シンプルさと一貫性の利点があります(「LISP」は「刺激の多い愚かな括弧」を表すと冗談を言う人もいます。「LISPは構文的に純粋」を表すと思います。)
では、Haskellはどのように比較されますか?
Haskell 98の場合、おそらくPythonまたはJavaとほぼ同じ桁です。
「構文形式」を構成するものを正確に判断することは困難です。 Javaカウントは、式レベル以上(つまり、「識別子」がアトムであるレベル)の拡張BNFルールの数から取得された可能性があります)のように見えます this Java SE syntax page 120程度がリストされています。これもこの Schemeのページ と一致しているようです識別子とリテラルの字句構造に完全に関係していると思われるルールを無視して、約14と数えます。ここでは、8と14が等しいと見なされるべき近似を扱います。
したがって、その測定基準により、Haskell 98レポートセクション9.5 Context-Free Syntax(Java参照)とほぼ同じ抽象化レベルにあるようです)からの私の迅速で汚いカウントは76です。繰り返しになりますが、ここでは、76、110、133はすべて等しいと見なす必要がある近似値を使用しているため、Haskell == Python == Java。
コメントのとおり、GHC固有の構文(プラグマ、プリミティブ、および多くの多くの拡張機能)は、その数を簡単に2倍または3倍に増やすと言っても安全です。
とはいえ、この指標がどれほど有用かはわかりません。私は、Schemeが美しい言語であるという主張に異議を唱えることはしませんが、Schemeが美しい言語であるという主張は、少数のキーワードと構文形式を持っているため(せいぜい)、せいぜい、極端に単純化しすぎているためです。