Futamura Projections in a Nutshell

Futamura Projections are usually described with a lot of words, but they are much simpler to understand in types. There are Interpreters, Compilers, and Specializers: a -> b -- Specialized Machine (a -> b)' -> a -> b -- Interpreter (a -> b)' -> (a -> b) -- Compiler (a -> b -> c)' -> a -> (b -> c) -- Specializer Futamura 1: Specializing an Interpreter at a Program results in an Executable