Admittedly something small.
2015年4月9日

関数型なAltJS、PureScriptの入門書を邦訳しました。

JavaScript Haskell 関数型言語 altjs purescript


追記: この翻訳は超古いです。本文中のサンプルコードの多くは、最新版のコンパイラではコンパイルが通りません。最新の情報については、原著を参照してください。基本的な概念は変わらないので、この翻訳もまったく参考にならないというわけではないと思いますが、なるべく原著を読むことをおすすめします。

現在のPureScriptでの開発環境構築については、純粋関数型プログラミング言語PureScriptのはじめかた/コンパイラの使いかたからサーバサイドアプリケーション・クライアントサイドシングルページアプリケーション開発までの記事も併せてご覧ください。


Haskellライクな関数型プログラミング言語PureScriptの入門書、"PureScript By Example"を邦訳しました。本書はPureScriptのオリジナルの作者であるPhilさん本人が執筆した入門書です。本書を理解するにはJavaScriptを知っていることが望ましいですが、そうでなくともすでに何らかのプログラミング言語を知っていれば読みこなすことはできると思います。PureScriptはHaskellを始めとした多くの関数型言語と様々な考え方を共有していますから、PureScriptという言語そのものを学ぶという目的でなくとも、関数型プログラミング全般についての入門としても読むにも適しています。無料ですので、ぜひ読んでみてください。

原著も以下のページで無料で読めます。翻訳ミスが疑われたり、翻訳が読みにくい箇所があれば、原著にあたってみてください。原著は購入することもできますので、本書が気に入った方はぜひ購入してみてください。

本書の内容

タイトルの通り、本書はとにかく具体的なコードをばんばん見せてから、それに添って説明していくというスタイルです。すべてのサンプルコードはオンラインで入手できますし、演習もついていますので、実際に手を動かしながら理解を深めることができます。言語仕様を端からがっつりという感じではありませんし、数学的な定義がどうのこうのという抽象的な話もほとんどありませんから、比較的取り組みやすいのではないかと思います。扱うサンプルコードは次のような実用性の高いものばかりです。

関数型言語の入門のサンプルコードは、パズルでも解いているかのような実用性が感じられないものばかり取り沙汰されることがありますが、その点、本書は関数型プログラミングを現実の開発でどのように実用していくかを常に念頭に置きながら学習できます。標準入出力だけで済ませるような地味なものだとモチベーションが上がらない人もいるでしょうが、PureScriptコードはJavaScriptコードへとコンパイルできるので、Canvas APIでグラフィックスを扱ったりAjaxで通信してみたりと、比較的派手なことがしやすいのも魅力です。

開発環境のインストールから、対話式環境の操作、gruntを利用したビルドやテストの自動化まで取り扱っています。関数型プログラミングの概念や言語仕様だけでなく、開発の一連の流れについての包括的な解説になっています

Haskeller向けのあれこれ

Haskellを知っている人向けに、本書でどのような話題を扱っているかキーワードとして挙げておきます。FreeモナドExtensible Effectsのような比較的新しい話題も扱っていますから、すでにHaskellに馴染みがある人にとっても参考になるかもしれません。

PureScriptはHaskellに強い影響を受けていますが、決してHaskellのサブセットやHaskellそのものを目指しているわけではありません。HaskellとPureScriptの決定的な違いとしては次のような点が挙げられます。

そのほか、forallが必須だったり、リスト内包表記がなかったりと微妙な違いがいろいろありますが、よく訓練されたHaskellerならそのうち慣れると思います。逆に言えばそれ以外はHaskellそっくりで、QuickCheckなどのライブラリはHaskellから移植して使っているようです。型クラスまわりの表現力はHaskellに近いレベルのものが確保されており、Functor/Applicative/Monad という階層や、MonadTransのような型クラスもしっかり実現されています。

注意

今のところ邦訳のデータはBitBucketに置いていますが、そのうちGithubのほうに移動したりするかもしれません。URLはもしかしたら変わるかもしれないのでご注意ください。まだ訳が硬くて読みにくい部分も多かったり、誤訳も多いかと思われますが、そのうち直していこうかなと思います。誤訳があればすべて私個人の責任です。もし邦訳の内容に問題を見つけたら、このqiitaのページにコメントを残して頂くと私が気が付きやすいです。

さいごに

英語なら関数型プログラミングの資料はたくさん手に入りますが、やはり英語と日本語だと読む速度が何倍も違ってきます。Haskellについては日本語でもすでに良い入門書が何冊も出版されていますが、本書の内容はそれらに比肩するたいへん充実したものです。そしてなにより無料で読めますから、気が向いた時や暇なときに気軽に読んで頂けたらと思います。書籍にはどうしても肌に合う合わないがありますから、市販の本を買って馬が合わずに損した気分になるより、まずは関数型プログラミングに無料体験してみるのはどうでしょうか。関数型プログラミングに本気で取り組むぞというほどの気概がなくて、関数型プログラミングはなんぞやということをちょっとかじりたいだけの人にもお勧めです。

おまけ・無料関数型プログラミング書籍特集

本書だけでは物足りない、まとまった量の関数型プログラミング入門テキストが欲しい!でも紙の本をお金出して買うほどじゃないという人向けの、無料で読める関数型プログラミング関連の書籍をまとめておきます。他にもあったら教えて下さい。


このエントリーをはてなブックマークに追加