= really is for equality in lisp, not assignment
= really is for equality in lisp, not assignment
I = I+1
Ken paused for a moment, muttered “no it doesn’t”, and passed on.It's just weird, especially given they're using old-fashioned car/cdr instead of head/tail.
This kind of gatekeeping from ANSI Common Lisp purists is tiring. Who cares about convention when one just wants to build their own language, use S-exprs and car/cdr for the sake of it.
Potential users care. It's off-putting to use something familiar but different in strange ways.
Using head/tail versus car/cdr would be a deviation I could understand. This = mess isn't.
I want to see a modern take on sexpr based languages instead of being stuck in the past forever.
That's a terrible reason to justify... well, anything, really.
Why won't you use "&" for "less" and "%" for "greater", instead of sticking to the tired "<" and ">"?
How about instead of using tradition to decide if something is beneficial or not, you just assess it on its value?
This is an egregious use of the noncentral fallacy.[1]
Conforming to this 50-year tradition makes the language more familiar and easier to learn, so it's reasonable to question why the language chose differently.
[1]: https://www.lesswrong.com/posts/yCWPkLi8wJvewPbEp/the-noncen...
But I'm sure you know better than them.
The word "set" is much older, and is universally supported.
But most glaringly, (= a b) has a well-understood and entirely different meaning in most lisps, also since 1950s. It's comparison, not assignment. Breaking a well-set convention is a very different thing than making a new, slightly improved convention.
I don't think using = instead of define/defun/defn has a compelling reason. Clojure's use of [], {}, #(), etc., is compelling to me. I'm not a Lisp purist who thinks everything should be parentheses. Adding that syntax is helpful for the reader.
Innovation is welcome when it's beneficial. = for assignment isn't.
There would be a sense to it if square brackets shifted into some alternative semantics: (fn (...) ...) versus (fn [...] ...) doing something usefully different.
If you must use square brackets there, they are just a syntactic quirk that doesn't enable any new semantics.
Maybe saying it's "completely pointless. It literally serves no purpose" is a bit overly dramatic, don't you think?
You could have limited yourself to saying you don't personally like it because it breaks with tradition.
Quite simply, no, it doesn't.
> you don't personally like it because it breaks with tradition.
Nope! I don't impersonally like it, because it's a gratuitous inconsistency which doesn't do anything. It's not technically justified in any way.
How does it make sense to have the formal parameter stand out? Why don't we want the function body to stand out? (fn (a b) [+ a b])?
Don't the parameters already stand out by being on their own line (usually)?
(defn (a b) ;; <-- sticks out like sore thumb
...)
If you think something deserves to stand out in code, can't you teach your editor to highlight it?Where are the numbers to back all this "sense"?
ff[x] = [atom[x] -> x; T -> ff[car[x]]]
or DEFINE ((
(FF (LAMBDA (X)
(COND ((ATOM X) X)
(T (FF (CAR X))))))
)) ()
which one or two decades later would be in Lisp: (defun ff (x)
(cond ((atom x) x)
(t (ff (car x)))))You are mistaken in assuming that, since it has parens, then it must conform to being a Lisp.