On 10-12-07 12:44 AM, Alex Baranosky wrote:
Here is the code I'm working on. The first function is wanted. The second is not. (and the duplication is waiting to be factored out somehow...)

Is there an idiomatic Clojure way to use map-of-distances on the "Line of Note" below, instead of map-of-distances* ?
you could use (apply map-of-distances origin (take-nth 2 locations-n-frequencies)), but I would also rewrite map-of-distances to something like:

(defn distances
    [origin & locations]
    (map (fn [l] [l (dist-in-miles origin l)]) locations))

(defn map-of-distances
    [origin & locations]
    (into {} (distances origin & locations))

Alex

Thanks for all your help.

(defn map-of-distances [origin & locations]
  (loop [dists {} locs locations]
    (if (seq locs)
      (let [[loc & more] locs
            dist (dist-in-miles origin loc)
            dists (assoc dists loc dist)]
        (recur dists more))
      dists)))

(defn map-of-distances* [origin locations]
  (loop [dists {} locs locations]
    (if (seq locs)
      (let [[loc & more] locs
            dist (dist-in-miles origin loc)
            dists (assoc dists loc dist)]
        (recur dists more))
      dists)))

(defn relative-distance
  "Gives distance * frequency.
  frequencies are in days out of 365"
  [origin & locations-n-frequencies]
(let [loc-w-dists (map-of-distances* origin (take-nth 2 locations-n-frequencies)) ;;;;; <-- Line of Note
        loc-w-freqs (apply hash-map locations-n-frequencies)]
    (multi-fmap (fn [d f] (* d f)) loc-w-dists loc-w-freqs)))
--
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 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

Reply via email to