(not sure where my reply to Chouser et al. went, but basically I said
that I was writing a macro and I might be overdoing it. I was right!)
Here's what I was trying to accomplish, but in functions, not macros:
(defn slice
"Returns a lazy sequence composed of every nth item of
coll, starting from offset."
[n offset coll]
(if (= offset 0)
(take-nth n coll)
(take-nth n (drop offset coll))))
(let [take-helper
(fn [n slices coll]
(apply interleave (map #(slice n % coll) slices)))]
(defn take-slices
"Returns a lazy sequence of items from coll. Items are
rearranged according to non-negative indexes contained
in collection slices, in blocks of size n (which defaults
to (+ 1 (apply max slices)).
Ex: (take-slices [3 2 1] (range 14)) -> (3 2 1 7 6 5 11 10 9)
(take-slices 5 [2 0] (range 20)) -> (2 0 7 5 12 10 17 15)"
([slices coll]
(take-helper (+ 1 (apply max slices)) slices coll))
([n slices coll]
(take-helper n slices coll))))
Thanks again to everyone who replied!
Mike
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---