ixshader is a shallow embedding of the OpenGL Shading
Language in Haskell. It aims to look as close to actual
glsl shader code as possible, while providing better
compile-time safety. Currently writing shader code in
ixshader's IxShader monad will catch variable assignment
mismatches, multiplication mismatches and some other
common errors. It also builds a description of your shader
at the type level to use downstream during buffering and
uniform updates. Lastly, it abstracts over shader code
written for opengl and webgl.