Modificación de la expresión básica if en esquema. ¿Por qué entra en un bucle infinito?

En Scheme, modifiqué el comando básico "if" como:

(define (modified-if predicate then-clause else-clause)
  (if predicate
      then-clause
      else-clause))

Y luego definí un programa generador de factorial simple usando la versión modificada de if:

(define (factorial n)
  (modified-if (= n 0)
               (* n (factorial (- n 1)))))

Ahora, cuando llamo a la función anterior, entra en un bucle infinito. ¿Por qué sucede eso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta