*let with destructuring-bind expands into wonky things

Issue #1 new
Steve Losh created an issue

The docs say that *let should "behave like let*", which makes me think I should be able to use previously-bound things in the values of later things. The example in the docs seems to confirm this. But it doesn't seem like this works in practice.

For example:

(*let (((foo . bar) (list 1 2))
         (n (1+ foo)))
    n)

This should destructure the list into foo and bar, and then use foo to define n. But what it macroexpands to is:

(LET* ((DARG707 (LIST 1 2)) (N (1+ FOO)))
  (DESTRUCTURING-BIND (FOO . BAR) DARG707 N))

The lack of nesting here means that foo isn't defined when we try to use it to define n.

Comments (1)

  1. Log in to comment