The Artima Developer Community
Sponsored Link

The Explorer
The Fourth Cycle of the "Adventures of a Pythonista in Schemeland"
by Michele Simionato
March 21, 2009
A preview of the next cycle of Adventures is given. I ask from reader's feedback and I announce the availability of the Adventures in both PDF and HTML formats. Rejoice!


Request for feedback

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!

The Adventures now even in PDF!

A reader asked me if there was a PDF version of the Adventures, intended from printing. Now, there is! ;) I have generate a single PDF file for the first eighteen Adventures; the content is exactly the same of the Artima posts, with a nice table of contents in front. You can download it from here:

I have yet to fix the pictures, to spell check the whole text, and to review it from start to end. You will likely find small errors: in such a case, you are welcome to send me a note.

The PDF is generated by using Python technology, i.e. Sphinx, since all the Adventures are written as Scheme files with a big docstring in reStructuredText format. There are Scheme tools for literate programming and or documentation extraction (a Google search will find a few of them), but I have chosen Sphinx for three reasons:

  1. I already knew reStructuredText and everything I have written in the last 6+ years is in that format;
  2. Artima recognizes reStructuredText, so it was a path of minimal resistance;
  3. Sphinx is both very powerful and standard, in the sense that the official Python documentation is generated via Sphinx and basically all famous Python projects are switching to Sphinx, so it has thousands of users.

Notice that for nearly two decades (till last year) the Python documentation has been generated from Perl, so I see nothing wrong in generating Scheme documentation from Python ;)

If you prefer HTML over PDF, or if you want to leverage on the powerful search capabilities of Sphinx, you can browse the HTML documentation here:

A retrospective

When I started writing my Adventures I would have never imaged that the project would have grown to the current size. Originally, I just wanted to write a couple of introductory articles about Scheme: they became the first three Adventures and were written years ago (in Italian). Then, on Christmas 2007, I had a revelation about syntax-case macros and I decided that it was worthwhile documenting them.

Since the Italian Stacktrace site had just started, I came out with the idea of the Adventures: the first one was published in February, the 5th 2008. I expected to write a few articles on the subject and to be done with it, but after eleven episodes, I realized that there was still much more to say. So the series migrated to the English language on Artima, in September, the 18th 2008.

At this moment I have written 18 episodes and I feel that I am more or less halfway through my task. I think that the series will keep going for at least other six months and that it will become of book size at the end. The PDF is already over one hundred pages. I do not think the series will even become a best seller, since it is probably appealing only to a restricted public, but I never wanted to become famous, and in any case this series has a gigantic public with compared to the public I was used to, when writing Physics papers ;)

That's all. Keep following, and remember that the best of this series is yet to be seen!

Talk Back!

Have an opinion? Readers have already posted 2 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Michele Simionato adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Michele Simionato started his career as a Theoretical Physicist, working in Italy, France and the U.S. He turned to programming in 2003; since then he has been working professionally as a Python developer and now he lives in Milan, Italy. Michele is well known in the Python community for his posts in the newsgroup(s), his articles and his Open Source libraries and recipes. His interests include object oriented programming, functional programming, and in general programming metodologies that enable us to manage the complexity of modern software developement.

This weblog entry is Copyright © 2009 Michele Simionato. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use