Re: Where is the source of LET* macro
Shannon Spires <[email protected]> Fri, 14 Apr 2023 15:07:20 -0600
| Newsgroups | gmane.lisp.openmcl.devel |
|---|---|
| Message-ID | <[email protected]> |
The example you cite does work but I personally find it an ugly coding style. If it's absolutely necessary to update a variable, I find it clearer to do so with setf. In any case, (let* ((it 7) (it (list it it)) (it (length it))) it) effectively expands to: (let ((it 7)) (let ((it (list it it))) (let ((it (length it))) it))) Both let and let* are special operators that are handled internally by the compiler. (The compiler macros are just shortcuts for the rare degenerate case of a let or let* with no bindings or only one binding.) -SS On 4/14/23 2:17 PM, Arthur Cater wrote: > I can only find a define-compiler-macro, I want to see how LET* handle declarations. > It surprises me that it is apparently legal to say > > ? (let* ((it 7) (it (list it it)) (it (length it))) it) > 2 > ? > > and I wondered how declarations (if present) are treated - but I can’t find the source code. > > TIA for any hep