He leído algo sobre la optimización de llamadas de cola en Scheme. Pero no estoy seguro de si entiendo el concepto de las llamadas de cola. Si tengo un código como éste:¿Es una función recursiva en Scheme siempre optimizada?
(define (fac n)
(if (= n 0)
1
(* n (fac (- n 1)))))
puede esto ser optimizado, por lo que no tendrá memoria de pila? o sólo puede optimización de llamada puede aplicar a una función como esta:
(define (factorial n)
(let fact ([i n] [acc 1])
(if (zero? i)
acc
(fact (- i 1) (* acc i)))))