ECLiPSe provides a very general macro mechanism that can be used to transform terms and program clauses while they are read into the system and before they are printed out.