Haskell勉強会

関数型プログラミングの学習日記

Haskellのインストール Stack編

OCamlの本を読み終えて、積読になってたHaskellの本を読み始めました。

 

haskell.hatenablog.com

 

関数プログラミング実践入門」(増補改定)という本です。

以前読んだときは、なんか分かりづらい話だな!と思いましたw

関数型プログラミングの本を数冊読んだ今、再読してみたら、分かりやすい説明だと思えるようになってましたw

(まあ、以前の自分がポンコツだっただけの話ですね!汗)

 

以前、WindowsパソコンにHaskellの実行環境をインストールしたときは、公式の「Haskell Platform」というインストーラーを使いました。

 

haskell.hatenablog.com

 

本書では「Stack」というHaskellのパッケージ管理ツールを使って、Haskellをインストールする方法が紹介されてました。

 

(p.47)

Haskell環境の構築

Haskellのプログラミング環境を整えるには、Stack(http://docs.haskellstack.org/en/stable/README/)を使うのが一般的です。

Stackは、コンパイラとしてGHCを利用、ビルドツールであるcabal-installをラップし、「依存関係に問題を起こすことなく正常にビルドできることが保証されたパッケージ群」としてメンテナンスされているStackageを利用する、便利な開発ツールとなっています。

PythonのVirtualenvやRubyのRVM(Ruby Version Manager)、rbenvのようなものをイメージしてください。

 

以降、本書で解説に使うのは「Stackage LTS Haskell 7.*」系です。

GHCのバージョンとしては「8」になります。

ただし、GHCのバージョンによって大きく変化があるような部分については本書では扱わないので、あまり気にしなくても大丈夫です。

 

今回は、Stackを利用して、Haskellをインストールしてみたいと思います。

 

https://docs.haskellstack.org

The Haskell Tool Stack

How to install

On Windows, you can download and install the Windows 64-bit Installer.

For detailed instructions and downloads, including many additional operating systems, check out the install and upgrade page.

 

Stackは、Windows用のインストーラーが用意されていました。

 

https://docs.haskellstack.org/en/stable/install_and_upgrade/

Windows

We recommend installing to the default location with these installers, as that will make stack install and stack upgrade work correctly out of the box.

 

64ビット版のインストーラーをダウンロードしてみます。

 

Stackのインストール

2018年9月現在では、「stack-1.7.1-windows-x86_64-installer.exe」というインストーラーでした。

これをダブルクリックして、実行します。

インストールが始まって、デフォルトの設定を選んで進んだら、あっさりインストールが完了しました!

 

f:id:hamamuratakuo:20180923204122p:plain

そのまま「Next」をクリック。

 

f:id:hamamuratakuo:20180923204155p:plain

そのまま「Install」をクリック。

 

f:id:hamamuratakuo:20180923204216p:plain

あっという間にインストール完了!

 

動作確認

それでは、Stackの動作確認を行なってみます。

(うまく動かない場合は、念のためパソコンを再起動しておくと良いかも?)

 

(p.48)

●対話的インタープリタGHCiの基本的な使い方

対話的インタープリタGHCiを起動してみましょう。

Stackをインストールした環境を起動してください。

まず以下のように実行すると、GHCがインストールされます。

$ stack setup

 

コマンドプロンプトの画面を開いて、「stack setup」と入力したら、GHCHaskellの本体)のインストールが自動的に開始されました。

 

f:id:hamamuratakuo:20180923205250p:plain

 

(p.48)

次に、ターミナル上でstack exec ghciとタイプして[Enter]を押すと、対話的インタープリタGHCiが起動します。

なお、setup時にstackの設定ファイルが作成されており、この設定ファイルに従い、同じくsetup時にインストールされたGHCが適切に選択されます。

$ stack exec ghci

 

コマンドプロンプトの画面を開いて、「stack exec ghci」と入力しました。

そしたら、「Updating package index Hackage」という更新作業?がドーッと始まって、しばらく待ってたら、GHCiインタープリタのプロンプトが表示されました。

 

f:id:hamamuratakuo:20180923210117p:plain

 

バージョンの確認

Haskellのバージョン確認

コマンドプロンプトで「stack ghc -- -V」と入力。

→本日時点では、「8.4.3」になってました。

 

Stackのバージョン確認

コマンドプロンプトで「stack --version」と入力。

→本日時点では「1.7.1」になってました。(さっきダウンロードしたやつですね)

 

f:id:hamamuratakuo:20180923210642p:plain

 

Haskellの動作確認

Prelude> というところに「1+2」と入力して[Enter]キーを押してみます。

「3」と表示されたら、Haskellの動作確認はOKです。

 

f:id:hamamuratakuo:20180923210855p:plain

 

GHCiインタープリタの呼び出し方法についてですが、

以前、Haskell PlatformでWindowsHaskellをインストールしたときは、コマンドプロンプト画面で「ghci」と入力するだけで起動できました。

今回、StackでWindowsにHaskelをインストールした場合は、コマンドプロンプト画面で「stack exec ghci」と入力しないとGHCiインタープリタが起動しませんでした。

 

ちょっとだけですが、タイプ量が増えて面倒くさくなりましたね?

(まあ、いいかw)

 

Haskellのバージョン切り替え方法?

本書は、Haskellのバージョン8.0系を使った説明なので、最新の8.4系ではなく古い8.0系にしたかったのですが、自動的にインストールされたHaskellは最新の8.4.3になってました。

 

もしこれで不都合があれば、Haskellのバージョンを切り替える方法も調べてみたいと思います。

(いざとなれば、Haskell Platformで指定のバージョンを強制的にインストールしちゃえばOK?)

 

そもそもStackって何?

Stackを使えば一体何かできるのか?

今のところ全然知らないので、少しずつ慣れていきたいと思います。

 

qiita.com

 

qiita.com

 

stack は Haskell で開発を効率良く行うためのビルドツールです。(ghc のインストールやパッケージ管理まで全て行なってくれます) 

 

haskell.e-bigmoon.com

 

Stackageとは?

https://www.stackage.org/

 

f:id:hamamuratakuo:20180923213633p:plain

 

haskell.e-bigmoon.com

 

Stackage は Stable Hackage の略で、どんな組み合わせでも依存関係でエラーが起きないように調整されたパッケージの集合 (スナップショット) を提供しています。

 

qiita.com

 

Hackage...Haskellのライブラリを集めたアーカイブ.

PerlでいうCPANRubyでいうRubygems、Nodeでいうnpm的なやつです.

 

  • Hackage:Haskellのライブラリー集
  • Stackage:依存関係が調整されたHackage

ということみたいです。

 

本書でも、StackやStackageについて、少し説明があったので、必要になったら使い方を学んでみたいと思います。

 

 

とりあえず、Stackを使ってWindowsHaskellの実行環境を用意することができました。

本書を読んで、Haskellの復習を進めてみたいと思います。