Wednesday, October 22, 2008

HNotate

Copperbox revision 285.

The Notate monad (WriterT (ReaderT (ReaderT))) is now used everywhere that accesses values in the env (e.g. the default note length, the bar length, or the relative pitch).

I should have done this sometime ago - for one thing it makes the HNotate modules more uniform. Some e.g. the Traversals module, no longer access the env directly as a passed in parameter. Secondly it makes all the non-pure functions log-able - this would have been a big help in the recent debugging.

I've found out (but not yet fixed) why properties properties like partial start are being dropped - the Expression datatype should not allow lists of let bindings - only single let bindings and lists of output directives. Output directives must be inside the right-hand side of a let binding to have effect - with lists of let-bindings they were getting misplaced.

Blog Archive

About Me

My photo
Disambiguating biog as there are a few Stephen Tetley's in the world. I'm neither a cage fighter or yachtsman. I studied Fine Art in the nineties (foundation Bradford 1992, degree Cheltenham 1992 - 95) then Computing part-time at Leeds Met graduating in 2003. I'm the Stephen Tetley on Haskell Cafe and Stackoverflow.