Let's leave aside the recommendations not to do it. I'd like to understand 
why I get the exception when I make such a call (from a public macro to a 
private macro), and if it is possible, what am I doing wrong here...
On Monday, March 17, 2014 7:40:42 PM UTC+2, tbc++ wrote:
>
> Don't use private vars. Instead move the macro to a sub namespace called 
> "internals" or "impl" or something like that and make it public. Prefer 
> trusting your users instead of limiting them. 
>
> my $0.02
>
> Timothy
>
>
> On Mon, Mar 17, 2014 at 11:33 AM, Yoav Rubin <yoav...@gmail.com<javascript:>
> > wrote:
>
>> I'm familiar with that trick, but is it a language feature (and then I 
>> can rely on to not being changed in the future)? or is it a hack that based 
>> on something that may change in future releases?
>>
>> Thanks,
>>
>> Yoav
>>
>>
>> On Monday, March 17, 2014 4:09:23 PM UTC+2, Maik Schünemann wrote:
>>
>>> Hi, 
>>> I guess that maybe the same trick works for calling private functions 
>>> from another namespace via getting the var and calling it. 
>>> That being said, macros calling macros gets very complex after a short 
>>> time, it is better to have helper functions instead of macros. 
>>> The functions just accept s-expressions and return s-expressions. I 
>>> find myself doing exactly that for nontrivial macros. 
>>>
>>> Hope that helps, 
>>> Maik 
>>>
>>> On Mon, Mar 17, 2014 at 7:02 AM, Yoav Rubin <yoav...@gmail.com> wrote: 
>>> > Hi All, 
>>> > 
>>> > I have a namespace that has two macros as part of its public API, and 
>>> > another macro that act as helpers for the public macro 
>>> > 
>>> > (defmacro helper-mac [arg1 arg2 f] 
>>> > ;; do stuff with f , arg1 and arg2 
>>> > ) 
>>> > 
>>> > (defmacro m0 [arg1 arg2] 
>>> >    (priv-mac arg1 arg2 f1) 
>>> > ) 
>>> > 
>>> > (defmacro m1 [arg1 arg2] ( 
>>> >   (priv-mac arg1 arg2 f2) 
>>> > ) 
>>> > 
>>> > f1 and f2 are just two functions. 
>>> > 
>>> > I would like to make the helper macro private (using  ^:private), but 
>>> when I 
>>> > do it and call either m0 or m1 from another namespace, I get an 
>>> exception 
>>> > saying that helper-mac is private. 
>>> > 
>>> > Is it possible to call from to a macro in another namespace when that 
>>> macro 
>>> > is calling a private macro in its namespace? 
>>> > 
>>> > Thanks, 
>>> > 
>>> > Yoav 
>>> > 
>>> > -- 
>>> > You received this message because you are subscribed to the Google 
>>> > Groups "Clojure" group. 
>>> > To post to this group, send email to clo...@googlegroups.com 
>>> > Note that posts from new members are moderated - please be patient 
>>> with your 
>>> > first post. 
>>> > To unsubscribe from this group, send email to 
>>> > clojure+u...@googlegroups.com 
>>> > For more options, visit this group at 
>>> > http://groups.google.com/group/clojure?hl=en 
>>> > --- 
>>> > You received this message because you are subscribed to the Google 
>>> Groups 
>>> > "Clojure" group. 
>>> > To unsubscribe from this group and stop receiving emails from it, send 
>>> an 
>>> > email to clojure+u...@googlegroups.com. 
>>> > For more options, visit https://groups.google.com/d/optout. 
>>>
>>  -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> “One of the main causes of the fall of the Roman Empire was that–lacking 
> zero–they had no way to indicate successful termination of their C 
> programs.”
> (Robert Firth) 
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to