FWIW, one work around for this is to include the sub-namespace as well and reference it from that one. So in your example:
(ns notepad (:require [goog.dom :as dom] [goog.ui :as ui] [goog.ui.Zippy :as Zippy])) (ui/Zippy. "ttt" "sss") On Jul 28, 7:41 am, Marko Kocić <marko.ko...@gmail.com> wrote: > Hi all, > > When dealing with ClojureScript and Closure library it happens pretty often > that Closure namespace is in the same time constructor for some object. > > Take a look for this example: > > (ns notepad > (:require > [goog.dom :as dom] > [goog.ui.Zippy :as Zippy])) > > First, require forces me to require goog.ui.Zippy as Zippy and later in the > code I have to use fully qualified name instead of provided one. > > This works > (goog.ui.Zippy. headerElement contentElement) > > This doesn't work, since Zippy is namespace declaration > (Zippy. headerElement contentElement) > > I know that we can't have both namespace and function with the same name, > but this is pretty frequent situation in Closure library, and is a bit > awkward. > One solution would be that namespace :as symbol is specialcased so that > without namespace prefix Zippy and Zippy. works like a regular function, and > when in place of namespace prefix, it works as a namespace prefix. That > would be pretty in line with Closure library itselfi. > > Then we would be able to use > (require [goog.ui.Zippy :as Zippy]) > (def z (Zippy. "ttt" "sss")) ;; same as calls goog.ui.Zippy. > (Zippy/someMethod x) ;; same as goog.ui.Zippy > > What would be your proposal for this? -- 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