Still working on the separation of shader code. I can resolve the sfuns
used in the shaders now but (ironically for lisp) I am having issues
with recursion.
The type inference cant handle the mutual dependency and I'm not sure of
the cleanest way to deal with this yet. To start with I will just not
have recursion but I do need a fix for this.
Also a bug in varjo currently means I can have two functions in the same
'labels definitions' form if one calls the other. This will be fixed
next.