Extend your language: Difference between revisions

(Added Fennel.)
Line 503:
(if (quote c1) (if cond2__1806__auto__ (quote bothTrue) (quote firstTrue))
(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>
 
Anonymous user