Code generation via higher-order rewrite systems
Type checking type classes