Yes, code is data, but that's not what makes Lisp cool
I don&#x27;t think programs are usually strings.<p>Most programs I see are text files. If I edit them in an editor, I don&#x27;t know what data structure represents them, but it might be a doubly linked list of strings, or some other data structure.<p>If a compiler reads a program, it uses typically a stream of characters.<p>A string would be something like this: a delimiter, some characters, the delimiter. Example: &quot;a + b&quot;. It could also be a string data object in some program.<p>But programs are not always represented as strings and many are not. Sometimes they are. For example an EVAL procedure may take a string as an argument - then code is represented as a string or passed at runtime as a string object.<p>When we say in Lisp code is data, we actually mean code is data, but not in the trivial form of text representation formats (text files, strings, ...).<p>It&#x27;s an abbreviation. We expect usually not to mention, that it is not of the trivial version. Like when we speak of a picture with lots of color, we don&#x27;t mention that this excludes pictures with only black, white and shades of grey.<p>Generally, if I see<p><pre><code>  a + b
</code></pre>
then it says nothing about a data structure and its syntax to represent that. All I know that it must be a syntactical legal expression in some programming language.<p>If I see Lisp code in the form of<p><pre><code>  (+ a b)
</code></pre>
I know that this uses the data syntax for s-expressions to represent that code.<p>I then would require that this is syntactical legal Lisp - THIS requires that in an s-expression, the + operator comes first - that it uses prefix syntax.<p>Wien we mean code as data, we mean that Lisp uaes an actual and explicit data format to encode its programs: s-expressions. The data format is similar to JSON or XML, in that it has an explicit external representation. It&#x27;s also similar to JSON, because both have an internal representation in a programming language.<p>If we would use JSON as a format to encode programs, we would also be able to say, code is data.<p>S-expressions are slightly more effective as data encoding for programs than JSON, because it uses less delimiters and encodes a rich set of data structures.<p>So, yes. Code with a non-trivial and simple data-representation makes Lisp cool.