Is SICP just a book?

SICP stands for “Structure and Interpretation of Computer Programs”, and is an introductory computer science book, written by Hal Ableson and Gerald Sussman for their introductory computer science course given at MIT from 1981 until 2007.  A professional recording done in 1986 and is also available for download online, as is the book itself. Why …

The Python debate on Tail Calls

The Beginning It started with an innocent enough blog post by Guido van Rossum commenting on Python’s lack of tail call elimination in Python’s history.  Okay, not even commenting – it was a parenthetical sentence fragment! “Origins of Python’s “Functional” Features” on The History of Python The internet went crazy with comments.  Guido attempted to …

CLOS circa 1987, Dynamic Dispatch in C++/C#

As reported by programming musings, http://www.archive.org/details/DanielGB1987 Common Lisp Object Standard presentation, by Daniel G Bobrow. Some reflections: Fast Multiple Dispatch "[for dynamic method resolution] A cache of 1000 entries is hit 98% of the time".  Assuming this is accurate, it explains how you could get by with the cached virtual dispatch lookup that the desktop …

Understanding Continuations

Experimenting with Lisp variants eventually led me to the programming construct of continuations as popular with the Scheme programming language.  In case  you’re not familiar with the construct, it’s a control construct (like the if statement or exception dispatch) that works a little like this: Say you’re in the kitchen in front of the refrigerator, …

You Can be a Lisper Too!

"Really?" I hear you saying, "you can’t be serious!  Python and Ruby, that’s one thing, but Lisp?  Seriously?!" About Lisp Briefly, Lisp is a family of programming languages that date back to 1958.  It is characterized by a very simple syntax, garbage collection, reference semantics, and very powerful language extension and self introspection capabilities.  Many …

Memoizer 4b – Common Lisp

Continuing this series, in Common Lisp… Memoizer 1 – C++ Memoizer 2 – Python Memoizer 3 – Lua Memoizer 4a – Lisp for Mortals Memoizer As before, we’ll be walking through a memoizing function — for review, it’s a function that will transforms an existing function into one that remembers previous results instead of recomputing …

Memoizer 4a – Lisp for Mortals

Now that this is getting to be a series, I ought to provide links to the previous entries, in case anyone is actually reading this thing: Memoizer 1 – C++ Memoizer 2 – Python Memoizer 3 – Lua Other than the C++ example, this series has been part of an experiment to bootstrap my experience …

Your Favorite PL

In your favorite programming language I came across this site, hanoimania, when researching application virtual machines.  The author, personally, has translated a towers of hanoi solver to dozens of programming languages, utilizing: Recursion, with Scheme of course, Pattern matching, with Haskell And bare assembly, such as this MIPS example Although, the embedded world uses the …