3 ms·
Why is common lisp ugly? Many people here suggested common lisp. I was considering it. I like to learn for fun but I am looking for something practical. I will
by priyanshuraj 6y ago
Why is common lisp ugly? Many people here suggested common lisp. I was considering it. I like to learn for fun but I am looking for something practical. I will want to build some useful apps in the end with it.
- chris_j 6y agoI wouldn't go so far as to describe Common Lisp as ugly but it's an old and fairly large language that carries a lot of baggage does a few things differently from modern languages and operating systems. Personally, I tried to learn Common Lisp 15 or so years ago and found it difficult to get the hang of how it works. The Lisp that I eventually got into is Clojure. If you're familiar with either Java or JavaScript then that's what I'd advise looking at. The language itself is well designed and elegant and if you understand the platform that it's running on (JVM or JavaScript depending on which variant of Clojure you're using) then that's very helpful. For me, being able to add a dependency on basically any Java library and use it without too much hassle is brilliant but I'd still love the language even if that wasn't the case.
- ragnese 6y agoCaveat: I'm not an expert in any of it. I've played around with Guile Scheme, Common Lisp, and did a (small) real-world work project in Clojure. I mean, Common Lisp is perfectly fine. And if you want to use it to write real apps, it's a good choice. Especially if you will have dependencies to manage (see quicklisp). There's just a few little things that I don't like as much about it. There's a holy war about "lisp-1 vs lisp-2 (or lisp-n, really)". Not much point in debating that, but scheme is a lisp-1 and CL is a lisp-2. I like that schemes tend to use #f for false and #t for true, whereas CL just uses nil for false, and for empty-list, and anything else for true (which is usually the symbol t in practice). I like the way things are named more in Schemes: map vs. mapcar, number? vs. numberp, etc. I like that the Scheme standards guarantee tail-call-optimization. I believe all popular CL implementations do implement it, but it's not required by the standard. CL has the ugly loop macro, and Schemes emphasize recursion more (also has `do`, though). Schemes have "hygienic macros" which I like much more than unhygienic macros. These things mostly don't matter, honestly. It's all bikeshedding. Lisps and Schemes are very very similar and also very different than most other languages. You can't go wrong with either.
- mumblemumble 6y agoI wouldn't call it ugly, more. . . untidy. Common Lisp grew by accretion over a fairly long span of time. Consequently, it has varying conventions, inconsistent ways of working, and a whole lot of TMTOWTDI going on. That said, perhaps we should be careful what kind of house we're in before throwing stones. Exactly the same accusation could be leveled against Java, Python, C++, and Haskell.
- TurboHaskal 6y agoThis is mostly people complaining about weird names like RPLACA or having to type #' because it's a Lisp-2. From the MIT perspective it can feel inconsistent but for such an old, practical language, it is really well designed. I mean, if Common Lisp is ugly what are Perl and C++ then.
- anentropic 6y agoalso ugly :)
- ragnese 6y agoEven uglier