Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
parenscript
parenscript
Commits
1704422e
Verified
Commit
1704422e
authored
Oct 23, 2018
by
Vladimir Sedach
Browse files
Made definition of ps-once-only easier to read
parent
5c9b1e73
Changes
1
Show whitespace changes
Inline
Side-by-side
src/compiler.lisp
View file @
1704422e
...
...
@@ -368,10 +368,13 @@ gensym-prefix-string)."
(
defmacro
ps-once-only
((
&rest
vars
)
&body
body
)
"Helper macro for writing Parenscript macros. Useful for preventing unwanted multiple evaluation."
(
let
((
gensyms
(
mapcar
(
lambda
(
x
)
(
ps-gensym
(
string
x
)))
vars
)))
`
(
let
,
(
mapcar
(
lambda
(
g
v
)
`
(
,
g
(
ps-gensym
,
(
string
v
))))
gensyms
vars
)
`
(
let*
(
,,@
(
mapcar
(
lambda
(
g
v
)
``
(
,,
g
,,
v
))
gensyms
vars
))
,
(
let
,
(
mapcar
(
lambda
(
g
v
)
`
(
,
v
,
g
))
gensyms
vars
)
(
let
((
gensyms
(
mapcar
#'
ps-gensym
vars
)))
`
(
let
,
(
mapcar
(
lambda
(
g
v
)
`
(
,
g
(
ps-gensym
',v
)))
gensyms
vars
)
`
(
let*
(
,,@
(
mapcar
(
lambda
(
g
v
)
`
(
list
,
g
,
v
))
gensyms
vars
))
,
(
let
,
(
mapcar
(
lambda
(
g
v
)
(
list
v
g
))
gensyms
vars
)
,@
body
)))))
(
defmacro
maybe-once-only
((
&rest
vars
)
&body
body
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment