views:

278

answers:

1

What the heck is the Structure and Interpretation of Computer Programs cover drawing about? I mean I know what "eval", "apply", and 'λ' all mean, but I'm having a hard time deciphering the rest of the picture.

Who the heck is the maiden? Does she work for the wizard? Why the heck is she pointing at the table? Is she pointing at that little bowl-type thing? Or the books? Or the table in general? Is she trying to tell the wizard that he should apply some sort of Lisp wizardry to the table or the items on it? Or is she just telling him something prosaic, such as his food is getting cold?

What the heck is the one leg on that table that looks like...a leg...with a foot at the end (as legs tend to have)? How does the table balance on one leg? (Or is that another leg in the shadows?)

[Note: I'm waiting for a lengthy build to finish in case you were wondering.]

+6  A: 
  • The maiden stands for functional programming. She's a maiden (i.e. a virgin) because functional programmers can't do anything that has side effects.
  • The table stands for COBOL. That's why it has a demon foot.
  • The bowl stands for riches, which rests on COBOL, because at least you can use COBOL for writing a business application.
  • The maiden is being tempted by the table to give up on Lisp and write something that people will actually use. That's why she's pointing to the table. The wizard is attempting to dissuade her.
  • The pointy things in the wizard's hand are for killing the maiden if she refuses. (Functional programmers get testy in the presence of COBOL.)
JSBangs
impressive ... reminds me of foucault's pendulum :)
siukurnin
You're missing a big part of the picture. The wizard (who stands for the sufficiently wizardly reader) has just discovered that he can understand `eval` and `apply`, represented by the world of programming (recently discovered to be round, as in curved, as in parenthetical) using calipers, which stand for the REPL. The illumination around the lambda stands for new knowledge discovered using these tools.
Nathan Sanders
"calipers" does contain the string "liper", which is almost "REPL" backwards (except for the 'i' (and the capitalization)). And, in fact, "repil" would probably be pronounced the same as "REPL". I think you're on to something.
Paul Reiners
Scheme is not a purely functional language, and Schemers can do side effects. SICP uses them too, it's not a book on purely functional programming.
Eli Barzilay