垂れ流す思考

思考を垂れ流しアウトプットを行うブログ

すごいHaskell楽しく学ぼう!イントロ〜環境構築

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

すごいHaskell楽しく学ぼう!Memo

噂のすごいH本を読んで楽しくHaskellを学んでいこうというコンセプト

イントロダクション Hakell

純粋関数型プログラミング言語
普段使っているのは命令型プログラミング
- 命令型 -> 何をするかをコンピュータに伝える - 関数型 -> 何であるかをコンピュータに伝える

変数の値を設定したら後から変更できない

純粋関数型言語では、関数は副作用を持ちません

関数が同じ引数を渡されたとき、必ず同じ結果を返すことを参照透明性という

Haskelは怠け者です。特にそうしろと言われた場合を除いては、
結果が必要になるまで関数を実行しないのです。

上記を遅延評価と呼ぶ
参照透明性が保証されているから実現できている

遅延評価のため、見かけ上の無限を扱える

Haskell静的型付け言語であり、型推論を持っている

環境構築

MacOS X 10.13.6

すごいH本ではHaskell Platformを勧めている

でもstackがいいと聞いたのでそっちで構築
https://haskell.e-bigmoon.com/stack/

公式ドキュメントをみてcurlで導入してみました

% curl -sSL https://get.haskellstack.org/ | sh
Using generic bindist...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   619    0   619    0     0    725      0 --:--:-- --:--:-- --:--:--   724
100 7524k  100 7524k    0     0   408k      0  0:00:18  0:00:18 --:--:--  127k
Installing Stack to: /usr/local/bin/stack...

-------------------------------------------------------------------------------

Stack has been installed to: /usr/local/bin/stack

NOTE: You may need to run 'xcode-select --install' to set
      up the Xcode command-line tools, which Stack uses.

そういえばXcodeコマンドラインツール入れてなかったな〜

Stackで使うそうなので導入

ついでにpathも通せとお達し

# haskell stack
export PATH="$HOME/.local/bin:$PATH"
eval "$(stack --bash-completion-script stack)"

完了したら初回は stack update
そこそこ時間がかかる

終わったらHOMEに追加された
./.stack/config.yamlに名前とか書いておしまい

適当なディレクトリでstack new [project name]して
H本で使うっぽい対話環境のghciをダウンロード(結構長い) stack ghci

とりあえず今回は終わり

次回からHaskellに触れれば...

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!