Disons que j'ai écrit une fonction en Haskell et que je veux affirmer qu'elle est récursive en queue et qu'elle sera optimisée par le compilateur. Existe-t-il un moyen de le faire ?
Je sais qu'il y a un moyen de le faire en Scala avec @tailrec annotation.
import scala.annotation.tailrec
class Factorial2 {
def factorial(n: Int): Int = {
@tailrec def factorialAcc(acc: Int, n: Int): Int = {
if (n <= 1) acc
else factorialAcc(n * acc, n - 1)
}
factorialAcc(1, n)
}
}