Statements dreamed up by the utterly deranged
> (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.
@lunarised what if I just wanna compare to values? Surely, I could just use `equal` everywhere, except it doesn't always work on symbols.
>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?
@lunarised going further, from the same page:
>Two arrays are equal only if they are eq, with one exception: strings and bit-vectors are compared element-by-element.
f :: Eq a => a -> a -> IO ()
f x y | x == y = putStrLn "Equal"
| otherwise = putStrLn "Not equal"
How do I do the same in Common Lisp? Exactly..
@pureevil @lunarised Depending on your goal, you could make it a generic function that defaults to equal (or an appropriate alternative for non-string arrays), accepting that other users can override it however they want. Alternatively, you could use generic-cl which replaces many standard library functions, including equal, with generic versions. Then the function would call the generic version of equal, however the actual types choose to implement it.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!