Type-level operators