言語拡張
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/04 02:47 UTC 版)
「Glasgow Haskell Compiler」の記事における「言語拡張」の解説
Haskellの言語標準には幾つかの拡張が提案されている。これらの言語拡張は言語仕様では記述されていない機能を提供するか、既存の構造を再定義している。これらの言語拡張は全てのHaskell処理系が対応しているわけではない。言語拡張を記述し、将来の言語仕様に含めるものを選択する継続的な努力が行われている。 GHCが対応している言語拡張は以下の通りである。 ボックス化されていない型と操作。これらはヒープへのポインタの間接参照や遅延評価の可能性を除外して、基礎となるハードウェアのプリミティブ型を表す。数多くのコードは、これらの型を使用することにより大幅な高速化が可能である。 値、パターン・バインディング、データ型領域の正格評価を指定する機能。 モジュール・パターン・リスト内包表記・演算子・レコード・タプルの操作により便利な構文。 矢印を使用して計算するための糖衣構文と再帰的に定義されたモナドの値。これらはどちらも言語標準のモナドのdo-notationを拡張している。 Template Haskell(英語版)は、コンパイル時のメタプログラミングのためのシステムである。プログラマは抽象構文木の形でHaskellのコードを生成する式を書くことができる。これらの式はコンパイル時に型検査が行われる。生成されたコードはプログラマによって直接書かれたように見える。定義に反映するための能力と共に、更なる言語拡張のための強力なツールを提供する。 擬似引用(英語版)を利用することで、ユーザーは式とパターンのための新しい具体的な構文を定義することができる。この機能は、Haskellで書かれたメタプログラムが、Haskell以外で書かれたコードを操作する場合に便利である。 ジェネリック型クラスは、操作する型の代数的構造だけで関数を指定する。 複数のコアを利用した式の並列評価。この機能では明示的にスレッドを指定する必要はない。プログラマが提供する注釈に基づいて、暗黙的に作業の分散が行われる。 インライン展開などの最適化を指示するコンパイラプラグマと、特定型のための特殊関数。 変更可能な項書き換え。プログラマはある1つの式を、等価なより効率的に評価された式に置き換える方法を記述するルールを提供することができる。この機能は、アプリケーションレベルのコード全体で、データ構造ライブラリの中心部を効率化するために利用されている。
※この「言語拡張」の解説は、「Glasgow Haskell Compiler」の解説の一部です。
「言語拡張」を含む「Glasgow Haskell Compiler」の記事については、「Glasgow Haskell Compiler」の概要を参照ください。
- 言語拡張のページへのリンク