|
|
|
|
|
by benj111
566 days ago
|
|
(foo (bar (baz 1))) is equivalent to foo bar
baz 1
Its still homoiconicthey can still, and in the case of the linked project, probably are turned into the exact same data structure. I get your objection insofar as whats the point? Youre transforming a language that does a thing well into a language that does a thing less well than another language. But on the other hand different approaches make things easier to reason about. sometimes the shell approach of baz 1 | bar | foo may make more sense. sometimes it might be a map, sometimes a for loop. So in that sense, a DSL for python type, scripting makes sense. |
|
> Its still homoiconic
> they can still, and in the case of the linked project, probably are turned into the exact same data structure.
What you are saying means it is not homoiconic any longer. If you print out the parsed representation of lisp code, you get back the same lisp code. If you print out the parsed representation of this whitespace code, you get back the lisp code (data) also. But this is different to what you fed into the parser.
The point of homoiconicity is that the data structure representing the code is the code itself. There's no syntax, it just represents itself. It's super simple. A programming language with syntax cannot be homoiconic. This is complexity.
> I get your objection insofar as whats the point?
"Easy" IS an argument to choose something over something else, but "simple" is a better, stronger argument. Parens syntax is simple. Whitespace syntax is easy, iff you come from/is familiar with a python-style background.
We are debating some obscure thing. The point is the argument :) I hope you have a great day.