Learning Scheme helped my Python by teaching me some new (to me) idioms, besides the first-class function stuff. For example, it is natural in Scheme to declare a lot of local information, including local function definitions. These have the great advantage of knowing about variables within the local environment. So rather than declaring an external function with heaps of parameters to pass in local state, you just d…
e.g.:
> (let fac ([n 10])
(if (zero? n)
1
(* n (fac (sub1 n)))))
3628800