トップ OSS紹介 Haskell

Haskell

NRIのOpenStandiaが提供するHaskell最新情報

バージョンアップ情報

Haskell情報

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はコンパイル時に特に強力な型付けを行い、巨大なクラスの単純ミスを排除できます。この強力な型付けにより、コアダンプが抑止され、整数をポインターとして扱ったり、Nullポインターを参照したりする可能性がありません。

型推論

型を明示的に記述しない場合は、型推論により型付けが行われます。型推論により1つの型に限定できないような場合には、コンパイルエラーが発生するので、明示的な型宣言が必要です。

遅延評価

Haskellでは、関数の引数が実際に利用されるまで評価されない「遅延評価」で動作します。これにより、評価が必要のない値の計算量を低減したり、値の再計算を繰り返したりする必要がなく、処理の効率化が行われます。多くの言語では関数の引数が利用される前に評価される「正格評価」で動作しますが、Haskellでも必要に応じて正格評価も実現することができます(正格評価の場合のほうが効率的である場合など)。

純粋関数型言語

Haskellは参照透過性が成り立つ関数型言語、すなわち純粋関数型言語と呼ばれます。一般的な手続き型言語のような変数の値の変更は禁止されており、代入という概念がありません。
一方、モナド構文の do ブロックを利用することで関数型言語でありながら、あたかも手続き型言語のような記述が可能となります。

同時実行性

標準ライブラリだけで簡単にスレッドによる並列プログラムや非同期通信を実現することができます。

パッケージ

Haskellへのオープンソース貢献は活発です。公開パッケージサーバー上で幅広いパッケージが無料で利用可能です。

動作環境

以下のプラットフォームでは、Haskellツールチェーン(GHC、Cabal、Stack等)をインストールする方法が提供されています。

  • Linux
    • Ubuntu
    • Debian
    • Fedora
    • RHEL/CentOS
    • Mint
    • Gentoo
    • Arch Linux
    • Generic
  • Mac OS X 10.8 以降
  • Windows

Haskellのライセンス

HaskellのオープンソースコンパイラであるGlasgow Haskell Compiler (GHC)はThe Glasgow Haskell Compiler Licenseの元で公開されています。このライセンスは修正BSDライセンスとほぼ同等の内容で、無保証であることの明記と著作権およびライセンス条文の表示を条件に、オブジェクトコードの自由な改変・頒布が認められています。

製品ダウンロード

公式サイトでは、下記3通りのインストール方法が紹介されています。

Minimal installers

システムのパッケージマネージャーを使用してコンパイラ(GHC)とビルドツール(CabalやStack)をインストールする方法です。
場合に応じて、追加のビルドツールをインストールする必要があります。

Stack

Stackコマンドをインストールする方法です。プロジェクトごとにHaskellの依存関係を自動的に管理できます。

Haskell Platform

オールインワン型のインストーラーを用いる方法です。インストール後、Haskellのプログラムをビルドするために必要なものが一式揃います。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

  • PHP

    PHP

    PHP(ピーエイチピー)とは、サーバサイドで動作するウェブアプリケーションの開発に適した、スクリプト言語のオープンソースソフトウェアです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。