(
defmacro
binding
-
test
[
test body
&
remainder
]
`
(
let
[
~'testVar ~test ~'bodyVar ~body
]
~@remainder
)
)
(
defmacro
do
-
while
[
test
&
body
]
(
binding
-
test test body
(
quote
loop
[
]
bodyVar
(
when
testVar
(
recur
)
)
)
)
)
(
def
y
4
)
(
do
-
while
(
>
y
0
)
(
println y
)
(
def
y
(
dec
y
)
)
)