Why is the Lisp ecosystem so autistic?

I have been trying to learn Lisp and the more I learn about it, the more angry it makes me. The language itself is fine, in fact it looks like a stroke of genius (no wonder, it's by a mathematician), but for some reason it seems to have attracted the most autistic people on the planet. You know how JavaScript is pozzed by SJWs? Well, Lisp is pozzed by autism.

Let's start with the two dialects we have (because every other Lisp has gone extinct with its machine): Common Lisp and Scheme. Scheme tries to be a minimal language, which is great for learning fundamental concepts from SICP. But for some reason people seem to think that it's a good idea to use it for actual production, so you end up with a bunch of implementations that all do their own thing.

Common Lisp is the hodgepodge of all extinct Lisps. It's like a Frankenstein monster, pieced together from dead languages and brought to life as a hideous abomination. There is no one alive anymore who know what the 'f' in 'setf' stands for. Who thought that 'progn' was a good name for "evaluate these expressions in sequence"?

Writing portable Lisp (Scheme or CL) is near impossible, unless you limit yourself to toy programs. You can write code that's 90% portable, but then you have details where every implementation differs. I'm not talking about undefined behaviour like in C, you can still write portable code as long as you don't assume a fixed size for 'int'. But in Lisp you can't even write the code for reading a file in a 100% portable manner. Gee, why would I ever want to read a file? Of course you can write some extra layer to smooth over it with a macro, but then you have just postponed the program for a while by writing a bunch of "if the implementation is X do Y".

Then there is interacting with the rest of the world. Like the autists that use it, Lisp does not like moving out of its comfort zone and interacting with others. There is a FFI, but it's implementation dependent (of course). You cannot rely on the ability to use for example C functions because that depends on your implementation. That makes it practically impossible to rely on libraries other than those written in Common Lisp. You might outdated language binding for SDL (and good look updating the things since Lisp autists never write comments), but most of the time you will not find anything. Want to write a Coca application in Common Lisp? Well, fuck you!

Want to distribute your Lisp program? That's an afterthought with half-assed support in most implementation, and not available in the rest.


So far the only good option I have found is to pick one implementation like Guile or Racket and stick with it like you would do with Python. And hope the project doesn't die, because then all your code will be dead. Is there any good book about Lisp written in the current century? I have been trying to read Practical Common Lisp, but it's really not well written. I was expecting something of a "working man's book" that gets you down and dirty, but this is really just a walkthrough through some specific program. Like every walkthrough you eventually reach the end, but you haven't really learned anything substantial. That book is actually what made me go on this rant.

Other urls found in this thread:

en.wikipedia.org/wiki/Scheme_(programming_language)
shodan.me/books/Programming/Lisp/
youtube.com/watch?v=I25UeVXrEHQ
twitter.com/SFWRedditImages

tl;dr

As far as Scheme goes Racket > Everything. For Common Lisp all you need is SBCL. Don't bother writing portable code, because all other Schemes are shit and Common Lisps are similar enough that it isn't a big deal to port if needed.
There is also Clojure if you want Lisp on Java, or Hy if you want Lisp on Python. Never used them myself but they might be interesting for portability.
If you want to see CL used in a practical way take a look at the game Abuse. It was written in C++ with a subset of CL as a scripting language. It's pretty old now and the source code was released, so that might help.
Personally I use Lisp the way other people use Haskell: Only if it makes my problem simpler. Sometimes you'll run into a situation where it just clicks and you realize List Processing/Functional Programming is the best way to solve it. Otherwise I just do everything in Perl.

Clojure is really hip and runs on the JVM but also compiles to other targets.

There's also Emacs Lisp :^)

I can't wait for r7rs modules

writes a whole essay to complain that Lisp is full of autists

look on a mirror user, and ask yourself: what attracted you to Lisp. You can probably generalize from that answer to the rest of Lispers


at least GHC is the sole Haskell de facto implementation, so portability isn't an issue there.


when is Guile going to replace elisp? I'm deliberately avoiding learning Emacs Lisp because I don't want to feel I've wasted my effort when Guile was the future

There are plenty of Elisp programs out there that eventually need to be updated. You won't be able to update them if you can't interpret them properly.

Never, iirc emacs will have two modes, Guile or elisp.

I'm not into Lisp or Scheme, but they do seem to have a standard.
> en.wikipedia.org/wiki/Scheme_(programming_language)

In practice, almost nobody does, because they write for Linux, and test on Linux. Then they call it "open source, portable" and it's a big fat lie.
t. OpenBSD user, I know this all too well.

And btw, the OpenBSD devs had to do some major hacking to even get gcc to work. Because gcc devs don't give a rat's ass about stuff that's not Linux.

The older versions of the language are designed to be "minimal" meaning features like "module loading" or "loading a file" are not part of the standard. This means that implementations of Scheme have their own ways of doing things that are needed but are not specified as an official language feature.

And people wonder why others treat a project using systemd as the end of the world.

Guile is wonderfull.

For actual work I'd use racket to be honest. Scheme with batteries included, one of the biggest schemes, definately a safe bet.
For a good book in the last century, for common Lisp you have 'let over lambda' I guess. But to be honest, Lisp has been getting less popular every year for a while now, and as such no good books are coming out because hardly anyone will want them anyway.

I forgot in my OP rant the reason that pushed me over the edge yesterday. I was reading the book Practical Common Lisp, and in chapter 26 the author uses a library called FOO to generate HTML. There is no link to it, so I have no fucking clue how to find it. Who names a library FOO anyway? It's like you're trying to make something people will never use. Or maybe to book is just one giant troll where the author makes you read through 25 chapter before giving you the middle finger because you cannot move on. For all I know, FOO might not even be an actual library.


A number of things. The biggest would probably be meta-programming. I'm a mathematician, so being able to define a mini language for a particular domain would be really cool instead of fiddling around with data structures right next to general code. If I want to use only linear algebra then the entire program should be expressed only using linear algebra.

Another thing is the syntax. While s-expressions are not the prettiest thing in the world, there is only one single thing to remember and you can explain it to anyone in five sentences or less. Compare that to C++ where it looks like every operator is overloaded with multiple meanings.

Data as code and code as data is a very powerful idea as well. Instead of messing with some serialization I can simply turn the in-memory data into code, write it to disk and then load it again, make it into data and move on.

And finally the fact that it supports every paradigm under the sun and that you can add support for anything yourself instead of waiting for the language implementor to agree that it is a good idea, agree on a standard, publish the standard and then wait for compilers to catch up with the standard.

Isn't Guile just the compiler? On Guile's homepage it says that Guile supports Scheme, ECMAScript and Emacs Lisp. So I guess the language itself won't change.


Right, I forgot about Clojure, a.k.a. "Java is so shit, we had to add a new language to its VM". Emacs Lisp doesn't count because it's just a scripting language for Emacs, not something to write a general program in. (unless you consider Emacs to be an operating system)

But then I'm tying the longevity of my program to one particular implementation. If it dies, then my code is dead as well. That's like writing C for 32-bit architectures only to find you're royally screwed when 64-bit comes along.

To be fair, really portable and safe C only became feasible with C99, but GCC is older than that. I only write C99 as a minimum, but that's easy to do these days when it is widely supported.


Thanks, I'll take a look at Let Over Lambda then. What bothers me about Racket is that it's interpreted, whereas SBCL is actually compiled to machine language. Makes me suspicious about how much it can be used for real programs. Then again, people have been writing video editors and web browsers in Python.

CL has the portability library UIOP which is everywhere, and also roswell for building ordinary executables.
UIOP is so useful and everywhere it should have a proper documentation like Hyperspec.
I find portability achievable in modern CL, but in Scheme however... usually I use it for small utilities so I stick to Guile.

Stop lying faggot. Everybody knows OpenBSD devs were too autistic to accept GPL3 license thus stayed with last gcc version which was distributed with GPL2. Sure they have hacked it a lot to get never shit compile with ancient compiler but I hardly would blame gcc folk for that

t.other OpenBSD user

Are you aware that OpenSSH needs a whole separate project to get it to run on other operating systems? OpenBSD itself does this too.

Clojure is a Lisp-family language, but it's not a Common Lisp implementation.

There's ABCL (Armed Bear Common Lisp) if you want CL on Java.

Did he say it was a Common Lisp implementation or were you just clarifying?

Autists start screeching if you say Lisp but don't mean Common Lisp.

Wrong.
Right.

The license thing is a big problem for things that go in the base system. That's why all BSD forks have been trying to get other compiler, but it takes time.


They provide the OpenSSH. What exactly does GCC devs provide? Nothing but problems for everyone who's not on Linux.

It's a problem that they've appointed on themselves. This is the path they chose.

I do embedded work that makes use of GCC. There is no Linux being used in the computers I am programming.

Practical Common Lisp is shit. Read Touretsky's Book, then read Paul Graham's book. I know you specified "21st century," but the language really hasn't changed all that much in the last 20 years the way Javascript and Sepples have.

Better not rely on TCO then, because that's not specified by the standard...

Just use SBCL.

It is unfortunate that you had a bad experience with the book.
If you want a good book on lisp it's the little schemer.

By Touretzky's book I assume you mean Common Lisp: A Gentle Introduction to Symbolic Computation and by Pau Graham's Book you mean On Lisp. Which one should I read first?


I already have a good grasp of Scheme thanks to SICP. I was looking into Common Lisp as a language for more heavy lifting. (I also didn't like The Little Schemer's style)

The GCC devs provide GCC. You know, the compiler OpenBSD uses. It's not the only compiler available, but OpenSSH is not the only SSH implementation available.

I guess evryones has different taste :)

