Extend your language: Difference between revisions
Content added Content deleted
(Added Fennel.) |
|||
Line 503: | Line 503: | ||
(if (quote c1) (if cond2__1806__auto__ (quote bothTrue) (quote firstTrue)) |
(if (quote c1) (if cond2__1806__auto__ (quote bothTrue) (quote firstTrue)) |
||
(if cond2__1806__auto__ (quote secondTrue) (quote else)))) |
(if cond2__1806__auto__ (quote secondTrue) (quote else)))) |
||
</pre> |
|||
An alternative, cleaner way using case macro of Clojure: |
|||
<lang clojure> |
|||
(defmacro if2 |
|||
[cond1 cond2 both-true first-true second-true both-false] |
|||
`(case [~cond1 ~cond2] |
|||
[true true] ~both-true, |
|||
[true false] ~first-true, |
|||
[false true] ~second-true |
|||
[false false] ~both-false)) |
|||
</lang> |
|||
<pre> |
|||
> (if2 true false \a \b \c \d) |
|||
\b |
|||
> (macroexpand-1 '(if2 true false \a \b \c \d)) |
|||
(clojure.core/case [true false] [true true] \a [true false] \b [false true] \c [false false] \d) |
|||
</pre> |
</pre> |
||