You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
the let* equivalents now avoid rebinding at the end which can avoid
unused variable warnings in cases where a binding is only used by later
bindings.
It now uses process-declarations to do the declaration processing
Also some fixes to the sysdcls which had got out of date
Copy file name to clipboardExpand all lines: README.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -2575,7 +2575,7 @@ Declarations should be handled properly (`(declare (type fixnum ...))` is better
2575
2575
2576
2576
In the `let*`-style cases the declarations will apply to all duplicate variables.
2577
2577
2578
-
`special` declarations are an interesting case for sequenctial binding forms. Consider this form:
2578
+
`special` declarations are an interesting case for sequential binding forms. Consider this form:
2579
2579
2580
2580
```lisp
2581
2581
(let*-values (((a) 1)
@@ -2587,7 +2587,7 @@ In the `let*`-style cases the declarations will apply to all duplicate variables
2587
2587
Now, without knowing what `f` does, it could refer to the dynamic binding of `a`. So the special declaration for `a` needs to be made for the temporary binding as well, unless it is in the final group of bindings. The starred forms now do this.
2588
2588
2589
2589
### Package, module, dependencies
2590
-
`let-values` lives in and provides `:org.tfeb.hax.let-values`. It requires `spam`, `collecting`, `iterate` and `utilities`, and will attempt to load them if `require-module` is present.
2590
+
`let-values` lives in and provides `:org.tfeb.hax.let-values`. It requires `spam`, `collecting`, `iterate``utilities`and `process-declarations`, and will attempt to load them if `require-module` is present.
When writing macros it's useful to be able to process declaration specifiers in a standardised way. In particular it's common to want to select all specifiers which mention a variable and perhaps create equivalent ones which refer to some new variable introduced by the macro.
0 commit comments