Допустим, я написал функцию на Хаскеле и хочу утверждать, что она хвостово-рекурсивна и будет оптимизирована компилятором.Есть ли способ сделать это?
Я знаю, что есть способ сделать это в Scala с помощью @ tailrec аннотации.
Пример:
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)
}
}