Search
17:07:05
kpoeck
Let me start by saying that the following is not a ansi-test question
17:07:32
kpoeck
If the following loop according to the spec?
17:07:43
kpoeck
(loop for (a &optional b) in (list (list :a :b)) collect a)
17:08:28
kpoeck
Works fine in ecl and sbcl, but not in clasp
17:10:41
kpoeck
The idiom is used in https://github.com/Shirakumo/glsl-toolkit/blob/master/sexpr.lisp#L221
17:11:39
kpoeck
In http://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm I can't find &optional
17:12:15
kpoeck
This is perhaps the relevant definition:
17:12:17
kpoeck
d-var-spec::= simple-var | nil | (d-var-spec . d-var-spec)
17:13:12
kpoeck
So i suspect this is an mit-extension, but not part of the standard
17:15:25
kpoeck
Even ecl generates (LET ((A NIL) (&OPTIONAL NIL) (B NIL) ...) which doesn't look right
17:17:20
kpoeck
Even sbcl generates (&optional nil), so this might work by coincidence
17:20:33
kpoeck
Does not seem to do what was intended
17:20:43
kpoeck
(loop for (a &optional b) in (list (list :a :b)) collect b) -> (nil)
17:22:56
jackdaniel
a&optional is treated as simple-var here
17:23:36
jackdaniel
(a &optional b . nil)
17:25:01
jackdaniel
as in &optional is an ordinary symbol outside the lambda list context
17:31:57
kpoeck
So I have a variable called &optional, correct?
17:32:31
kpoeck
That might or might not be what Shinmera intended
17:33:25
Shinmera
oh, yeah, that's not valid
17:33:38
Shinmera
oh boy I don't even remember writing
17:33:45
kpoeck
https://github.com/Shirakumo/glsl-toolkit/issues/8
17:37:48
kpoeck
The following fails in clasp:
17:37:50
kpoeck
(let ((&optional 42)) &optional)
17:38:31
kpoeck
but works in ecl and sbcl
17:38:47
kpoeck
I assume that is the reason for the warning I got
17:39:29
kpoeck
But I don't plan to ever call a variable &optional