そんなの
(f (g x))
=> (g_cps (lambda (x) (f_cps c x)) x)

f == (lambda (x) (h x))
=> f_cps == (lambda (c x) (lambda (h_cps c x)))

(while (functionp c)
(setq c (c)))
みたいに CPS 変換するだけじゃん。