I started with the little schemer when I was at ground 0 so it's kind of a nostalgia book.

Lisp was at the center of the AI scam.

I was under the impression that en elisp interpreter written in guile was going to smooth the transition.


iirc, elisp mode would actually be implemented in guile, and guile would be the native language. In any case, I look forward for scheme being 1st class citizen language in emacs.


yes, those always are the appealing factors behind lisp
which naturally leads to a fragmented community. we can't have it both ways


only a problem if you are developing proprietary software.

OpenBSD is a giant non-standard OS. It breaks all traditional ABI and syscall paradigms in order to provide increased security

Yes, those ones.

A Gentle Introduction is a Lisp-for-Dummies book, so read that one first, although you can probably skip some of the "additional material" at the end of each chapter. Alternatively, you could read Stuart C Shapiro's LISP, an Interactive Approach if you want more of a work book and less of a textbook. Both of these books are introductory texts with a few exercises per chapter.

On Lisp shows you how to apply this basic information so that you may write programs in a Lispier way. Don't start with this one.

shodan.me/books/Programming/Lisp/ if anyone else is interested

Are Land of Lisp and Realm of Racket any good or are those just "lol, so random"?

....Emacs lisp?

Fuck off faggot

Realm of Racket is good but it only focuses on video games. It rushes a little on introducing Racket's basics, and Lisp syntax, so don't make it your only Lisp book.

