JavaScriptで書いてあるじゃん! 手がかじかんで動かないよ!

;; 最初
(defun sum (n)
(labels ((f (x) (+ n x)))
(if (= n 1) 1 (f (sum (1- n))))))

;; 自由変数を引数に変更
(defun sum (n)
(labels ((f (w x) (+ w x)))
(if (= n 1) 1 (f n (sum (1- n))))))

;; リフティングする
(defun f (w x) (+ w x))
(defun sum (n)
(if (= n 1) 1 (f (sum (1- n)))))