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?

questionAnswers(2)

yourAnswerToTheQuestion