Statements dreamed up by the utterly deranged :comfyderp:

Imagine trying to top up JavaScript's ridiculousness and winning!

Or this:
> (eq 'a 'b) is false.
> (eq 'a 'a) is true.
> (eq 3 3) might be true or false, depending on the implementation.

In what universe 3 and 3 might not be equal by any metric imaginable? Common Lisp is truly a cursed language.

Every time I try to love Common Lisp, it slaps me on the face with a huge club and leaves me bleeding. Truly cursed language.

@pureevil

I'm lucky enough to only have used racket and scheme (small amount of guile too)

CLisp is scary
@pureevil


To be fair, those equality checks all mostly seem useful, if you don't wanna do specific checks,

But idk, I mostly just use eq and if it doesn't work, I do some mutations

@lunarised what if I just wanna compare to values? Surely, I could just use `equal` everywhere, except it doesn't always work on symbols.

From cs.cmu.edu/Groups/AI/html/cltl:
>Symbols are compared as for eq. This method of comparing symbols can violate the rule of thumb for equal and printed representations, but only in the infrequently occurring case of two distinct symbols with the same print name.

What the literal fuck is this shit? :facepalm_cirno:

@pureevil @lunarised Two unequal symbols with the same name in the same package is not something you would encounter in sane code. The only way it could happen is with two gensyms where you specifically manipulated the gensym counter in between; in that case, it's very intentional that they compare unequal.

I would strongly recommend learning the language from something like Practical Common Lisp, the CMU page is rather obtuse: gigamonkeys.com/book/

Follow

@curtmack @lunarised I think I'll just pass on Lisp again, thank you. Equality operators is just one of the problems. There's just too many things missing in CL (and often in other lisps) that I take for granted in other languages.

For example, I've just discovered that Quicklisp doesn't support pulling dependencies from git. Where in cargo or stack or literally any other language-specific package manager I can just specify git url and commit hash, in Lisp I need to perform some sort of magic.

All of this is just too much.

Sign in to participate in the conversation
Functional Café

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!