The Explorer

The Fourth Cycle of the "Adventures of a Pythonista in Schemeland"

by Michele Simionato

March 21, 2009



Episode 18 closed part III of my Adventures. I have not exhausted everything there is to say about functional programming. Actually, there is much more that could be written on the subject. However, the third cycle was conceived just as a detour from the main topic of this series, i.e. macros.

In part II I have just scratched the surface of what macros are and can do. The next cycle of Adventures, i.e part IV, will be entirely devoted to the most sophisticated aspects of macros. I will show typical patterns of macro programming, examples of advanced macros, as well as the issue of (breaking) hygiene.

[UPDATE: after some thinking, I have changed my mind. Part IV will describe the R6RS module system and I will come back to macros in part V. The reason is I want to write portable macros and in order to do so a discussion of the module system is essential.]

Part IV will not begin immediately, since I have to finish various Python-related papers first, so there will be a little pause. The pause should give you enough time to digest part III.

I see that part III was little commented (except for the remarks of Elizabeth Wiethoff, hi Elizabeth! ;) I hope I have not lost all of my readers! I know that this is not an easy series and requires some effort. I would like some feedback, though. Are you still reading the series? Is it going well and would you rather prefer a change of direction or style?

Notice that by design the series is not too much practically-minded, since it focuses on the features that make Scheme Scheme, and that are missing in other languages. I could write a Practical Scheme series, explaining things like how you interact with the file system, with a database, how to use a GUI toolkit and such, but then you would not learn much about Scheme: this kind of tasks are more or less the same in any language.

I am also curious about what the background of my readers is. The series is not really intended for Schemers (they should know already everything!) but for curious programmers with experience in other languages, say dynamic languages such as Perl, Python, Ruby or functional languages such as ML, Haskell, and somewhat Scala. I am not sure how readable the series is for people with experience only in Java or C++. Some feedback would be welcome!