groovy 1.8 では、memoize によってクロージャのメモ化が出来るようになったけれど、scala だってできるもん、という負け惜しみエントリ。 普通の自動メモ化 サクっと作ったものを(1〜5引数対応)をGistに上げたので簡単に紹介。 実装のポイントは単純で、下記の通り。 // 1変数関数をメモ化する(2変数以上は tupled/untupledで対応) def memoize[ArgT, RetT](f: ArgT => RetT): ArgT => RetT = { val memo = scala.collection.mutable.Map.empty[ArgT, RetT] arg => memo.getOrElseUpdate(arg, f(arg)) } こんな風にして使う。 object Main extends Application { val fib: I