span, break can be used in MIDI.Read for searchNoteOff, moveTempoToHead Haddock documentation for functions monotony check on AbsoluteEventList take, drop, splitAt There are too many variants, and I do not know which ones are needed, and how to name them. I'll wait for the first usage. zipWith Relative.TimeMixed: better names for appendBodyEnd prependBodyEnd !! can done with getBodies, getTimes segmentBefore, segmentAfter AlternatingList's laziness should be more fine-grained. The underlying list-of-pair structure still leaks. You can observe it when applying 'mapInit' functions. == done == distinction between AbsoluteList and RelativeList with a newtype? seems to be sensible but requires more wrapping Shall we only wrap the 'time' value? This way we could share types between modules. This way we could not simply define an Arbitrary instance for Absolute EventLists.