[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] Proposed new SRFI for immutable lists

On Wed, 3 Sep 2014 17:39:12 -0400, John Cowan <cowan@x> said:

> Michael Montague scripsit:
>> I suggest that immutable pairs should use the same names (cons, car,
>> cdr, pair?, etc) as mutable pairs. A programmer can control which
>> implementation of pairs they use in a particular module using import.

> That's exactly what I thought when I started this effort, but after
> all, some Schemes don't have modules, so I figured I'd just go with the
> minimal name changes.  So I wrote a script to refactor all the names in
> the code (a few names of local variables got missed, I think), wrote a
> bunch of tests, and started debugging.  I figured it would be a doddle.

> Only not.

> What I wasn't thinking of was that the mechanism of procedures with
> arbitrary numbers of arguments, of which SRFI-1 and SRFI-116 have many,
> involves the use of lists, not ilists.  In Racket, ordinary Scheme
> lists were immutable and there was no problem.  But to make the code
> work in Chicken and Chibi, where I do most of my development, I had to
> scrutinize all of the converted code for map and for-each and many other
> routines in order to decide when I was dealing with immutable lists and
> when with mutable argument lists.

  I think the general case, or one general
  case, is like this.  A program (or
  library) uses libraries A1, A2, ...,
  which process and return structures made
  of mutable pairs, as well as libraries
  B1, B2, ..., which process and return
  structures made of immutable pairs.
  Therefore, the program must use both
  kinds of procedures, possibly within the
  same expression.  I think some practical
  experience with this kind of programming
  is necessary before being able to say
  what are the most significant issues in
  this area.


Vassil Nikolov | Васил Николов | <vnikolov@x>

"Be careful how you fix what you don't understand."  (Brooks 2010, 185)

Scheme-reports mailing list