[m-rev.] for review: version array reimplementation

Ralph Becket rafe at csse.unimelb.edu.au
Mon Jul 27 14:09:28 AEST 2009


Peter Wang, Monday, 27 July 2009:
> Branches: main
> 
> Make the version array implementation do what it says on the tin.  It claims
> O(1) access for the latest version of the array, but that's true only if the
> array hasn't had any updates, or if you're accessing the last element that was
> updated.  The existing data structure is essentially this:
> 
>         :- type version_array(T)
>             --->    update(
>                         index   :: int,
>                         value   :: T,
>                         next    :: version_array(T)
>                     )
>             ;       base(array(T)).
> 
> Note that even getting the size of the array is O(k), where k is the number of
> updates on the array.

If I recall correctly, my implementation should have ensured that the
latest version of the array was always represented as a base/1 value,
giving the O(1) properties.  Was there a bug in the code?
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list