Synesthesia already ships _rotate(uv, angle), which rotates a vec2 and hands it
back. So why would you need rot()?
_rotate transforms a point, and often what you want is the matrix itself.
mat2 rot(float a) {
float s = sin(a);
float c = cos(a);
return mat2(c, s, -s, c);
}