Modyfikacja podstawowego wyrażenia if w schemacie. Dlaczego wchodzi w nieskończoną pętlę?

W schemacie zmodyfikowałem podstawowe polecenie „if” jako:

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

Następnie zdefiniowałem prosty program generujący silniki, używając zmodyfikowanej wersji if:

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

Teraz, gdy wywołam powyższą funkcję, przechodzi ona w nieskończoną pętlę. Dlaczego tak się dzieje?

questionAnswers(2)

yourAnswerToTheQuestion