I've changed the ContextFun representation removing the specific arity wrappers, so:
newtype CF1 r1 a = CF1 { getCF1 -> DrawingContext -> r1 -> a }
is now just a type where DrawingContext is still contained by the newtype CF:
type C1 r1 a = CF (r1 -> a)
I had this formulation last year, but felt I was introducing too many new combinators. However after the changes to PosObject, the old representation started to look simpler and more uniform. The arity versions hadn't been as uniform as hoped, with PosObject clearly not fitting the scheme at all.
At present quite a lot of code is stubbed, although the VerySimple example compiles.