Haskell (日本語) - ArchWiki

# Haskell (日本語)

Haskell は多目的の、純関数型プログラミング言語です。

## インストール

Haskell は Linux でネイティブに実行することができるマシンコードを生成します。(コンパイル済みの) バイナリのソフトウェアを実行するのに特別なものは必要ありません。公式リポジトリや ArchHaskell で提供されているソフトウェアと同じです。一方、AUR のパッケージやソースコードは、ソフトウェアをビルドするのにコンパイラを必要とします。

コンパイラをインストールするだけで Haskell のソースコードがビルドできるようになります。Haskell での開発を始めるためのツールのコンプリートセットである Haskell-Platform もあります。

### コンパイラ

Haskell のソースコードをネイティブコードにビルドするには、コンパイラをインストールする必要があります。複数の 実装 が存在しますが、一番よく使われている (事実上のリファレンス実装となっている) のは GHC (Glasgow Haskell Compiler) です。公式リポジトリの ghc でインストールができます。

次のファイルを用意して:

    Main.hs

    main = putStrLn "Hello, World"

以下を実行して試すことができます:

    $ ghc Main.hs
    $ ./Main

    Hello, World

### Haskell Platform

Haskell での開発を簡単に始められる、haskell-platform バンドルは次のように説明されます:

  Haskell のプログラミングを始める一番簡単な方法です。立ち上げて動作させるのに必要な全てが入っています。次のように考えて下さい "Haskell: batteries included" (電池付属)。

AUR のパッケージが存在 (haskell-platform) しますが、公式リポジトリから以下のパッケージをインストールすることに置き換えられます:

- ghc (ghc) — コンパイラ
- cabal-install (cabal-install) — Cabal と Hackage のコマンドラインインターフェイス
- haddock (haddock) — ドキュメントを生成するためのツール
- happy (happy) — パーサジェネレータ
- alex (alex) — 字句解析器ジェネレータ

## Haskell パッケージの管理

Haskell ライブラリや実行可能ファイルの多くはパッケージにまとめられています。どれも Hackage から利用することが可能です。パッケージをインストール・管理する方法は複数存在します。あまり一般的でない方法もこのセクションで説明を行います。

推奨されるワークフローは以下の通りです:

- 公式リポジトリまたは ArchHaskell repository は Hakell パッケージの第一のソース (ここでの or は排他)
- cabal-install (あるいは sandbox を使用) は Haskell 開発用
- Arch User Repository は他で得られないパッケージのために使用

cblrepo は Linux ディストリビューションの Haskell パッケージを管理するために使用するツールです。これのラッパーである、cabal2pkgbuild-git は Hackage パッケージから PKGBUILD を作成することができます。新しい Haskell パッケージを作成することについては Haskell Package Guidelines に詳しく記載があります。

### 方法ごとのプラス面とマイナス面

以下の表はそれぞれのパッケージ管理方法のメリットとデメリットのまとめです。

方法 | 良い点 | 悪い点
--- | --- | ---
公式リポジトリ | ArchLinux 開発者が運営、パッケージのバージョンの整合性に問題なし、コンパイル済み | 利用できるパッケージの数が限られる
ArchHaskell リポジトリ | ArchHaskell グループが運営、パッケージのバージョンの整合性に問題なし、コンパイル済み | 使用するのに手動で設定が必要
cabal-install | 全てのパッケージが利用可能 | インストール先がホームフォルダ、cabal-install はパッケージマネージャではない、パッケージのバージョンの整合性に問題がある可能性 (別名 cabal hell)
Arch User Repository | 始めるのが簡単 | パッケージのメンテナンスがなくなる可能性、パッケージのバージョンの整合性に問題がある可能性

### ArchHaskell リポジトリ

詳細は ArchHaskell を見て下さい。

### cabal-install

Warning: 非推奨の方法です。cabal-install はパッケージマネージャではないことを肝に銘じて下さい。
Note: Haskell 開発での唯一の例外は cabal-install が推奨されるツールだということです。バージョン 1.18 から、cabal には sandbox システムが装備され異なるバージョンのライブラリをプロジェクトごとに分離することができます。cabal sandbox のイントロダクションは ここ にあります。

#### 準備

公式リポジトリから cabal-install をインストールしてください。

パスを指定しないでインストールした実行可能ファイルを実行するには、cabal のバイナリフォルダ `~/.cabal/bin` を `$PATH` 変数に追加する必要があります。シェルの設定ファイルに以下の行を記述することで追加できます (bash の場合 `~/.bashrc`、zsh の場合 `~/.zshrc`):

    PATH=$PATH:~/.cabal/bin

#### パッケージのインストール

    $ cabal update
    $ cabal install <pkg>

`-j` を追加することで並列コンパイルができます。また、`--global` フラグを使うことでシステム全体にパッケージをインストールすることもできますが、これは非推奨です。ユーザーごとのインストールでは、全てのファイルは `~/.cabal` に配置されライブラリは `~/.ghc` に登録されるので、フォルダを削除することで簡単にクリーンアップすることができます。システム全体にインストールすると、ファイルがファイルシステムに散らばってしまい管理するのが難しくなります。

#### パッケージの削除

パッケージの削除を簡単に行う方法はありません。

Category:

- Programming language (日本語)