This file holds ideas for new features. User Interface: * Holding shift should cause the direction widget to snap to multiples of the LSystem angle relative to north. Drawing: * Add further drawing primitives, apart from line segments. * Make these user customisable, perhaps through hs-plugins. * Allow the user to attach them to various symbols in the LSystem grammar via some sort of nice user interface. * These are in essence, Cairo renderings with two special points, start and end, perhaps (0,0) and (0,1). We can just use Cairo matrices to scale them to the right size before drawing. * Additional user customisable rotation primitives. * Three dimensional rendering. This could be simulated using Cairo, but needs lots of support in other areas. LSystems: * Context sensitivity. This seems hard because it clashes with the current monadic approach. (The function passed as the second argument to bind only gets to see one symbol.) This may require arrows. * (Mentioned above) Grammar extensions for arbitrary rotation. Eventually if we move to 3D, this becomes even more necessary, since there will be a lot of different kinds of rotations we'll probably want to express in a given 3D system.