2011-05-01から1ヶ月間の記事一覧

実用的な同時並行ソートを実装する話

scala の parallel collection は、普通の collection を使うように使っているだけで、並列計算の恩恵を受けられる場合も多いのですが、そうではない場合も多いです。その典型例が、ソートです。実は、並列のソートは、まだ実装されていません。じゃあ、自分…

scala を左傾化させる話

Scala exercises for beginners を foldLeft で解いてみた。 // Exercise 2 def sum(x: List[Int]): Int = x.foldLeft(0){_ + _} // Exercise 3 def length[A](x: List[A]): Int = x.foldLeft(0){(sum, _) => sum + 1} // Exercise 4 def map[A, B](x: List[…

akka の例題を parallel collection で実装

akka の例題では、arctan(1) をテーラー級数展開して円周率を求めるという例題を取り上げている。具体的には、下記の数式を10000項ずつ Actor に割り振って、並列計算している。このような級数を scala で並列計算する方法としては、akka を使う以外にも、sc…

Scala の内面を Haskell 化する話

Scala を使って Haskell 風の記述をしている例を時々見かけるけれど、徹頭徹尾 Haskell になっている例はあまり見掛けない。アプリケーションロジックだけ見れば同じなんだけれど、実際の内部動作は全然違っていたりする。そして、パフォーマンスが致命的に…

関数の自動メモ化

groovy 1.8 では、memoize によってクロージャのメモ化が出来るようになったけれど、scala だってできるもん、という負け惜しみエントリ。 普通の自動メモ化 サクっと作ったものを(1〜5引数対応)をGistに上げたので簡単に紹介。実装のポイントは単純で、下記…