Haskell の Windows へのインストールと Emacs モードの設定
Haskell は純粋関数型のプログラミング言語です。 今回は Haskell の Windows へのインストール、使い方および Emacs での設定について説明します。
Haskell とは
Haskell は関数型プログラミングをやるために作られたような言語で、 大きな特徴は次の 2 つです。- 純粋関数型言語
- 遅延評価
そんな中 Haskell は純粋関数型なので、本当に値が変更できません。 これは融通が利かないとも思われるかもしれませんが、 純粋に関数型でプログラミングできるだけの機能がそろっているとも言えます。
最近では C# の LINQ といったように関数型にとどまらず、高階関数を使った Stream 系のデータ処理が広がってきました。 そこでは必要になったときに初めて計算するという遅延評価になっていることが多いです。
これはメモリーの使用量を減らすなどのメリットがあってそうなっているのですが、 Haskell では全てで遅延評価となります。 こちらも関数型言語といわれる言語でもそこまで対応している言語はほとんどありません。
また、 Haskell はスクリプトとして動作させることもできますが、ソースコードをビルドして、実行ファイルを作るコンパイル型の言語です。ただ、コンパイル型といってもそんなに速いわけではありません。
Scala は JVM, F# は .NET というように新しい関数型言語の多くは仮想マシンで動作する言語が多いです。 新しい言語ではライブラリー等の環境が成熟していないといったデメリットがついて回るものなのですが、 JVM や .NET の言語ではそれがありません。
そういった意味では、 Haskell は学術的な意義の高い言語ですが、実用性という面ではこれからの言語だと思います。
インストール
Haskell には Haskell Platform というコンパイラーや開発ツールがセットになったものが用意されていて、インストーラーもあるので、インストールは簡単です。ダウンロード
以下のサイトからインストールする環境にあわせて 32 ビットまたは 64 ビット版のインストーラーをダウンロードします。
インストール
ダウンロードしたインストーラー(HaskellPlatform-YYYY.X.X.X-zzzz-setup.exe)を実行するとインストールが始まります。
インストール先を指定して、 ウィザードを続行すればインストールは完了です。
インストールすると "(インストール先)/bin" 以下にコンパイラー等の実行ファイルが格納されます。 bin フォルダーへの PATH の登録もインストーラーが行ってくれます。
使い方
bin フォルダー内の実行ファイルのうち、主に使うのは次の 3 つです。- GHCi : REPL(対話型)
- runghc : スクリプトとして実行
- ghc : コンパイラー
REPL(対話型) : GHCi
REPL は入力行をすぐ評価することができ、動作確認など開発時に使用します。
~/lang/hs $ ghci
GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> print "Hello world!"
"Hello world!"
Prelude> :quit
Leaving GHCi.
ghci で起動し、 :? でヘルプ、 :quit で終了します。Windows のスタートメニューから [Haskell Platform YYYY.X.X.X] → [WinGHCi] を選択すると WinGHCi が起動します。こちらは多少 GUI で操作できる GHCi です。

runghc : スクリプトとして実行
まず、 ソースファイルを用意します。 Haskell ではファイルの拡張子には hs が使われます。hello.hs :
main = print "Hello world!"スクリプトとして使う場合には、 runghc にソースコードを渡して実行します。
~/lang/hs $ runghc.exe hello.hs
"Hello world!"
スクリプトとして実行する場合 runhaskell(.exe) も使えます。微妙な違いはありますが、ほぼ同じものです。
GHC : コンパイラー
GHC(Glasgow Haskell Compiler)ではソースファイルをコンパイルして実行ファイルを作ることができます。~/lang/hs $ ghc hello.hs [1 of 1] Compiling Main ( hello.hs, hello.o ) Linking hello.exe ... ~/lang/hs $ ./hello.exe "Hello world!"実行ファイル名はデフォルトでは 「ソースファイルのベース名 + ".exe"」 となります。 指定したい場合は -o オプションを使います。
その他
bin フォルダー内のその他の実行ファイルについても簡単に紹介します。コマンド | 機能 | 参考 |
---|---|---|
ghc-pkg | Haskell のパッケージ管理ツール。 パッケージ管理には cabal も使います。 cabal の方は lib/extralibs/bin フォルダーにあり、こちらにも PATH は通っています。 |
Haskellのパッケージ管理について調べてみた - りんごがでている |
haddock | ソースコードからドキュメントを作成。 Haskell 版の Doxygen や JavaDoc のようなものです。 |
Haskell の Javadoc, Haddock を使う - 一歩前進 |
hp2ps | ヒープ領域のプロファイラー。 | 本物のプログラマは Haskell を使う - 第 46 回 ヒープ・プロファイラで領域漏れを探る: ITpro |
hpc | Haskell Program Coverage: カバレッジ(テストでソースコードをどの程度実行できたか)の計測ツール。 | Haskell program coverage - HaskellWiki |
hsc2hs | C のコードを Haskell から利用するための補助ツール | 12.2. C コードへの Haskell インタフェースを書く: hsc2hs |
Emacs モードの設定
Hakell 用のパッケージはいろいろありますが、最低限必要なのは haskell-mode です。 これはパッケージマネージャーから簡単にインストールすることができます。 インストールすると hs などのファイルを開いた時に haskell-mode になります。ただし、そのままではインデントをしようとすると変なエラーが出ます。 これはインデントのモードを設定していないためなので、 モードを 3 つの中から選んで、設定しておく必要があります。
モード | 説明 |
---|---|
haskell-simple-indent | 単純な TAB によるインデント |
haskell-indent | コードの構造を考慮したインデント |
haskell-indentation | haskell-indent に加え、 [RET] や [DEL] のキーを拡張 |
これらのモードにする場合は turn-on-xxxx の関数を haskell-mode になった時に呼び出すようにします。
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)Emacs では「改行 + インデント」はC-jを使うのが普通だと思うので、個人的にはhaskell-indent でいいと思います。 なお、 インデントに関しては hi2 というパッケージもあり、インデントルールは同じで、もう少し複雑な動きをします。 使う場合は hi2 をインストールして、同じような設定を書きます。
(add-hook 'haskell-mode-hook 'turn-on-hi2)
- 関連記事
-
- Mirah : 静的型付けを持った Ruby 風の JVM 言語
- Julia : スクリプト言語最速? 手軽さと速さを求めた科学技術計算向け言語
- Haskell の Windows へのインストールと Emacs モードの設定
- Lua の Windows へのインストールと使い方
- pip でのインストール時に UnicodeDecodeError が出た場合の解決方法
Facebook コメント
コメント