Compile-Time Rich Types