はじめての Haskell

Haskell をちょくちょく触ってみていて、メモが溜まってきたのでこれをまとめた。

(2018-07-19)「Haskell の学び」を変更・追記した。

Haskell とは?

www.haskell.org

  • 関数型言語
  • 「ハスケル・カリー」さんから名前をとっている(だけど開発者は全く別)
  • 最新の言語仕様は Haskell 2010
  • モナドで有名だけど圏論の知識は必須というわけではない(らしい)

Haskell の学び

チュートリアルのオススメはこの二つ。

モナドの説明など概念的な説明は日本語の方が嬉しいと思うが、それにはここがわかりやすい。 基本的に「日本語でおk」な説明のサイトが多いので、読んでいて意味不明だったらすぐに違うソースを探した方がいい。

www.shido.info

入門書籍はいまのところ使っていないが、この辺りがテッパンらしい。 ちなみに、2番目の「すごいHaskellたのしく学ぼう!」は上で紹介した「Learn You a Haskell for Great Good!」の邦訳版である。 個人的に3番目を読んでみたいのだが、電子書籍版がないため躊躇している。

プログラミングHaskell

プログラミングHaskell

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

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

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門

  • 作者: 青木峰郎,山下伸夫
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2014/10/05
  • メディア: オンデマンド (ペーパーバック)
  • この商品を含むブログを見る

インストール

macOS 環境なら Haskell Platform の利用が推奨されている。 Haskell Platform には以下のツールが入っていて、これをインストールするだけですぐに Haskelll 開発が始められる。

  • GHC(コンパイラ)
  • Cabal(パッケージ管理)
  • Stack(ビルド自動化)
  • プロファイリング、カバレッジ測定ツール
  • 35 のコアパッケージとその他メジャーなもの

Haskell Platform は Homebrew-Cask 経由で簡単にインストールできる。

brew cask install haskell-platform

エコシステム

エコシステム 概要 他の言語での対応
GHC デファクトスタンダートなコンパイラ実装。 gcc (C)
Hackage パッケージリポジトリ。 PyPI (Python)
Cabal パッケージ管理ツール。基本的には Hacakge から取ってくる。 pip (Python), npm (Node.js)
Stackage Stable Hackage の略。依存関係でエラーがでないように調整されたパッケージセットのこと。 該当なし(他の言語ではパッケージ開発者が決めている)
Stack ビルド管理ツール。 Gradle (Java), Bundler (Ruby)
HLint コードスタイルチェックツール。 pylint (Python)
Hoogle リファレンス検索サービス。記号類も検索しやすい。 該当なし

開発エディタ

github.com

Language Server 実装の一つで VSCode などで使える。 VSCode の Market Place で検索すれば Haskell Syntax Highlighting に次いで一番上に出てくるので、普通に見れば間違えることはないかと。 Language Server 実装はいくつかあるものの、これが一番実用レベルでよろしい。(参考

plugins.jetbrains.com

IntelliJ の Haskell サポート用プラグインがある。
IDEA でインストールできることを確認している。