hi,

in a macro i'm constructing a lambda-list in the following way:

`(,@rqd-args . ,rest-arg)

there are 3 cases:

1. (let ((rqd-args '(a b c)) (rest-arg 'r)) `(,@rqd-args . ,rest-arg))
   ==> (a b c . r)

2. (let ((rqd-args '(a b c)) (rest-arg '())) `(,@rqd-args . ,rest-arg))
   ==> (a b c)

so far so good, nothing special... but:

3. (let ((rqd-args '()) (rest-arg 'r)) `(,@rqd-args . ,rest-arg))
   ==> r

this is exactly how i hoped it to be, but the question is if this
is actually allowed or if it just works "accidentally".
r5rs doesn't seem to specify this case and '( . x) is not allowed.

i've tried the same expression with guile and sbcl and it worked
there as well but i'm still not sure if i should use it.

any opinions?

tnx&bye,
hans.


_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to