Martin Drautzburg wrote: > Steven D'Aprano wrote: > >> If you want iterator operations "similar to itertools", why does this >> mean you need to replace anything? Just create your own iterators. >> >> Or use pre-processing and post-processing to get what you want. >> >> Can you show an example of what you would like to happen? > > Steven, > > my classes repesent musical objects. The fundamental paradigm I want to > apply is that of a Sequence, i.e. the most abstract aspect of music is > that "things" occur in a certain order. > > Then I have a TimedSequence class, which is a Sequences whose elements > have a "time" attribute. I now want to be able to append such Sequences > by writing > > s1 = TimedSequence (time=1,'a') # one-element Sequence > s2 = TimedSequence (time=2,'b') > > y = s1*2 + s2 > > Naively appending those sequences would give me > Time=1,'a' > Time=1,'a' > Time=2,'b' > > but this is not what I want. Time needs to progress if I append a > sequence to another. So what I really want is something like > > Time=1,'a' > Time=2,'a' > Time=3,'b' > > This implies that time is shifted to the next integer, but this is not > always the case. I need to know about some kind of "alignment". In > music this translates to "let a sequence start at the beginning of a > bar", or half bar or quarter note or whatever. > > So I want to write > > y = s1*2 + s2(align=10) > > which should iterate as > > Time=1,'a' > Time=2,'a' > Time=10,'b' > > I have no difficulty passing "align" to the object (using __call__) and > use it while I furnish my own __iter__() method. However I don't quite > see how I can do this with bare itertools, though I may be wrong here. > > Bare in mind that it is not only about somehow getting the job done. The > beauty of the resulting syntax is also important. > In that case why not just assume that the timing of a sequence is relative to the current time unless the "align" argument is given?
You might also need an event of zero duration to set the start time for a sequence. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 PyCon is coming! Atlanta, Feb 2010 http://us.pycon.org/ Holden Web LLC http://www.holdenweb.com/ UPCOMING EVENTS: http://holdenweb.eventbrite.com/ -- http://mail.python.org/mailman/listinfo/python-list