I don't understand what you mean by "forbid one-element lists". These are already treated as atoms: [list(, [list 1(, [list one(. Do you mean have the [list] object not accept these as input? I suppose that would depend on where the conversion from list to atom happens. If it happens before the inlet, then that would happen automatically since [list] would only accept lists on its inlet.
zero/one element lists are a lovely source for errors ... pd doesn't have a list type as powerful as other languages ... empty lists should be treated as bangs, one-element lists as atoms ... having no zero/one element lists internally, would make pd more robust ... and i don't see that we loose any functionality ... pd is not lisp ...
It seems to me that these automatic conversions cause a lot of confusion and I can't see the benefit or necessity for them. Could anyone elaborate on why this automatic conversions of lists is needed? Does anyone rely on it? I have done a lot of general message processing and I've never relied on that behavior.
if i'm debugging a patch and the debugging features (i.e. print) can't tell me, if i'm handling a one element list or an atom, i don't see a reason, why they should be handled differently ... of course, it's no problem to keep the behaviour as it is ... it would just avoid unnecessary bugs and make handling easier and more reliable ...
cheers ... tim