On Thu, 10 Mar 2005, Ian Smith-Heisters wrote:
For me, listp means "list predicate", just because we're dealing with lists, and lists make me think in Lisp.
It's just a name. The existing Pd lists are not linked, are immutable, and are stack-allocated, so that's three reasons for which they don't have much to do with LISP lists.
Instead they are more like a function-call that has a variable number of arguments. That's the *-prefix in Python/Ruby, the "args" keyword in Tcl, the $* in Bash/jMax, and the &rest keyword in LISP.
What about listptr? Or list* is good. Or ladr (list address)?
Seem like good options... but * never means pointer in Pd. However the name "pointer" is used, whereas "address" is never used. "pointer" is always spelt out long, never abbreviated. There is precedent of using one letter followed by "pointer", i mean "gpointer", which would suggest using "lpointer". However it's not exactly the same kind of pointer (different deallocation semantics), and also, the name "pointer" is also used as an abbreviation of "gpointer", which may confuse matters...
But doesn't ladr mean something else somewhere else?
I don't know. It sounds like a ladder... or like LISP's "cadr" function which takes the second element of a list, but that's a bit obscure, and tends to be replaced by the "second" function, AFAIK. (??)
Or what about just lp?
Reminds of lineprinter, as in the default parallelport driver. It wouldn't disturb me much if it were called "lp" though.
Actually, a heap-allocated mutable resizable indexed list is called "Array" in Perl/Python/Ruby/Lisp, and "Vector" in C++/Java/Lisp. (In LISP, the former is multidimensional, and every "Vector" is also a 1-dimensional "Array" at the same time)
But "Array" already means something in PureData, in a way that is not compatible with the concept I'm trying to introduce. So I feel a bit stuck...
Mathieu Bouchard -=- Montréal QC Canada -=- http://artengine.ca/matju