Macro lambda lists aren't parsed quite right in general
brpocock opened this issue · comments
Test example:
(defmacro x (y &optional (&rest z)) `(print ,y))
(x y)
Signals an error that Z is unbound.
This particularly affects definition of ASSERT, although I have a simplified ASSERT that can be used without the var-list and message optional args.
Not all lambda expressions are implemented, just the ordinary lambda-expressions, and probably is not even complete.
That means we should improve https://github.com/jscl-project/jscl/blob/master/src/lambda-list.lisp to support other lambda-lists.
Full list:
http://www.lispworks.com/documentation/lw60/CLHS/Body/03_d.htm
Just to note, I seem to think the "presentp" third part of regular
&optional is probably also not working correctly.
On Thu, Aug 11, 2016, 11:22 David Vázquez Púa notifications@github.com
wrote:
Not all lambda expressions are implemented, just the ordinary
lambda-expressions, and probably is not even complete.That means we should improve
https://github.com/jscl-project/jscl/blob/master/src/lambda-list.lisp to
support other lambda-lists.Full list:
http://www.lispworks.com/documentation/lw60/CLHS/Body/03_d.htm
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#243 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB-HO5XyIN6OQQOH_ZdTU9xJzcb1iZTNks5qez5IgaJpZM4JgzKm
.
That is a bug. I have fixed it now.
The whole lambda compilation is pretty messy. There is also redundant logic with lambda-list.lisp
. It needs some work.