Here is a completely unbiased recommendation. Use PLT Scheme. :) Use the module system to implement your language as macros. Integrate it with DrScheme, define a series of subsets, and voila`, you even have a gentle-slope educational environment for it, not to speak of type inference across your language. -- Matthias