Scala の初心者として、私は書籍やドキュメントを読み、http://aperiodic.net/phil/scala/s-99/にある問題を解決しようとしています。正しい Scala コードは、ループや変数ではなく不変値 (val) と再帰に基づいており、並列処理をより安全にし、ロックを使用する必要がないように思われます。
たとえば、演習 P22 ( http://aperiodic.net/phil/scala/s-99/p22.scala ) の可能な解決策は次のとおりです。
// Recursive.
def rangeRecursive(start: Int, end: Int): List[Int] =
if (end < start) Nil
else start :: rangeRecursive(start + 1, end)
もちろん、このコードはコンパクトでスマートに見えますが、もちろん、再帰の数が多い場合は、StackOverflow エラーが発生します (たとえば、JVM チューニングなしで rangeRecussive(1,10000))。組み込みの List.range (https://github.com/scala/scala/blob/v2.9.2/src/library/scala/collection/immutable/List.scala#L1) のソースを見ると、ループと変数が使用されていることがわかります。
私の質問は、再帰の数が原因でそのようなコードが壊れる可能性があることを知って、val と再帰を促進している Scala 学習の影響をどのように管理するかということです。