Generating performance portable code using rewrite rules: from high-level functional expressions to high-performance OpenCL code
Dependent types in practical programming