Drawing Programs The Theory and Practice of Schematic Functional Programming