Exploration of how to write DSLs