work in progress | array


proposal for class ARRAY

Remove frozen status from put, item and infix "@"

Proposal

Proposal for class ARRAY:

Remove the "frozen" status from features 'put', 'item' and infix "@".

Please select one of the following:

History

These features were frozen in the 1995 standard. They are frozen in current implementations of ISE and HACT, and not frozen in SE. In VE, put and infix "@" are frozen but not item.

Rationale

If these features are unfrozen, we can inherit from ARRAY and use different representations, for example a sparse array where default-valued elements are not stored.

Discussion Summary

Roger Browne, 11 October:

A frozen 'item' might make it easier for a vendor to produce an efficient
implementation of ARRAY (and I think a vendor requested it for this
reason).

But there is a big price to pay for a frozen 'item' - it makes it
impossible to inherit from ARRAY and implement, say, a SPARSE_ARRAY
where storage is not allocated for elements having default values.

manus@eiffel.com, 11 October:

In most of cases, it is not a problem to have a non-frozen version of
`item'. The user will pay the price of polymorphic calls on `item' if
he redefines it. The only place where it is a problem in ISE's
implementation is with `array optimization' that we implemented
completely on the fact that `item' is frozen and that we know what it
is doing.

Roger Browne, 13 October:

I think this can be resolved by disabling the optimization if 'item' has
been redefined.

manus@eiffel.com, 14 October:

Definitely, and we are ready to do so.

Roger Browne, 13 October:

Then, any system that does not redefine 'item' will work exactly as it
does now, and will be optimized exactly as it is now. But in addition
the user will gain the ability to redefine 'item' if they are prepared
to forego maximum optimization.

manus@eiffel.com, 14 October:

Agreed.

Dominique Colnet, 12 October:

We don't want frozen item (both for ARRAY and STRING).

Alexander Kogtenkov, 12 October:

It's a compiler business to optimize the things. Frozen features
are not for optimization but for fixed implementations, say "clone"
in GENERAL or external feature that invokes Win32 API. This is
a design issue.

Marcus Kallabis, 14 October:

We agree with removing frozen from 'item'.

In iss-base we rely on this for the 'array_optimization' feature (it makes
things easier), but it's no problem to change this to support the new
standard.

Impact of proposed change

No effect on existing code.

Vendors exploiting the current frozen status of these features for optimization purposes will need to adjust their optimization process to check for redefinitions of these features.

Result

This proposal was accepted into the ELKS2000 draft on 20 October 1999.

Voting details

votes cast at eGroups:

Accept the proposal
                sergei_ivanov@object-tools.com
                sparker@eiffel.ie
                ansible@xnet.com
                kevin@ethossoft.co.nz
                pc_cohen@hotmail.com
                ericb@gobosoft.com
                tking@insystems.com
                doylep@ecf.toronto.edu
                gmc333@my-deja.com
                kwaxer@aha.ru
Don't mind (happy either way)
                jcm@mstr.hgc.edu
                richieb@netlabs.net
Strongly accept the proposal
                andreas.leitner@teleweb.at
                chcouder@club-internet.fr
                joachim.durchholz@halstenbach.de
                dominique.colnet@loria.fr
                genepi@sympatico.ca
                simonwillcocks@enterprise.net
                manus@eiffel.com
                jweirich@one.net
                steinman@sco.edu
                franck.arnaud@omgroup.com

votes sent to the discussion list:

-