Есть ли способ утверждать, что функция распознается компилятором как хвостовая рекурсия? - PullRequest
0 голосов
/ 05 марта 2019

Допустим, я написал функцию на Хаскеле и хочу утверждать, что она хвостово-рекурсивна и будет оптимизирована компилятором.Есть ли способ сделать это?

Я знаю, что есть способ сделать это в 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)
  }
}
...