Techniques to write DSLs in Swift