Describir: Effective meta-programming in declarative languages (BL)