2009-06-01から1ヶ月間の記事一覧
Ruby ではブロックが自慢らしい。制御構造を自由に作れる感じがするのだと言う。 obj.foo do |x,y| x を使う y を使う end これは、高階関数の最後の引数として無名関数を渡していることに他ならない。他の言語でどうなるか考えてみる。JavaScript ではこう…
以下、Mailman を /usr/local/mailman にインストールしているという前提での話です。 ソースコードをいじったら .py を .pyc に直すには、以下のようにします。 % sudo python -c 'from compileall import *; compile_dir("/usr/local/mailman/Mailman")' M…
ある人は、Haskell には副作用がないと言う。また、別のある人は Haskell には副作用があると言う。Haskell を学ぶ者にとって、こういった意見の食い違いが、Haskell を得体の知れない言語にし、学習の障壁となっているかもしれない。そこで、この記事では、…
先週、Perl の正規表現と Posix の正規表現の違いについて説明する機会があった。端的に言えば、非決定性有限オートマトン(NFA)と決定性有限オートマトン(DFA)の違いだ。この違いを理解するには、「詳説 正規表現」の「エンジン始動」の章を読むとよい。正規…
先週、輪講で「Real World Haskell」の6章を読みました。独自に定義した JSON の型 JValue を Int などへ変換する例題が載っています。このとき、独自に定義した JSON というクラスを使います。僕は、いや、輪講に参加した全員は、この例題が何を言いたいの…
僕は今、プログラマーとしての幸福感に満たされている。遅延評価を習得できたと思えるからだ。 遅延評価 なぜ関数プログラミングは重要かには、遅延評価の利点を以下のように説明している。 停止条件はループの本体とは切離すことができ、強力なモジュール化…