[R] pairlists (was: data manipulation function descriptions)

2003-02-14 Thread Warnes, Gregory R


 -Original Message-
 From: Luke Tierney [mailto:[EMAIL PROTECTED]]

 R does not provide a pairlist data structure. This creates a dilemma
 when translating some list-based xlispstat code, or, more
 importantly, when implementing an algorithm for which parilists are
 the natural data structure to use.
 ...
 Pairlists were and still are used internally for many things. 
 ...

Wouldn't it, therefore, make sense to provide a 'pairlist' package which
exposes the internal pairlist structure and provides appropriate functions
(car, cdr, ...), instead of expecting people to keep re-implementing these
features?

-Greg


LEGAL NOTICE\ Unless expressly stated otherwise, this message is ... [[dropped]]

__
[EMAIL PROTECTED] mailing list
http://www.stat.math.ethz.ch/mailman/listinfo/r-help



Re: [R] pairlists (was: data manipulation function descriptions)

2003-02-14 Thread Peter Dalgaard BSA
Warnes, Gregory R [EMAIL PROTECTED] writes:

  -Original Message-
  From: Luke Tierney [mailto:[EMAIL PROTECTED]]
 
  R does not provide a pairlist data structure. This creates a dilemma
  when translating some list-based xlispstat code, or, more
  importantly, when implementing an algorithm for which parilists are
  the natural data structure to use.
  ...
  Pairlists were and still are used internally for many things. 
  ...
 
 Wouldn't it, therefore, make sense to provide a 'pairlist' package which
 exposes the internal pairlist structure and provides appropriate functions
 (car, cdr, ...), instead of expecting people to keep re-implementing these
 features?

Some ancient consideration pops up here. We do actually expose
pairlists in a few places (try mode(.Options)). Some people consider
that this is a remnant and should be stamped out, but we might also
consider doing what you suggest. 

The big problem with old R was not so much the pairlists but that they
were used for representing objects of mode list so to get to X[[n]]
you had to count through the list from the beginning which killed
performance in some important cases. Then again, adding elements to a
generic vector requires copying the whole thing. Of course all the
legacy S code tended to do the former and not the latter, so generic
vectors ended up winning.

One or two reservations: With full lisp style access, could we end up
with (circular) data structures that confuse the garbage collector?
And might we -- supposing we allowed destructive list modifications --
end up with strange semantics a la the .Alias mess we had for a while?
Of course Luke would be the first to know about this.

Then of course there is the question of reverse compatibility. I don't
consider it much of a loss if R code doesn't run in Splus, but others
might.

-- 
   O__   Peter Dalgaard Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics 2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark  Ph: (+45) 35327918
~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907

__
[EMAIL PROTECTED] mailing list
http://www.stat.math.ethz.ch/mailman/listinfo/r-help