4 ms·
I mean, they might suck, but that's not really true that most languages don't use them. I can think of a lot that use them as their default data structure (OCam
by smabie 7y ago
I mean, they might suck, but that's not really true that most languages don't use them. I can think of a lot that use them as their default data structure (OCaml, Haskell, Scala, Common Lisp, Racket, Clojure, etc). They're nice with recursion or if you don't know the size of your data ahead of time. But honestly, I've only used recursion a handful of times in my entire career, despite working almost exclusively with functional languages.
- didibus 7y agoCorrection for Clojure. It doesn't use singly linked list by default. It uses something more akin to an ArrayList, Clojure calls it Vector. Elements are indexed, and have pseudo O(1) lookup, and it adds to the end in pseudo O(1) as well.
- ninjapenguin54 7y agoCorrection: Clojure has linked lists and vectors. Haskell has both too. https://clojure.org/guides/learn/sequential_colls https://clojure.org/guides/learn/sequential_colls https://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html https://hackage.haskell.org/package/vector-0.12.1.2/docs/Dat... Don't blame the language, & learn to use the right data structure for the job.
- didibus 7y agoParent was talking about default data-structure, and for Clojure Vectors are the default "list" data-structure, even though it has other type of lists. Not trying to throw any of the other languages mentioned under the bus, I do not know them well enough to know what list structure they default too or more idiomatically rely on.
- fulafel 7y agoIn Clojure, most standard functions return lazy sequences, and in code people usually use vectors which are not linked lists. But it does of course have the classic Lisp list as well.