Neither particularly short nor particularly clever:
(defn nil-coalesce [coll subs]
(loop [[c & cs :as coll] coll
[s & ss :as subs] subs
acc []]
(if coll
(recur cs
(if (nil? c) ss subs)
(conj acc (if (nil? c) s c)))
acc)))
On Tue, Aug 17, 2010 at 4:41 PM, Justin Kramer <[email protected]> wrote:
> Another one that works with all collections. Short, but not
> necessarily the most efficient:
>
> (use '[clojure.contrib.seq-utils :only [positions]])
>
> (defn nil-coalesce [coll subs]
> (map-indexed (zipmap (positions nil? coll) subs) coll))
>
> Justin
>
> On Aug 17, 4:10 pm, Justin Kramer <[email protected]> wrote:
>> With the precondition that the first collection is a vector:
>>
>> (use '[clojure.contrib.seq-utils :only [positions]])
>>
>> (defn nil-coalesce [v subs]
>> (apply assoc v (interleave (positions nil? v) subs)))
>>
>> Justin
>
> --
> 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