seeking a lazy way to interleave a constant

62 views
Skip to first unread message

Andrew

unread,
Apr 9, 2012, 10:31:21 PM4/9/12
to clo...@googlegroups.com
Given a lazy sequence of numbers is there a way to interleave a constant and get another lazy sequence? Say the first sequence is 1 2 3 4 ... I'd like the second sequence to be 1 0 2 0 3 0 4 0 ....

Thanks in advance!

dennis zhuang

unread,
Apr 9, 2012, 10:34:25 PM4/9/12
to clo...@googlegroups.com
D o you want this?
user=> (def x (interleave (iterate inc 1) (repeat 0)))
#'user/x
user=> (take 10 x)
(1 0 2 0 3 0 4 0 5 0)

2012/4/10 Andrew <ach...@gmail.com>
Given a lazy sequence of numbers is there a way to interleave a constant and get another lazy sequence? Say the first sequence is 1 2 3 4 ... I'd like the second sequence to be 1 0 2 0 3 0 4 0 ....

Thanks in advance!

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en



--
庄晓丹
Email:        killm...@gmail.com xzh...@avos.com
Site:           http://fnil.net
Twitter:      @killme2008



Ben Mabey

unread,
Apr 9, 2012, 10:35:00 PM4/9/12
to clo...@googlegroups.com

Yep, and it is even called interleave. :)

clojure.core=> (interleave [1 2 3 4] (repeat 0))
(1 0 2 0 3 0 4 0)
clojure.core=> (doc interleave)
-------------------------
clojure.core/interleave
([c1 c2] [c1 c2 & colls])
Returns a lazy seq of the first item in each coll, then the second etc.
nil
clojure.core=> (doc repeat)
-------------------------
clojure.core/repeat
([x] [n x])
Returns a lazy (infinite!, or length n if supplied) sequence of xs.

Cedric Greevey

unread,
Apr 9, 2012, 11:10:26 PM4/9/12
to clo...@googlegroups.com

user=> (interpose 0 [1 2 3 4 5])
(1 0 2 0 3 0 4 0 5)
user=>

Ben Mabey

unread,
Apr 9, 2012, 11:15:10 PM4/9/12
to clo...@googlegroups.com

Ah, I forgot about that one!

As an aside.. I just looked at the source for this, what does the
:static tag in the metadata do?

(defn interpose
"Returns a lazy seq of the elements of coll separated by sep"
{:added "1.0"
:static true}
[sep coll] (drop 1 (interleave (repeat sep) coll)))

David Powell

unread,
Apr 10, 2012, 3:36:08 AM4/10/12
to clo...@googlegroups.com


> As an aside.. I just looked at the source for this, what does the :static tag in the metadata do?

From what I can make out... nothing.  I think it is left over from an experiment to improve var lookup times prior to dynamic binding being disabled by default.

Alan Malloy

unread,
Apr 10, 2012, 5:12:51 AM4/10/12
to Clojure
Confirmed: all of the compiler's interactions with the :static key are
currently commented out.
Reply all
Reply to author
Forward
0 new messages