Hi,
On May 19, 3:25 pm, Russell Christopher
<[email protected]> wrote:
> slight error w/ the previous, local-get-in should have been local-get
>
> (defn get-in
> ([m ks]
> (get-in m ks nil))
> ([m ks not-found]
> (letfn [(local-get [nf m ks] (get m ks nf))]
> (reduce (partial local-get not-found) m ks))))
Going to the metal:
(defn get-in
([m ks]
(get-in m ks nil))
([m ks not-found]
(if-let [[k & ks] (seq ks)]
(let [candidate (get m k not-found)]
(if (identical? candidate not-found)
not-found
(recur candidate ks not-found)))
not-found)))
So we stop in the key sequence when an intermediate step
is not contained in the nested structure. Remains the
question whether an empty key sequence is an error.
Sincerely
Meikel
--
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