Nomenclature Lassi Kortela 08 Oct 2020 12:19 UTC

> I like "buffer", although it's not a name that makes it immediately
> obvious that the type has a relationship to vectors/lists. Another
> possibility is to just accept overloading of existing terms, and to use
> "arraylist", which anyone familiar with Java will immediately recognize.

An "array" can have more than one dimension in Common Lisp, and in the
existing array SRFIs. "Vector" more clearly says that it's always a
one-dimensional structure. "List" is also more ambiguous in Lisp than in
Java, since Lisp and FP languages have a strong connotation that a list
is a linked list. In languages like Java and Python list and vector are
more synonymous concepts. Lisp lists are further specialized even from
static FP languages in that improper lists are permitted, whereas
there's no such thing as an improper vector or array.

> I'm not a fan of "field", it's too overloaded of a term and it usually
> refers to a binding or a text input GUI widget.

+1. Or struct fields or bitfields in binary data.

"Buffer" is as generic as "field", can refer to almost anything.

Some variation on "vector" would be nice. Common Lisp has
`vector-push-extend` which puts adds an element at the end and grows the
vector as needed. In CL, vectors are the same datatype as
one-dimensional arrays. Growable arrays and vectors are called
"adjustable" arrays. By default, arrays and vectors are not adjustable,
but `make-array :adjustable t` can be used to make adjustable ones.