Harvey J. Stein
Wed, 14 May 1997 12:06:27 +0300

Mike McDonald writes:
 > >(make-array (length foo) :allocation immutable :generator
 > >  `(lambda (i) (nth i ,foo)))
 > >
 > >to initialize from a list.
 >   Why not just use the :initial-contents keyword?

Because one would have to generate a list for the contents, just so it
gets thrown away after creating the array, thus being an additional
source of garbage.  Henry Baker already mentioned this approach:

 > Another approach is to create a brand new functional array by copying
 > an existing mutable array.  This solves the problem of bad semantics,
 > but forces you to throw away and GC a perfectly good mutable array for
 > every immutable array.  So we have good semantics, but bad performance.

Harvey J. Stein
Berger Financial Research