Back when I did a 4GL with them, my amateur trick was to write and test them like normal programs first. Then in the templated form as a normal program. Then do macros. On first two, I can use any technique known to benefit software quality. For programming in the large, interface checks that enforce correct usage are a straight-forward solution.<p>Curious, with your LISP and ML background, what method or methods do you use to ensure your macros are correct and easy to debug?