What is the name for illustrating the point with deliberately unrelated example? His clojure code fails because he did not swap nil? for empty? (and he even states this in the article) but he then uses it to illustrate the absence of TCO in clojure.
Sure, it does have cons, but your second argument wasn't a sequence. Try:
> (cons 'a ['b])
(a b)
> (doc cons)
-------------------------
clojure.core/cons
([x seq])
Returns a new seq where x is the first element and seq is the rest.
That's not a cons, that's a linked list. As tokenrove mentions, a cons in a Lisp is just a tuple (`cons` is the name of the type and the function constructing it). It can contain any two values.
Comments
What is the name for illustrating the point with deliberately unrelated example? His clojure code fails because he did not swap nil? for empty? (and he even states this in the article) but he then uses it to illustrate the absence of TCO in clojure.
nil? is a pretty big thing. Is Clojure even a Lisp if nil is not the empty list?
Edit: Jesus Christ, Clojure doesn't even have conses. Why the hell do people call this a "Lisp"?
Sure, it does have cons, but your second argument wasn't a sequence. Try:
That's not a cons, that's a linked list. As tokenrove mentions, a cons in a Lisp is just a tuple (`cons` is the name of the type and the function constructing it). It can contain any two values.
In other Lisps, a cons can be an arbitrary pair.