To me, the second possibility seems better, since the tail value of 'b' is preserved. But how about a third possibility: reject such 'append' and require a explicit type casting? Regards, Jennie On Wed, Dec 21, 2005 at 01:08:26PM +0100, Sjoerd Mullender wrote:
Consider this scenario: mil>var a := new(oid,void).insert(0@0,nil); mil>a.print(); #-----------------# # h t # name # oid void # type #-----------------# [ 0@0, nil ] mil>var b := new(oid,oid).insert(0@0,1@0); mil>b.print(); #-----------------# # h t # name # oid oid # type #-----------------# [ 0@0, 1@0 ] mil>a.append(b); mil>a.print();
The question is, what should the result be?
As I see it, there are two possibilities: #-----------------# # h t # name # oid void # type #-----------------# [ 0@0, nil ] [ 1@0, nil ] or #-----------------# # h t # name # oid oid # type #-----------------# [ 0@0, nil ] [ 1@0, 1@0 ]
The former keeps the nil tail (the tail of a was void without seqbase and stays that way), whereas the latter materializes the tail so that the tail value of b gets inserted.
Opinions?
-- Sjoerd Mullender