Haskellの森を歩く
Table of Contents
参考にしたもの
https://haskell.e-bigmoon.com/stack/tips/stack-upgrade.html https://www.ishiy.xyz/posts/2016-02-28-haskell-docker.html
stack
Haskellのビルドツール
インストール
curl -sSL https://get.haskellstack.org | sh
パスを通す
export PATH=~/.local/bin:$PATH
反対に export PATH=$PATH:~/.local/bin とすると、古い stack を参照してしまうため、注意が必要です。 https://haskell.e-bigmoon.com/stack/tips/stack-upgrade.html
GHCのインストール
stack setup
バージョンの確認
stack --version
アップグレード
stack upgrade
新しいプロジェクトの作成
stack new <project-name>
実行ファイルを作成
stack ghc <file-name.hs>
実行ファイルを作成して~/.local/bin/
にインストール
stack install
単体テストの実行
stack test
REPLの実行
プロジェクト内で使うと関連モジュールを自動的に読み込む
stack ghci
Dockerで実行
# プロジェクトを新規作成
stack new hello-docker simple
cd hello-docker
# Dockerの設定
cat << EOF >> stack.yaml
docker
enable: true
EOF
# イメージをプル
stack docker pull
※ビルドの前にSELinuxをいじる(Fedoraだけ?)
# SELinuxをいじる
su -c "setenforce 0"
動的リンクでビルド
# ビルド
stack build
# 実行
stack exec hello-docker
静的リンクでビルド
# ビルド
stack build --ghc-options='-optl-static -optl-pthread'
# 実行
#stack exec hello-docker
alpineで実行
# alpineをプル
docker pull alpine
# 静的リンクでビルドしたバイナリをコピー
cp hello-docker/.stack-work/install/x86_64-linux-dkda49f7ca9b244180d3cfb1987cbc9743/lts-10.4/8.2.2/bin/hello-docker ./
# ディレクトリ作成
mkdir haskell-hello-docker
cd haskell-hello-docker
# Dockerfileを作成
cat << EOF > Dockerfile
FROM alpine:latest
COPY hello-docker /usr/bin
CMD sh
EOF
# ビルド
docker build -t haskell-hello-docker .
# 実行
docker run -it --rm haskell-hello-docker hello-docker
IHaskell
https://github.com/gibiansky/IHaskell
jupyter notebookでHaskellが使えます
fedora 26 でインストール
依存するライブラリをインストール
# C++
sudo dnf install -y gcc-c++
# C library
sudo dnf install -y \
libiw.so.29 \
file-devel \
blas-devel \
lapack-devel \
cairo-devel \
pango-devel \
zeromq-devel
curl -sSL https://get.haskellstack.org/ | sh
git clone https://github.com/gibiansky/IHaskell
cd IHaskell
pip3 install -r requirements.txt
stack install gtk2hs-buildtools
stack install --fast
ihaskell install --stack
実行
stack exec jupyter -- notebook