Funny that CLers LOVE to argue that "my code will still run in 108 years".
Which is pretty much stupid to expect.
Still, regarding the portability, no language can be entirely portable at all.
Take, for example, networking. TCP/IP is and will stay in the foreseeable future ad the de-facto infrastructure for internetworking, however the CL standard left it out because muh alternative protocol suites.
This comes as a double-edged sword: for portability they exclude the most widely used protocol standard, but then you exclude networking as a whole while aiming for portability, thus rendering networked applications necessarily implementation-dependant....
One reason you cannot as much as open a file portably has to do with the platform, and such a thing as FFI both takes into account the lisp implementation and the platform it's running on.
For anything but simple file/terminal IO you're pretty much bound to use external libraries. And those of course are not portable.
I believe the aim in standarization was to make a language that is easy to adapt to larger projects, particularly those that already existed at the time, when Lisp saw much more active development (the world has changed in the last 20 years). If, say, a MacLisp project was to be ported to a ZetaLisp environment, there should be a common layout for the base syntax and semantics, and not much in the way of external functionality. The filesystem, graphics, network, and the host OS are peripheral and can be integrated into the standard, larger part through some macros and other adjustments.
The language is not complete, it's made to integrate into various lisp systems without there being too much conflict between them.
Of course, fast forward 20 years, MacLisp and ZetaLisp are dead, the dominant market is unix (with which lispers have a bitter relationship), and mainly linux, which is an absolute mess.

