On Wed, Mar 28, 2012 at 8:46 PM, Chris McBride <[email protected]> wrote:
> I'm not trying to do anything in particular. I do OO programming at work and
> it's been pounded in my head that loose coupling is better than gift
> coupling. I've found it useful on a few occasions. One example, in the
> frontend we wrap all the database calls in a caching layer but we don't need
> that when the same code runs in the backend. I wouldnt know how to do this
> with clojure.
A higher-order function, I should think, so you have something like
(defn basic-retrieval-fn [query & opts] ...)
(def caching-retrieval-fn (some-sort-of-fancy-memoize basic-retrieval-fn))
(defn do-something [conn query retrieval-fn mumble frotz] ...)
Or maybe a dynamic bind:
(def ^:dynamic *retrieval-fn* caching-retrieval-fn)
Or even a configuration file:
(defn get-retrieval-fn []
(let [blah blah blah (Properties. +config-file+) blah blah]
(if foo caching-retrieval-fn basic-retrieval-fn)))
or even
(defn get-retrieval-fn []
(let [symb (with-open [in (open-config-file)] (symbol (first (line-seq in))))]
(resolve symb)))
--
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