【elm超超超入門】Macでelmの環境を構築する

elmとは

functional reactive languageなやつ(僕も分かってない).

Elm

全然分かってないので,とりあえず手を動かしながら理解しようと思います.そのために環境の導入方法をメモ. 上記の公式にpkgが置いてあるのだけど,今回はソースからビルドしようと思います.

前提

Haskellの環境は構築済み.私の場合はGHC7.8.3を使っています.

cabal install

まずはcabalをアップデート

$cabal update
=> 
ownloading the latest package list from hackage.haskell.org

次にcabal-installをインストール

$cabal install cabal-install
=> 
Resolving dependencies...
Downloading Cabal-1.22.3.0...
[ 1 of 79] Compiling Distribution.Compat.Binary
(中略)
Installed cabal-install-1.22.3.0

ここでcabal install -j elm-compiler-0.15 elm-package-0.5 elm-make-0.1.2をしたところ

$cabal install -j elm-compiler-0.15 elm-package-0.5 elm-make-0.1.2
=>
Resolving dependencies...
In order, the following would be installed:
Diff-0.3.1 (new package)
ansi-wl-pprint-0.6.7.2 (new package)
(中略)
Use --force-reinstalls if you want to install anyway.

Use --force-reinstallsを文字を見て依存関係が怖くなったので,テスト用のディレクトリを作成しsandboxを使うことにしました.

$mkdir elm_test
$cd elm_test
$cabal sandbox init
$cabal install -j elm-compiler-0.15 elm-package-0.5 elm-make-0.1.2
=>
Resolving dependencies...
Notice: installing into a sandbox located at
/Users/alitaso/work/elm_test/.cabal-sandbox
Downloading Diff-0.3.1...
(中略)
Installed elm-make-0.1.2

引き続き必要なパッケージをインストールします.

$cabal install -j elm-repl-0.4.1 elm-reactor-0.3.1
=>
Resolving dependencies...
Notice: installing into a sandbox located at
/Users/alitaso/work/elm_test/.cabal-sandbox
Downloading HUnit-1.2.5.2...
(中略)
Installed elm-reactor-0.3.1

これで各種インストールは終わりです

PATHを追加する

elmをグローバルパッケージデータベースのほうにインストールしているのであれば

export PATH="$HOME/.cabal/bin:$PATH"

のようにPATHを追加してやればよいと思います.ただ今回はsandboxを利用したので,そちらのほうにPATHを通してやる必要があります.

export PATH="$HOME/elm_test/.cabal-sandbox/bin"

動作を確認する

elmのサンプルを試してみます

github.com

elm_testのディレクトリ以下で,対象のリポジトリをクローンしてきます.

$git clone https://github.com/evancz/elm-examples.git
$cd elm-examples
$elm-reactor

http://localhost:8000を見に行くと f:id:alice345:20150502204900p:plain

無事にelmが使えてるみたい.一安心.

所感

とりあえず公式に載ってるやつコピペで環境は作れました.

そして未だにelmをグローバル環境にインストールしていいものなのか判断がつかず心配.当分elmのコードはこのテストディレクトリ以下で書いていこうと思います.「sandbox使わなくても大丈夫だったよ!」という方がいましたら教えて頂けるとうれしいです.以前依存関係で意味分からなくなって環境構築をやり直したのが若干トラウマ.

サンプルがいっぱいあるようなのでそれを触りつつ,何か作れたらいいなぁと思います.

参考URL

alice345.hatenablog.com