Helper for writing DSLs (Domain-specific languages)