http://www.cs.ru.nl/~james/RESEARCH/haskell2004.pdf
In this paper, we show how to manipulate syntax with binding using a mixed representation of names for free variables (with respect to the task in hand) and de Bruijn indices for bound variables. …