Terry Davis says HolyC will work for next 1000 years.
He doesn't have TCP/IP, so I guess he knew what he's talking about.

C can integrate with any network protocol whatsoever.

Stallman made it and he's autistic
youtube.com/watch?v=I25UeVXrEHQ

Anyone have the video of him being asked a buncha questions and getting mad that he could answer them one at a time but the person is asking too many questions.

He's involved with it but he didn't make it.

ty

I hope you're not using computers

Full video to this? I know this feel that he's feeling.

I've been trying to learn CL lately, with gentle introduction, and practical common lisp, and land of lisp. There's things I like but OP is right about a lot of things. Aside from niche uses and autism, this language doesn't seem to have a future and scheme is worse with the exception of racket which is going to move further away from scheme anyway.

what do?

Thanks, I have started reading A Gentle Introduction. I'm at Conditionals now, skimmed the chapters so far because I already have some Lisp experience. The "gentle" part is indeed fitting, I finally feel like I'm reading something by a normal person who actually explains things.

I switched to Haskell so now of course, I don't worry about this problem anymore.

But this wasn't my first time attacking the beast. Much has been written and much of it isn't very good for learning Haskell. There's a lot of bad stuff out there with excellent Google-juice just because it was the first time someone wrote about it and other people linked to it. Your sources for learning have to be better than that.

"Haskell Programming from First Principles" starts you off with lambda calculus in Chapter One and builds from there. That's right, lambda calculus... first chapter. Haskell is built on it just like the Lisps. You already know its universal and you can do anything with it, but that doesn't make it easy to use. The parenthesis which used to be clarity are now the noise. Haskell isn't line-noise---your mind is the noise, the parenthesis are the noise. The lets and the conds are just bullshit macros hiding lambda from your bored little brain because using lambda as a primitive fucking sucks. It works, but it sucks your ability to conserve your attention from the way you do the work to the reason you do the work. You need strong type theory and higher order types. In this book you won't even get to Monads until about 700 pages later in the book, which will kick your ass like 100 hindu-squats--you might think that they're easy at the beginning, but soon, the burn grows and you fall down the stairs. You get up. Do it again. Fall down six times, get up seven.

Now get off of Holla Forums and do the fucking work you pathetic Lisp user and learn Haskell, you'll be a better systems person than if you just limped along struggling with Scheme|CL|&c.

What is that even supposed to mean? People have been saying that for ages and the language is still here.

LISP like languages will never ever die, ever.

It's not autistic, it's kiketastic.

loved your (lack of) argumentation proprietary bitch.


this is why we see new Lisps like Clojure bubbling up all the time, right?


That's the correct approach. Lambda calculus is simpler to understand than the functional programming languages built on it; and you will need it to understand those languages anyway. That's not to say lambda calculus alone amounts to a practical programming language.

you aren't thinking clearly. Haskell/ML-like syntax is inelegant and extremely ambiguous, just like the standard math notation it tries to emulate.

I know both languages. I would personally use something like Liskell if only it were actively maintained. Haskell has the best semantics, but not the homoiconic syntax.