パターンマッチのインタフェースを保ったまま、データ型の内部表現を変更できる従来の代数的データ構造のみでは、パターンマッチするにはデータコンストラクタを公開する必要があった。これはつまりデータ構造を変更するとパターンマッチ部分も壊れることを意味する。aではOlegさんのコードからfreeを使ったコードに変えると、NilとConsを使うすべての関数が壊れてしまう。synonymsを使えばこの問題は回避できる。synonymsだけを公開すればよい。patternsというものもある。synonymsと併用することもできる。synonymsを使って書いてみた。patternsも、関数適用(ここではSeq.viewlとSeq.viewr)した後の結果の値に対してパターンマッチするコードを書きやすくする。synonymsはunidirectionalでzipZag''とzipZag'''を比べてみればわかるように、単にパターンに別名を付けるために使われている。patternsだけを使った場合に対して優れている。25章と23章についてのコメントをまとめました。2014正格性の指定のためにControl.Parallel.Strategiesを使っているけど、並列プログラミングではないなら同じparallelパッケージのControl.Seqの方を使った方が意図がわかりやすいかも。パフォーマンスの違いがあるのかは知らない。2014ついでにGUIプログラミングのところも見てみると、gtk2hsパッケージは細かく分割されたので、gtk2hs-buildtoolsを入れた後、gtkパッケージを入れればOK。GTK+3の場合はgtk3パッケージを入れる。2014gtk3に対応するgladeは無いのかな。2014コードは動くのか知らないけどonXxxみたいな関数の多くがdeprecatedになっていると思うので、代わりに各widgetのドキュメントのSignalsにあるSignalを使おう。comment2014-01-17GitHubと連携するチャットサービスGitterが便利そう普段使っていないメールボックスを覗いてみたら、Gitterからベータテストの招待状が届いていたので使ってみた。使い方は簡単で、GitHubのOAuthでログインして自分のプロジェクト名をクリックするだけ。これでもうチャットルームが作られて、使えるようになる。flavouredなmarkdownが使える。Issuesとも連携しているので#と打つとissueの補完ができる。チャットルームの歯車アイコンからポチポチするだけでGitHub上でのコミットやコメント等の動きをチャットルームに流せる。CIのビルド結果も流れるようになる。この記事を書いている時点ではGitHubJenkinsTravisSprintlyTrelloに対応している。詳しいドキュメントはまだ無いようなので、公式ブログを覗いてみるのがいいと思う。OAuthでどうして書きこみ権限が必要かの釈明も書いてある。問題なのは、こんなに簡単にコミュニケーションツールがセットアップできても、肝心の人が集まるようなソフトウェアを書いてないことなので、まあぼちぼちがんばろう。