И это всё МОЁ

Здесь код в котором не могу сообразить

#lang racket
(define sum-of-first
(lambda (n)
(if (= n 1)
1
(+ (sum-of-first (- n 1))
n))))

например, ввожу, в debugger
(sum-of-first 4)
работает только эта часть
(sum-of-first (- n 1))
полученный результат складывается в stack, в данном случае это
4
3
2
1 и вот здесь я поплыл т.к. в этом месте
(if (= n 1)
1
код должен вылететь, а он нет, он начинает отрабатывать сумму
(+ (sum-of-first (- n 1))
n)

Как это понять?

Вижу, что въехать в рекурсию не могу, на emacs то же самое, только debugger отсутствует

Пример из Concrete abstraction