I think I've found a (different) bug in the I-expression specification. I also 
_think_ I know the fix, but I could be mistaken.  Could someone see if this 
makes sense?

The original productions for "head" said "expr", but meant "s-expr".
Fine; that means that they become:
  head-> s-expr head
   (append $1 $2)
  head-> s-expr
   (list $1)

But wait - an "s-expr" can be a non-list (like a symbol), but "append" only
takes lists as arguments, so the first production CAN'T be right.

I think (append $1 $2) should be (cons $1 $2) instead.  Can anyone confirm/deny 
this?  Egil, you're the expert, I'd love to hear from you especially.

BTW, I'm really _not_ beating up on Egil Möller.  This stuff is surprisingly 
hard to get right.

--- David A. Wheeler 

Reply via email to