I have a feature request for the 'use' function. First an example. I
have some real-world code like this:
(ns n01se.net.graph.issues
(:import (java.text SimpleDateFormat ParsePosition)
(java.util GregorianCalendar Calendar)
(org.jfree.chart ChartFrame))
(:use [clojure.zip :only (xml-zip node)]
[clojure.contrib.lazy-xml :only (parse-trim)]
[clojure.contrib.zip-filter.xml :only (xml-> attr text)]
[clojure.contrib.seq-utils :only (reductions)])
(:require [clojure.contrib.zip-filter :as zf]
[com.markmfredrickson.dejcartes :as chart]))
It struck me as awkward that libs are separated into :use and :require
blocks when I need almost the same thing from each. In fact, any one
lib has a tendency to be shuffled between the two as I tidy up usages
in the code and change my mind about whether I want the whole
namespace aliased or specific functions brought in.
After kicking around some alternatives, I realized 'use' is sufficient
for all cases:
(ns n01se.net.graph.issues
(:import (java.text SimpleDateFormat ParsePosition)
(java.util GregorianCalendar Calendar)
(org.jfree.chart ChartFrame))
(:use [clojure.zip :only (xml-zip node)]
[clojure.contrib.zip-filter :as zf :only ()]
[clojure.contrib.zip-filter.xml :only (xml-> attr text)]
[clojure.contrib.lazy-xml :only (parse-trim)]
[clojure.contrib.seq-utils :only (reductions)]
[com.markmfredrickson.dejcartes :as chart :only ()]))
This is much prettier to my eye, but has a couple things that could be
better. So, feature request #1 is that if a libspec has an ":as"
option, that the ":only []" option be implied. That is, if I'm
aliasing an namespace, don't by default refer in all that namespaces
vars.
While this would technically be a breaking change, it seems unlikely
to me that it will cause much if any real-world disruption. Any usage
that actually intended to both alias the namespace and refer all the
symbols could say [my.lib :as mylib :exclude ()]
--Chouser
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---