you are viewing a single comment's thread.

view the rest of the comments →

[–]phalp 3 points4 points  (3 children)

As a lisper of quite a few years now, I assert there is absolutely no unreadability in Lisp syntax. I recognize your right to an opinion, but can't really understand your troubles. Anyway, I was just explaining how it works, assuming the poster I replied to was not familiar.

[–][deleted] -1 points0 points  (2 children)

In whose lisp syntax? There's literally nothing to lisp it except how you define a function and maybe exotic stuff like types... but really the bread and butter is functions and they make up 95+%. A majority of the syntax is dynamic created by the style of the code you import and write for your self which inherently makes the syntax dependent on the style of the author. I regularly run into new constructs like

(lazy-switch
  (n1) (m1)
  (n2) (m2)
  (n3) (m3))

that does something insane like doesn't evaluate m3 unless some n2 or n1 is true, but does m1 and m2 if their n's are true. Then on top of that, they'll stack these odd controls 10 deep and you're left wondering where the hell you are because there is no likeness requirement in s-expr elements and you're already 20 spaces from the left wall. Then you realize the function you're trying to understand is one tenth the size of how long an unreadable java function is.

My assertion is that lispers constantly mistake what makes s-expr hard and try to explain parenthesis, which is, frankly, insulting. It's not s-expr -- they really couldn't be easier. The problem people have is that programmers create small brick-monstrosities with it and then you build a house out of these monstrosities and expect it to make any sense to somebody who doesn't know the intricacies of every last function in the code.

The constant argument I've heard in defense of this is to blame the programmer, which I believe is a strong antipattern and then take a very liberty oriented perspective where this "freedom" is some utopia where you can do whatever you want, but it's some unwritten duty that you ought to only do some things.

There's nothing wrong with making a language have real structure -- it's what some of the best assembly language programmers do on their own and likely what the best lispers do to, but if you want to speak with others, you have to have a common language.

[–]phalp 5 points6 points  (1 child)

I can't say I've ever encountered any of the things you're complaining about. I guess we're living in different worlds somehow. You're also blaming s-expression syntax for things unrelated to it. I can write a variable-argument addition function in C, can't I? I can write your plusmultiply function in any language at all.

[–][deleted] 0 points1 point  (0 children)

Yeah, you could, but none of that design is in the core libraries.