9

識別子に Unicode 文字 (非ラテン語) を使用して、Haskell で教育用コードを書きたかったのです。(これにより、ラテン文字を使用しない英語以外の自然言語の話者にとって、識別子が美しく自然に見えるようになります。) そこで、これを可能にする適切な Haskell 実装を見つけることに着手しました。

しかし、この機能は言語仕様のどこで指定されているのでしょうか? 適合する実装を探すときに、この機能をどのように参照すればよいですか? (実際に Unicode 識別子をサポートすることが知られている Haskell 実装はどれですか?)

ある Haskell 実装では Unicode 識別子を持つ私のコードを受け入れましたが、別の実装では受け入れられなかったことが判明しました。おそらく言語機能スイッチの形で、私のコードのこの要件を形式化する方法があれば、私または他の誰かが私のコードを実行しようとすると、彼の実装が欠落しているかどうかがすぐに明らかになるでしょう.必要な機能であるため、別の機能を探す必要があります。(この機能の wiki ページもあるかもしれません。「Unicode 識別子」では、既存の実装のどれがそれをサポートしているかを一覧表示し、必要な場合にどこに行けばよいかを知ることができます。)

(ところで、私はこの質問に「構文」タグを付けましたが、実際には言語の構文よりも低いレベルの字句解析のレベルの問題であると認識しています。字句解析の機能のタグはここにありますか言語の構文仕様の機能ではなく、言語のレベル?)

4

1 に答える 1

10

オンライン レポートでは、これがLexemesの下に記載されています。また、「Haskell は Unicode 文字セットを使用しています。ただし、ソース プログラムは現在、Haskell の以前のバージョンで使用されていた ASCII 文字セットに偏っています。」

実際のコンパイラは、Unicode 識別子をサポートしている場合とサポートしていない場合があります。GHC はそうしますが、Unicode コードポイントは ASCII 文字と同じ規則に従わなければならないことに注意する必要があります: 型は、大文字またはタイトルケースとして分類されるコードポイントで始まり、変数は小文字として分類されなければなりません (ただし、事実上、これはアルファベットに緩和されており、そうではありません大文字/タイトルケース; これは言語委員会に説明を求める価値があるかもしれません)、演算子は句読点または記号でなければなりません。(これは、たとえば、大文字/タイトルケースである他のスクリプトの文字を前に付けない限り、アラビア語で型を宣言できないことを意味します。)

Unicode サポート情報の収集に関しては、それを提供する単一のページを知りませんが"unicode"Haskell Wikiで検索すると、多くの Haskell コンパイラでの Unicode サポートに関する情報が見つかります。

于 2011-04-01T18:58:37.583 に答える