You can pretty much call anything outside of the quote, in fact all runtime
information is available (you have access to anything that was previously
read). The main thing to understand is that all parameters passed to your
macro are unevaluated.
On Sat, Feb 14, 2009 at 10:45 AM, samppi wrote:
Thank you so much. I'm confused, however, about what functions you're
allowed to call inside a macro outside of a quote. I read once that
"runtime information" was unavailable during the macro phase. But it
seems that one is still allowed to call array-map, apply, take-nth,
and vec during the macr
On Fri, Feb 13, 2009 at 11:17 PM, samppi wrote:
>
> I'm trying to write a macro that expands from this:
>
> (product-context [n rule0, m rule1)]
> (rule-maker2 (+ n m)) rule3))
>
> Into this (assume that conc-fn and conc-products are functions):
>
> (fn [tokens]
> (if-let [[remainder# n m] (con
I'm trying to write a macro that expands from this:
(product-context [n rule0, m rule1)]
(rule-maker2 (+ n m)) rule3))
Into this (assume that conc-fn and conc-products are functions):
(fn [tokens]
(if-let [[remainder# n m] (conc-products [rule0 rule1] tokens)]
(conc-fn [(rule-maker2 (+