How would you declare a namespace within a namespace? Or two namespaces in 
the same file?

On Friday, 23 October 2009 04:41:13 UTC-7, Meikel Brandmeyer wrote:
>
> Hi, 
>
> On Oct 23, 8:45 am, Christophe Grand <[email protected]> wrote: 
>
> > Other solutions are to use @#'ns/private-var to access private vars from 
> the 
> > macro or to make the macro shallow using a public (usually higher-order) 
> > helper function (is this possible in the general case?). 
>
> It is not 100% possible in the general case but it the vast majority 
> of the cases, I'd say. 
>
> Concerning the private Vars: I'd actually suggest to dispose them 
> entirely. Namespaces can be split into an interface space contain the 
> public interface. It can 'use' a special internal namespace, which 
> does not belong to the public API of the library. All defs are normal, 
> public defs. 
>
> This approach solves all problems: 
> - The user knows, what the public API is. 
> - The macros can access everything they need. 
> - Code completion only finds the public stuff. 
> - It doesn't need modifications like a 'semi-private' or 'protected' 
> flag. 
>
> I think, Stephen exercised this approach in c.c.sql. 
>
> Sincerely 
> Meikel 
>
> PS: My opinion: design your library to be used with require and :as 
> instead of use. Document the public API. That is the contract. The 
> contract stays valid whether the system enforces it or not. 
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to