Learning Scheme helped my Python by teaching me some new (to me) idioms, besides the first-class function stuff.<p>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 declare a local function which automatically gets access to the variables in the surrounding scope.<p>The same idiom works neatly in Python too, but didn't occur to me previously.<p>* * *<p>Also after learning Python and Scheme, Ruby felt a bit like a cross between the two, and quite comfortable.
"I don't know if there are programmers out there whose pseudo-language is functional. Maybe it's just human nature to think imperatively."<p>A lot of time it just kills me that "if" statements don't default to returning the true branch or false branch. You need the ternary conditional operator in Java and other C-derivatives, and in Python you need to resort to some hack with and/or precedence.<p>I'm also wondering if I should declare all variables final in Java, and only change that default if I really, really have to.