A vertex shader with a user-defined function.
(iglu->glsl
'{:version "300 es",
:uniforms {u_matrix mat4},
:inputs {a_position vec4, a_color vec4},
:outputs {v_color vec4},
:signatures {multiply ([mat4 vec4] vec4), main ([] void)},
:functions
{multiply ([x y] (* x y)),
main
([]
(= gl_Position (multiply u_matrix a_position))
(= v_color a_color))}})