3 ms·
> First, the idea that "code is data" is a popular aphorism, but even the most casual reflection on what this slogan actually means will reveal that it can't po
by nocman 9y ago
> First, the idea that "code is data" is a popular aphorism, but even the most casual reflection on what this slogan actually means will reveal that it can't possibly be the right answer.
I disagree with this statement. Support for your argument seems to stem from the other statement you then make: "What makes Lisp cool is not that programs are data (because all programs are data), but that they are a particular kind of data.".
Personally I think it's not a good argument, for the following reason: I would guess that 99% of the people who argue that "code is data" is what makes Lisp cool, mean exactly that -- that code is expressed as lists of lists (and they are thinking of all the nice implications of that).
So effectively, you are saying that the statement is invalid because it could mean something else, but almost all of the people who make that statement are making the exact same argument you are for why Lisp is cool.
I opened your article expecting to find an explanation of why some other feature or set of features of Lisp was way more important/useful than just code being written as lists of lists, only to find that you were arguing for the importance of that exact feature.
So while it is worth pointing out that having code as a list of lists has awesome implications, I guess I would have gone about discussing in a different way.
- AnimalMuppet 9y agoI don't think he's trying to persuade people who already buy Lisp. And for everyone else, they can get hung up on "code is data" if it's presented as a "Lisp only" kind of thing, so he avoids that whole discussion and comes at it another way.
- nocman 9y agoAs I said in my reply above, I'm all for the clarification of what Lisp programmers mean by "code is data". I just disagree that the fact that someone may misunderstand what Lisp programmers mean when they use the phrase somehow makes it an invalid thing for them to say. "code is data" has a specific meaning to Lisp programmers, and it is completely valid.
- lisper 9y agoThis piece was written specifically as a followup to this comment: https://news.ycombinator.com/item?id=16388578 https://news.ycombinator.com/item?id=16388578 and the subsequent replies. I was surprised that this message resonated. I thought it was obvious, but it's obviously not. > I would guess that 99% of the people who argue that "code is data" is what makes Lisp cool, mean exactly that -- that code is expressed as lists of lists But "code is data" and "code is expressed as lists of lists" are not the same statement. And the difference matters.
- nocman 9y ago> But "code is data" and "code is expressed as lists of lists" are not the same statement. And the difference matters. Except that when a Lisp programmer says "code is data" that's exactly what they mean. Lisp programs are lists of Lisp lists (say that 5 times fast xD). This gives Lisp code generation powers that leave any string-based code manipulation in the dust (I know you already know this). I'm not against making the clarification, I just disagree with the statement "even the most casual reflection on what this slogan actually means will reveal that it can't possibly be the right answer.". I realize that some may not understand what is meant when a Lisp programmer says "code is data", and it is worth explaining what they mean when they say it. I just disagree that that makes the expression invalid for Lisp programmers to use in that manner.
- lisper 9y ago> Lisp programs are lists of Lisp lists That's actually not true either. Here is a Lisp program: (defun true () t) It's a list of four elements, only one of which is a list. (You actually could define a language where all programs were lists of lists, and you could even make it Turing-complete. But it would be completely unusable because it would consist of nothing but parentheses!) Now, obviously I know you know this. And equally obviously I know that what you meant was different from what you actually said. But that's only because I already knew what you were trying to say. If you're trying to communicate with someone who doesn't already know what you're trying to say (and isn't that the whole point of communication?) then you have to actually say what you mean or you will fail.