Modificação da expressão if básica no Scheme. Por que isso entra em um loop infinito?
No Scheme, modifiquei o comando básico 'if' como:
(define (modified-if predicate then-clause else-clause)
(if predicate
then-clause
else-clause))
E então eu defini um programa simples de geração de fatorial usando a versão modificada de if:
(define (factorial n)
(modified-if (= n 0)
(* n (factorial (- n 1)))))
Agora, quando eu chamo a função acima, ela entra em um loop infinito. Por que isso acontece?