Haskellの概要
Haskell(ハスケル)とは、非正格評価で動作する純粋関数型言語です。
1987年当時、非正格評価の関数型言語にはリサーチ・ソフトウェア社のMiranda(非オープンソース)を筆頭に多数が乱立する状態になっており、オープンな標準仕様というものがありませんでした。このような状況から純粋関数型言語のオープンな標準仕様を作成するための委員会が発足し、1990年にはHaskell 1.0 が作成されました。その後、Haskell 98、Haskell 2010など言語仕様の拡張が行われ、現在に至ります。
Haskellの特徴の一つである関数型言語とは、C言語やJavaといった一般的な手続き型言語のように、複数のステートメントを順次実行していくのではなく、複数の関数を組み合わせることだけで処理を行います。主な関数型言語としては、LISPやScalaがあります。
"純粋"とは、参照透過性があるという意味です。参照透過性がある関数型言語の場合、宣言した後の変数の値は常に一定で、不変となります。いわゆる代入操作がないことから、宣言型言語とも呼ばれます。
また、関数の引数は遅延評価(非正格評価)で動作するという特徴があります。
Haskellと同様に、強い静的型付けの純粋関数型プログラミング言語として分類されているものには、CleanとIdrisがあります。
Haskell のオープンソース実装として有名なものに、Glasgow Haskell Compiler(GHC)があります。GHCは最新のHaskell 2010 に準拠しており、さまざまなプラットフォームで利用可能なバイナリが提供されています。
Haskellの特徴
静的型付け | 関数型言語の中でも、Haskellはコンパイル時に特に強力な型付けを行い、巨大なクラスの単純ミスを排除できます。この強力な型付けにより、コアダンプが抑止され、整数をポインターとして扱ったり、Nullポインターを参照したりする可能性がありません。 |
---|---|
型推論 | 型を明示的に記述しない場合は、型推論により型付けが行われます。型推論により1つの型に限定できないような場合には、コンパイルエラーが発生するので、明示的な型宣言が必要です。 |
遅延評価 | Haskellでは、関数の引数が実際に利用されるまで評価されない「遅延評価」で動作します。これにより、評価が必要のない値の計算量を低減したり、値の再計算を繰り返したりする必要がなく、処理の効率化が行われます。多くの言語では関数の引数が利用される前に評価される「正格評価」で動作しますが、Haskellでも必要に応じて正格評価も実現することができます(正格評価の場合のほうが効率的である場合など)。 |
純粋関数型言語 | Haskellは参照透過性が成り立つ関数型言語、すなわち純粋関数型言語と呼ばれます。一般的な手続き型言語のような変数の値の変更は禁止されており、代入という概念がありません。 一方、モナド構文の do ブロックを利用することで関数型言語でありながら、あたかも手続き型言語のような記述が可能となります。 |
同時実行性 | 標準ライブラリだけで簡単にスレッドによる並列プログラムや非同期通信を実現することができます。 |
パッケージ | Haskellへのオープンソース貢献は活発です。公開パッケージサーバー上で幅広いパッケージが無料で利用可能です。 |
Haskellの動作環境
以下のプラットフォームでは、Haskellツールチェーン(GHC、Cabal、Stack その他等)をインストールする方法が提供されています。
- Linux
・Ubuntu
・Debian
・Fedora
・RHEL/CentOS
・Mint
・Gentoo
・Arch Linux
・Generic - Max OS X 10.8 以降
- Windows(32/64 bit)
Haskellのライセンス
Haskell のオープンソースコンパイラである Glasgow Haskell Compiler(GHC)はThe Glasgow Haskell Compiler Licenseの元で公開されています。このライセンスは修正BSDライセンスとほぼ同等の内容で、無保証であることの明記と著作権およびライセンス条文の表示を条件に、オブジェクトコードの自由な改変・頒布が認められています。
Haskellのダウンロード
ダウンロードサイトでは、下記3通りのダウンロード方法が紹介されています。
- Minimal installers
システムのパッケージマネージャーを使用してコンパイラ(GHC)とビルドツール(CabalやStack)をインストールする方法です。
場合に応じて、追加のビルドツールをインストールする必要があります。 - Stack
Stackコマンドをインストールする方法です。プロジェクトごとにHaskellの依存関係を自動的に管理できます。 - Haskell Platform
オールインワン型のインストーラーを用いる方法です。インストール後、Haskellのプログラムをビルドするために必要なものが一式揃います。
https://www.haskell.org/downloads/
Haskellの公式サイト
Haskellのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。