Implementing_Type_Systems_as_Macros