Subject: Re: "Choose the Right Language" in "Tutorial" by Norvig and Pitman
From: Erik Naggum <>
Date: Thu, 18 Apr 2002 09:44:42 GMT
Newsgroups: comp.lang.lisp
Message-ID: <>

* "Marc Battyani" <>
| Here is a nice extract from it.
| Recursion
| An XEXPR interpreter is not guaranteed to be safely tail recursive, even
| though recursion is allowed. As such, it is generally better to use an
| iterative form rather than a tail recursive form.
| The following defines the linear recursive form of factorial. This is simple
| to code, and easy to understand, but for large numbers, it may cause a stack
| overflow.
| <define name="factorial" args="x">
|  <if>
|    <lt><x/>2</lt>
|    <x/>
|    <multiply>
|      <x/>
|      <factorial><subtract><x/>1</subtract></factorial>
|    </multiply>
|  </if>
| </define>
| Brilliant no ?

  Let me recast this into my syntax, which also considers whitespace no

<define <name factorial> <args x>
  <if <lt x 2>
    <multiply <x> <factorial <subtract <x> 1>>>>>

  Now, let me remove the tremendously stupid reference to X via an element
  and call simple arithmetic functions by reasonable names:

<define <name factorial> <args x>
  <if <lt x 2>
    <* x <factorial <- x 1>>>>>

  Not so bad, I think.  But the massive stupidity of XML's redundant
  end-tags should be ever more evident.  Sigh.  Like, I receive this
  HTML-ified newsletter every Friday, and each message is from 24K to 32K
  large.  I rewrote it into my syntax, preserving all the HTML crap, but
  removing all the redundant whitespace.  The results were from 6K to 9K
  large.  Then I sanitized the table crap and made it into macro forms and
  removed the redundant font elements, and the results were from 3K to 5K.
  It is quite fascinating that people are willing to work with data formats
  that are 8 times more verbose than they trivially need to be, requiring 8
  times more network bandwidth or time to send out newsletters by mail.  Of
  course, these are the same people who think XML is better than shipping
  Word documents around.  I just wait to see a Word-in-XML document that
  takes a minute to ship over megabit-lines and which says "Hello, world!".

  In a fight against something, the fight has value, victory has none.
  In a fight for something, the fight is a loss, victory merely relief.

  Post with compassion: