すんまそん.勉強中ですが教えてください
(define (rotate-one n) (modulo (+ n 1) 4))
(define (rotate path)
(if (null? path) path
(append (rotate (cdr path))(list (rotate-one(car path))))))
(define (inverse-one n) (modulo (+ n 2) 4))
(define (inverse path)
(if (null? path) path
(cons (inverse-one (car path))
(inverse (cdr path)))))
(define (dragon-one path)
(if (null? path) path
(append (inverse (rotate path)) path)))
(define (dragon n)
(if (= n 0) '(0)
(dragon-one (dragon (- n 1)))))

(dragon 10)
standard input:82:7: In procedure if in expression (get-canvas-status drg):
standard input:82:7: Stack overflow
ABORT: (stack-overflow)

↑
stack-over-flow になるのはなんででしょう?
もしかして rotate とかって末尾再帰にはなってないんでつか