事前条件チェックの多い処理をスマートに書くには

事前条件チェックの多い処理とは、次の擬似コードのようなものだと思ってもらえれば良い。

function process(...) {
  if (事前条件1) return "Err1"
  if (事前条件2) return "Err2"
  if (事前条件3) return "Err3"
  // ここから本処理
  //   :
  //   :
  return "OK"
}

Scala では、例えば次のようなものである。
Either に関しては、Right が条件成立、Left が条件不成立を表すものとして使っている。

続きを読む

Scala を複数バージョンインストールしてある環境での NoClassDefFoundError

Scala 2.8.0.final と 2.9.0.1 をインストールしてあるWindowsマシンで、2.8.0.final の方を使ってスクリプトを実行しようとしたら NoClassDefFoundError が出た。

続きを読む

F#でMapReduceのフレームワークを作ってみた

MapReduceシリーズの第4弾。第3弾まではこちら → Scala / Erlang / Go

フレームワークのソースは、これまでで一番短くなった。ポイントとして、ScalaのActorに似たMailboxProcessorというクラスを使っている。これについては、こちらの記事を参考にさせて頂いた。

続きを読む

Go言語でMapReduceのフレームワークを作ってみた

前回Erlang前々回Scalaに続き、Goでも作ってみた。

Goのチャネルは、ScalaのアクターやErlangのプロセスが持っているメールボックスの仕組みと異なり、明示的に作る必要がある(make関数を使う)。また、未受信のメッセージをいくつまで溜めておけるようにするかを指定しなければならない。下記では、その数を1000にしている。

続きを読む