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
