
Hi Yitzchak Thanks for the encouragement. Funnily enough its been the working with 'repeat' syntax that has tipped the current revision of my code from being "workable, somewhat ad-hoc, polish-able later" into "horrible - too complex, needs a simpler foundation." As for programming to LilyPond from Haskell, with the latest revision I've managed entirely with the stmap class I posted above (and its pathological extension to a 3 parameter functor - trifunctor?). There isn't a monad in sight in currently. While the results are disappointing at the moment, the domain has been fruitful for cultivating some exotic functional codes: families of unfold functions extending the skipping unfold at the heart of the stream fusion paper [1]; traversals that separate shape from contents [2] and more. Best wishes Stephen [1] http://www.cse.unsw.edu.au/~dons/papers/stream-fusion.pdf further elaborated by Jeremy Gibbons: http://www.comlab.ox.ac.uk/jeremy.gibbons/publications/adt.pdf [2] http://www.comlab.ox.ac.uk/jeremy.gibbons/publications/iterator-msfp.pdf