Abstract Shader Haskell EDSL