Skip to content

Instantly share code, notes, and snippets.

@rentalcustard
Last active August 29, 2015 14:06
Show Gist options
  • Save rentalcustard/d83cf7bd4805512c90d6 to your computer and use it in GitHub Desktop.
Save rentalcustard/d83cf7bd4805512c90d6 to your computer and use it in GitHub Desktop.
(defmacro new-if [pred then-clause else-clause]
`(cond ~pred ~then-clause
:else ~else-clause))
"This works, in that if I call it like so:
"
(new-if (= 2 3) (while true (print "hi")) :bye)
"I don't get an infinite loop, but I don't understand how. I've unquoted
everything in the macro body, so shouldn't the normal evaluation order
apply? Why doesn't it evaluate then-clause when I do it this way?
"
@rentalcustard
Copy link
Author

I think I'll have more luck doing it with Scheme's define-syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment