It's never a good idea to use the wrong data structure for the job.

And thus Clojure takes the stance that it won't make bad ideas easy for you to 
use. Yet, it will never prevent you from doing anything.

If you want to do something bad, you'll need to get your own hands dirty.

That's why slow data structure access functions don't exist as standard. That's 
why data transforms are lazy by default. And why the non lazy variant 
(transducers) do loop fusion for you. That's why mutability is ugly and 
requires you to wrap things in extra verbosity. That's why OOP isn't there, and 
forces you to use the host interop if you want it. That's why there's only 
recursive loops. Etc.

The Clojure standard lib is opinionated. It's not trying to make everything 
easy and convenient. It's trying to make things simple to reason about, and 
promote Rich Hickeys opinion of what is a good idea, and what isn't.

But, it can afford to be this way, because it made itself a Lisp, meaning it 
gave you all the power needed to disagree and make your own core, which follows 
your own opinions of good and bad.[1]

Now, I recommend that everyone should have a core library of their own that 
they keep around for cases like this, where they disagree.

And for beginners, I mean, what are you trying to teach them? What problem 
requires them to add items to the beginning and end of an ordered collection?

Anyways, my advice is to teach them concat. It's even nicer then 
append/prepend. You just give it the arguments where you want them to go.

(concat [1] [2 3])

(concat [1 2] [3])

And it works for any type of ordered collections, even arrays.

Also, this blog I think does a great job at teaching all this to a beginner 
https://medium.com/@greg_63957/conj-cons-concat-oh-my-1398a2981eab



[1] Except for reader macros. Rich didn't want you to be able to change the 
whole program syntax in unconstrained ways. That's probably a good thing to at 
least keep the foundation universal accross code bases.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to