Scalaで再帰的に定義する方法がわからん、という話。 Haskellで a = 0:[x+1 | x <- a] と書けるのをScalaに持っていって def a:List[Int] = 0::((for(i <- a) yield { i+1}) toList)と書くと、定義はできるんだけど実行するとStackOverFlowErrorがでる。 http://d.hatena.ne.jp/E_Mattsan/20080823#1219475971 再帰的な定義の方法というより、遅延評価を行う方法に関する話ですね。 Scalaは、Haskellと違ってデフォルトで正格な評価(=遅延評価を行わない)なので、上記のようなコードだとaを評価しようとすると必ずaが再帰的に評価されてしまい、結果としてStackOverFlowErrorになります。 それを避けるためには、自分で遅延評価を行うための