I have been programming in Python for many years. One of the things that I wondered, soon after starting to work in Python, was how you can get Perl-style variable interpolation. After all, Perl (like the Unix shell) supports two types of quotes — single quotes (in which everything is taken literally) and double quotes…
I love developing software. I also love helping people to learn how to develop better. That’s why I have been teaching programming classes for more than a decade, and why I write about programming. There is so much to learn; it’s a rare day on which I don’t learn something new, and it’s a rare…
I teach Ruby and Python to a lot of people — in formal courses, and in one-on-one pairing sessions, both online and in person. I’ve found that for many people, the whole notion of functional programming seems strange and difficult, as well as something of a waste of time. After all, if you have objects,…
We’re nearly at the end of my tour of the “reduce” function in Ruby and Python. Just as I showed in the previous installment how we can implement the “map” function using “reduce”, I want to show how we can implement another functional-programming standard, “filter”, using “reduce” as well. As before, I’ll show examples in…
This is another installment in my “reduce” series of posts, aimed at helping programmers understand this function, with examples in both Ruby and Python. So far, we have seen how we can build a number of different types of data structures — integers, strings, arrays, and hashes — using “reduce”. But the really interesting use…
In the last few installments (first, second, third, and fourth) of this series, we saw how “reduce” can be used to build up a scalar value (such as a number or string), or even a simple collection, such as a list (in Python) or an array (in Ruby). The jewel in the data-structure crown for…
In the first few parts of this series (first, second, and third), I introduced the “reduce” function, and showed how it can be used in a number of ways. However, in all of the examples we have seen so far, the output from our invocations of “reduce” were integers or strings. If we reduce with…
This is the third installment of my “reduce” series of blog posts. For the first, see here, and for the second, see here. If you have been reading this series, then you know that “reduce” can be used to sum numbers, or to calculate scores. In that sense, “reduce” justifies its name; we’re invoking a…
This is the second installment of my series of blog posts on the “reduce” function/method. For an introduction, see here. I love to play Scrabble — or more commonly nowadays, I play Words with Friends on my phone. (I often say that the game should instead be called, “Words with people who used to be your…
One of the notable things about MIT’s computer science curriculum, at least back when I was studying there, was that you didn’t learn any “practical” programming languages. Our work was all done in either Scheme (a dialect of Lisp) or in CLU (an early object-oriented language). I can’t say that I have too many memories,…