5 ms·
Yes, I "dare" to have an opinion on that syntax. I like it from a theoretical point of view. It's very uniform which is convenient for implementers. It's brill
by ahoge 11y ago
Yes, I "dare" to have an opinion on that syntax.
I like it from a theoretical point of view. It's very uniform which is convenient for implementers. It's brilliant, really.
However, I dislike it from a practical point of view, because this uniform soup is hard to scan and also hard to write.
I pretty much like any other language's syntax better than this one. Even fairly cryptic ones like Erlang's.
- sklogic 11y ago> Yes, I "dare" to have an opinion on that syntax. Is not it stupid, to have an opinion about something you do not know and do not understand? > It's very uniform which is convenient for implementers. It's not that uniform, really. It's so flexible that you can make it look any way you like. Any existing language syntax is a subset of this syntax. > because this uniform soup is hard to scan and also hard to write Just use a better text editor then.
- ahoge 11y ago> [Scheme's syntax is] not that uniform, really. "Scheme's very simple syntax is based on s-expressions, parenthesized lists in which a prefix operator is followed by its arguments. Scheme programs thus consist of sequences of nested lists." That's as uniform as it gets. Everything is the same.
- sklogic 11y agoFirstly, Racket is not a Scheme. There are reader macros and all that bells and whistles. Does this look like S-expressions to you? https://github.com/soegaard/minipascal https://github.com/soegaard/minipascal Secondly, even most Schemes allow to use [ ] and { } in addition to ( ).
- ahoge 11y ago> Firstly, Racket is not a Scheme. Did I talk about Racket anywhere? > Does this look like S-expressions to you? "MiniPacal implemented in Racket" Are you really arguing that implementing some other language is the way to go? https://github.com/eudoxia0/cmacro https://github.com/eudoxia0/cmacro http://research.swtch.com/shmacro http://research.swtch.com/shmacro Totally legit "C".
- sklogic 11y ago> Did I talk about Racket anywhere? This is a thread about Racket, if you did not notice. > Are you really arguing that implementing some other language is the way to go? This is exactly what Lisps are about. You've got a nearly raw AST at the bottom (S-expressions) and then you build up a hierarchy of languages on top of it.
- klibertp 11y ago> However, I dislike it from a practical point of view, How can you be disliking it from a practical point of view if you don't use it in practice? Don't you think it would be different if you tried actually learning Scheme for a week? Do you think it would still be unreadable to you after that week? Why do you think so? Also, take a look at APL or J if you want to see "unreadable" language.
- ahoge 11y ago> How can you be disliking it from a practical point of view if you don't use it in practice? I had plenty of exposure to deeply nested things. This is pretty much like nested function calls. "foo(a, b)" and "(foo a b)" isn't all that different, is it? I prefer to have different bits of syntax for different things because it looks less uniform. I like it when different things stick out in different ways. > Also, take a look at APL or J if you want to see "unreadable" language. Both of these aren't even in the top 50. Can you think of a somewhat popular (non-legacy) language?
- klibertp 11y ago> I had plenty of exposures to deeply nested things. This is pretty much like nested function calls. I have no idea what you mean here. > I like it when different things stick out in different ways. Here's your problem: the "things" are sticking out in a variety of ways in Lisps, you just don't know and can't recognize in what ways exactly. > Both of these aren't even in the top 50. Can you think of a somewhat popular (non-legacy) language? Again, I don't understand what you mean.
- TeMPOraL 11y agoI think this requires an obligatory image explanation for non-lispers: http://www.loper-os.org/wp-content/parphobia.png http://www.loper-os.org/wp-content/parphobia.png
- ahoge 11y ago> I have no idea what you mean here. Nested lists are similar to nested function calls. Did you skip the rest of the paragraph? > the "things" are sticking out in a variety of ways No, they don't. Syntax-wise, everything is the same. "Scheme's very simple syntax is based on s-expressions, parenthesized lists in which a prefix operator is followed by its arguments. Scheme programs thus consist of sequences of nested lists." There shall be nested lists. That's all, folks! In other languages, you have syntax for importing stuff, syntax for declaring a variable, syntax for different loop constructs, syntax for branching, syntax for classes/methods/functions... Each building block comes with its own syntax. This isn't as elegant as having one universal construct for everything, but it's easier to use (once you got used to it), because the syntax itself carries a lot of the information. (define (square x) (* x x)) I rather write something like: square(x) => x * x; "bla(...)" is a bit of syntax for defining a function. "=>" is a bit of syntax for defining a lambda. "x * x" is a bit of syntax for using x's "star" operator. > Again, I don't understand what you mean. J and APL aren't popular languages. There are many unpopular languages with worse syntax. They are also both array programming languages which is a rather odd niche.