Scala を使って Haskell 風の記述をしている例を時々見かけるけれど、徹頭徹尾 Haskell になっている例はあまり見掛けない。アプリケーションロジックだけ見れば同じなんだけれど、実際の内部動作は全然違っていたりする。そして、パフォーマンスが致命的に劣っていたりすると、悲しくてやりきれない気持ちになる。Scala は、本当は出来る子なんですと。 そこで、Haskell っぽい記述に耐えうる Scala Library を整備していこうと思う。 循環無限リストの整備 Haskell の無限リストのつもりで Scala の Stream を使うと、こんな落とし穴が待ち受けている。 例えば、無限リストの第1000000*1000番目が欲しいとき、Haskellならば、メモリ不足にはならないんだけれど、 Prelude> repeat 42 !! (1000000*1000) 42Sc