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

Reply via email to