3

わかりました、繰り返しでオブジェクトの状態を変更していないため、すべての再帰がより機能的であることがわかりました。ただし、scala でこれを行うのを止めるものは何もありません。

  var magoo = 7; 

  def mergeSort(xs: List[Int]): List[Int] = {
    ...
    magoo = magoo + 1
    mergeSort(xs1, xs2);

  }

実際、Java でできるのと同じように、Scala でも再帰を副作用なしにすることができます。では、パターン マッチングを使用することで、Scala は簡潔な再帰を簡単に記述できるようになっているだけだと言えますか? Scala で記述できるステートレスな再帰コードを Java で記述することを妨げるものは何もないように?

要点は、Scala では複雑な再帰をより適切なコードで実現できるということです。それで全部です。正しい?

4

3 に答える 3

2

不変コードの記述を実際に禁止するプログラミング言語はほとんどありません。実際、本当の純粋な関数型言語は Haskell だけかもしれませんし、Scheme や ML でさえ可変値を使用する何らかの方法を持っています。したがって、関数型スタイルは不変コードの記述を奨励するだけです。それは、値を変更するかどうかを選択するのはあなた次第です。

于 2013-05-18T13:45:08.533 に答える