“Programs written in a DSL [domain specific language] also have one other important characteristic: they can often be written by non-programmers … a user immersed in a domain already knows the domain semantics. All the DSL designer needs to do is provide a notation to express that semantics.” Paul Hudak ( 1997 )