Haskell
https://gyazo.com/40bcc32aeb93532844ebb457dffb5018
概要
遅延評価
Haskellはプログラム全体としてみるとIO付きの型を持つmain式である
mainを評価して一連のIOアクションが得られる
型の量化
Haskell
文字列はCharの連結リストなので速度・メモリ使用量どちらも良くない
HTMLなどの大きな文字列の生成にはByteString型、Text型を使用する
Unit型
型も値も() () :: ()で表す
式の結果ではなく発生するIOアクションにのみ興味がある場合
GHC
:type
:t "hoge"
式の型
:kind
:k []
カインドを確認
:info
:info myfunc
値の情報を確認
:load
:load hoge.hs
ファイルをインタプリタに読み込み
Stack
役割
Haskellコンパイラ(GHC)をインストールする(stack setup)
Haskell製ツールをビルドしてPCにインストールする(stack install)
Haskellで開発する際のプロジェクト新規作成、プロジェクトビルド
プロジェクトのない場所でstack setup,stack installなどのstackコマンドを実行した場合はグローバルプロジェクトにて実行されたことになる→PC自体へのghciのインストールはグローバルプロジェクトへのセットアップということ
/icons/point.icon自分のPCのHaskellのバージョンをアップしたい時はグローバルプロジェクト(.stak/global-project)のstack.ymlのresolverを最新に書き換えてsetupする
自動で最新verになるわけではないので、自分でアップデートする
用語
Cabal : パッケージの仕様
Hackage : 多数の Cabal パッケージを集めたリポジトリ
Stackage : 依存関係を解決したパッケージ集を管理する場所
snapshot : Stackage で管理されているパッケージ集
stack.yaml
ビルド情報を記載する
.stack-work ディレクトリ
プロジェクトの作業用ディレクトリ
~/.stack/global-project ディレクトリ
グローバルプロジェクトが収めてある。
コマンド
stack setup
GHCをインストールする。インストール先は ~/.stack ディレクトリ以下になるアンインストールはこのディレクトリ毎全てを消去すればいい。
プロジェクトで指定されたバージョンのコンパイラや基本パッケージをインストールする。
stack ghc
GHC コンパイラを起動する。
stack ghci
GHCi を起動する。
stack install xxx
xxx というパッケージをインストールする。実行ファイルは ~/.local/bin 内にコピーされる。アンインストールはここの実行ファイルを削除する。
stack new
プロジェクトをテンプレートから新規作成する。
stack init
プロジェクトをテンプレートを使わずに新規作成する。
stack build
プロジェクトをビルドする。
stack install
プロジエクトをビルドして local-bin にインストールする。
参照
/LugendrePublic
Haskell、型システムについてかなり勉強になる内容