MacroML is an experimental programming language based on the ML family, seeking to reconcile ML's static typing and the types of macro systems commonly found in dynamically typed languages like Scheme; this reconciliation is difficult since Turing-complete macro transformations can break type safety guarantees that static typing is supposed to provide.
Some papers related to MacroML include: