&gt; And? DSLs can have any syntax you like. And any type system you want.<p>While you&#x27;re technically correct, as a practical matter you won&#x27;t implement a type system&#x2F;type checker for all the DSLs you create. (Nor do I believe you&#x27;ll even do it for anything approaching a majority.). Obviously, I&#x27;m using the impersonal &quot;you&quot; here.<p>Implementing real type systems is hard and mostly rather tedious work.<p>syntax-parse only gets you so far[1].<p>[1] <a href="https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;syntax&#x2F;Parsing_Syntax.html" rel="nofollow">https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;syntax&#x2F;Parsing_Syntax.html</a>