
On Saturday 07 May 2005 18:22, Sebastian Sylvan wrote:
On 5/7/05, Daniel Carrera
wrote: Hamilton Richards wrote:
Well, for starters, lists and arrays are two entirely different topics. I've noticed that Haskell newbies sometimes confuse them --possibly the use of [] in list types and enumerations triggers an unconscious association with [] used in conventional languages for array indexing.
I think it's because there's no real reason for someone to think that the words "list" and "array" might not be synonims. I certainly don't seen a linguistic distinction. Either term refers to an ordered collection of items.
Hmm. Not sure I agree. For me an "array" is a fixed set of elements which may or not contain stuff (not necessarily in a CS context but just linguistically). A "list" is more of a linear structure. An array is a sheet of paper with lines on it, a list is the todo-list written on that paper.
Anyway. There is a difference, and I think the names reflect that pretty well.
I think that 'list' is a misnomer for what are actually (functional) stacks. That these so called lists are used for almost everything is due to (1) the nice syntactic sugar (2) the fact that there are many functions on lists in the standard libraries and (3) they can be infinite and thus act as streams. It would be a great improvement if Haskell's standard library (including the Prelude) would provide a uniform framework for collections, and in particular sequences (linear collections, indexed by natural numbers), and there should be standard implementations that don't favour operations on the left end over those on the right end. It is a shame that a language like Haskell doesn't even have a Deque (double ended queue) in the its standard library. Robert Will has proposed a new unified standard for collections (as well as some default implementations) with above properties (and a lot more). IMHO, his work is (at least) a very good starting point and deserves more attention. Ben