&gt; <i>complained that it&#x27;s not possible to produce a &#x27;flat binary array suitable for direct copying to output device memory&#x27;</i><p>I believe my mistake was using the term &#x27;array&#x27; rather than &#x27;string&#x27;.<p>This should read it&#x27;s not possible to define a &#x27;flat binary string, of variable length, in a pure functional manner, through implicit concatenation, with the guarantee that every return value reduces to a binary string, using the commonly accepted semantics of s-expression evaluation common to all Lisps&#x27;.<p>It certainly possible to build and process fixed size binary strings by adding, as I mentioned, &quot;non referentially transparent features&quot; to your language implementation, including Common Lisp&#x27;s &quot;replace&quot; operation.<p>However, since such semantics are procedural and imperative in nature, they do not lend themselves well to the production of concise and declarative definitions suitable for describing the encoding of formatted binary strings adhering to a specific protocol, such as what one might find in the documentation of protocols for mass communication, encryption, and long term storage.<p>If they did, then we would most likely expect to see Scheme\Lisp\Clojure programmers of all varieties directly importing the same open protocol definitions from an established sources directly into their application codebases, and not repeatedly rewriting this functionality or relying on bindings to C\Java libraries.<p>&gt; <i>Common Lisp was built to be an industrial-strength language</i><p>I am not discussing the limitations of Common Lisp in particular, I am discussing the limitations of Lisp family of languages as a whole, and describing why there will most likely always be someone implementing a new slightly different variants of it, of which Common Lisp is but one example, and why it is unlikely that Lisp programmers will ever converge on one single language.