A lot of domain languages need infix operators though. And even if you understand the domain, it&#x27;s hard to read and refactor code in the presence of unrestricted macros, whereas in a language where such DSLs are implemented via the type system the tooling will understand that.