From: John English <je@brighton.ac.uk>
Subject: Re: List container: Insert and Delete
Date: Thu, 15 Nov 2001 17:01:29 +0000
Date: 2001-11-15T17:00:45+00:00 [thread overview]
Message-ID: <3BF3F4E9.7E32361B@brighton.ac.uk> (raw)
In-Reply-To: 9su77k$c83$1@news.huji.ac.il
Ehud Lamm wrote:
> But I guess you made some design decisions which resulted in something
> different from the BC (either the -83 or -95 version).
Yes, I was influenced by the STL. So I had this:
type Item_Type is private;
-- supplied as a generic parameter
type List_Type is new Limited_Controlled with private;
-- a pain; means library-level instantiations. No easy
-- solution to this...
type List_Iterator is private;
-- an iterator is like an STL iterator; it's represented
-- internally as a pointer to the list header and a pointer
-- to a node within that same list. For a list L = (A,B,C),
-- the possible values are (L,A) = the position before A,
-- (L,B) and (L,C) similarly, and (L,null) is the position
-- after C. The initial value is (null,null) meaning an
-- uninitialised iterator value (raises List_Error if used).
function Size (List : List_Type) return Natural;
-- length of the list
function First (List : List_Type) return List_Iterator;
function Last (List : List_Type) return List_Iterator;
function Succ (Iterator : List_Iterator) return List_Iterator;
function Pred (Iterator : List_Iterator) return List_Iterator;
-- names chosen to match attributes of an enumeration.
-- Iterators are immutable; these functions all produce
-- a brand new iterator value each time they're used.
function Value (Iterator : List_Iterator) return Item_Type;
-- get the value that an iterator refers to (or raise
-- List_Error)
procedure Insert (Iterator : in List_Iterator;
Item : in Item_Type);
procedure Delete (Iterator : in List_Iterator);
-- modify the list. The iterator given to Delete will be
-- invalid afterwards; maybe it should be "in out", and
-- explicitly nulled by the procedure.
List_Error : exception;
-- raised if iterators are invalid
Now: "&" is missing, Singleton = Insert(First(L)) where L is an
empty list; Push_Front(L,X) = Insert(First(L),X), Push_Back(L,X)
= Insert(Last(L),X), Pop_Front(L,X) = X := Value(First(X));
Delete(First(X)); Pop_Back(L,X) = X := Value(Pred(Last(X)));
Delete(Pred(Last(X)); Is_Empty(L) = (Size(L) = 0), Has_Item
doesn't apply any more, and Ted's Iterator, Insert(List,Index,List),
Modify and Sort aren't there but probably should be (see stream-of-
consciousness ramble elsewhere in this thread).
Missing from Ted's Strawman: Clear(L) = delete everything in the list,
Cut(A,B) = remove everything between iterators A and B and return as
a list (or raise List_Error if A and B refer to separate lists), and
Copy(A,B) = copy a sublist. The use of Cut and Copy together with "&"
and Insert(Iterator,List) would deal with all the sublist operations
and operations on pairs of lists.
Problems encountered: students don't like Delete(Pred(Last(L))),
they always write Delete(Last(L)) and then get a List_Error.
-----------------------------------------------------------------
John English | mailto:je@brighton.ac.uk
Senior Lecturer | http://www.comp.it.bton.ac.uk/je
Dept. of Computing | ** NON-PROFIT CD FOR CS STUDENTS **
University of Brighton | -- see http://burks.bton.ac.uk
-----------------------------------------------------------------
next prev parent reply other threads:[~2001-11-15 17:01 UTC|newest]
Thread overview: 189+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-10 3:51 List container strawman 1.2 Ted Dennison
2001-11-10 4:20 ` Jeffrey Carter
2001-11-10 4:59 ` Ted Dennison
2001-11-10 11:14 ` Florian Weimer
2001-11-10 16:24 ` Ted Dennison
2001-11-10 17:39 ` Florian Weimer
2001-11-10 18:31 ` Ted Dennison
2001-11-10 18:45 ` Jean-Marc Bourguet
2001-11-10 22:44 ` Ted Dennison
2001-11-11 3:59 ` Steven Deller
2001-11-11 11:29 ` Jean-Marc Bourguet
2001-11-11 17:42 ` Steven Deller
2001-11-11 12:36 ` Jean-Marc Bourguet
2001-11-10 22:07 ` Jeffrey Carter
2001-11-11 17:28 ` Jeffrey Carter
2001-11-10 14:51 ` Ehud Lamm
2001-11-10 16:08 ` Larry Kilgallen
2001-11-10 16:23 ` List container: Insert and Delete Nick Roberts
2001-11-10 17:13 ` Ted Dennison
2001-11-10 21:20 ` Nick Roberts
2001-11-10 22:15 ` Ehud Lamm
2001-11-10 22:48 ` Ted Dennison
2001-11-10 22:40 ` Jeffrey Carter
2001-11-11 4:00 ` Nick Roberts
2001-11-11 17:37 ` Jeffrey Carter
2001-11-11 19:29 ` Steven Deller
2001-11-12 0:20 ` Nick Roberts
2001-11-12 3:48 ` Steven Deller
2001-11-12 13:54 ` Nick Roberts
2001-11-12 15:21 ` Larry Kilgallen
2001-11-13 1:19 ` Nick Roberts
2001-11-12 17:27 ` Jeffrey Carter
2001-11-13 1:28 ` Nick Roberts
2001-11-13 1:37 ` Darren New
2001-11-13 15:58 ` John English
2001-11-13 17:53 ` Pascal Obry
2001-11-12 15:42 ` Marin David Condic
2001-11-12 5:23 ` Ted Dennison
2001-11-12 13:04 ` Nick Roberts
2001-11-12 16:36 ` Ted Dennison
2001-11-12 17:20 ` Jeffrey Carter
2001-11-12 18:55 ` Marin David Condic
2001-11-12 19:56 ` Larry Kilgallen
2001-11-12 20:36 ` Marin David Condic
2001-11-12 21:14 ` Darren New
2001-11-13 7:31 ` Simon Wright
2001-11-13 21:31 ` Marin David Condic
2001-11-14 4:43 ` Nick Roberts
2001-11-13 2:16 ` Jeffrey Carter
2001-11-13 14:18 ` Marin David Condic
2001-11-13 15:03 ` Ted Dennison
2001-11-13 15:28 ` Marin David Condic
2001-11-13 16:16 ` Jeffrey Carter
2001-11-13 19:59 ` Ted Dennison
2001-11-13 20:18 ` Marin David Condic
2001-11-13 21:26 ` Ted Dennison
2001-11-13 21:39 ` Marin David Condic
2001-11-13 22:16 ` Map container (was: List container: Insert and Delete) Ted Dennison
2001-11-14 15:07 ` Marin David Condic
2001-11-13 22:22 ` List container: Insert and Delete Jeffrey Carter
2001-11-13 17:46 ` Darren New
2001-11-13 19:25 ` Steven Deller
2001-11-13 19:40 ` Darren New
2001-11-13 20:53 ` Ted Dennison
2001-11-13 20:10 ` Ted Dennison
2001-11-13 21:31 ` Darren New
2001-11-13 22:37 ` Ted Dennison
2001-11-13 22:44 ` Ted Dennison
2001-11-13 23:00 ` Darren New
2001-11-14 14:31 ` Ted Dennison
2001-11-13 14:20 ` Steven Deller
2001-11-13 15:48 ` John English
2001-11-13 20:22 ` Ted Dennison
2001-11-14 12:59 ` John English
2001-11-14 14:55 ` Ted Dennison
2001-11-14 15:34 ` Marin David Condic
2001-11-15 16:35 ` John English
2001-11-14 16:41 ` Jeffrey Carter
2001-11-13 20:22 ` Ehud Lamm
2001-11-13 21:33 ` Simon Wright
2001-11-14 12:54 ` John English
2001-11-14 16:43 ` Ehud Lamm
2001-11-14 18:19 ` Marin David Condic
2001-11-15 4:29 ` List container: Sawdust woman 43 Jeffrey Carter
2001-11-15 15:25 ` Marin David Condic
2001-11-16 1:59 ` Jeffrey Carter
2001-11-15 20:30 ` List container: Insert and Delete Simon Wright
2001-11-15 17:01 ` John English [this message]
2001-11-19 17:40 ` Ted Dennison
2001-11-20 10:52 ` John English
2001-11-13 21:07 ` Ted Dennison
2001-11-12 17:18 ` Jeffrey Carter
2001-11-12 17:13 ` Jeffrey Carter
2001-11-11 23:34 ` Nick Roberts
2001-11-12 16:33 ` Jeffrey Carter
2001-11-12 17:28 ` Ted Dennison
2001-11-13 2:27 ` Jeffrey Carter
2001-11-13 14:21 ` Ted Dennison
2001-11-14 4:16 ` Nick Roberts
2001-11-14 15:03 ` Ted Dennison
2001-11-13 0:51 ` Nick Roberts
2001-11-12 16:51 ` Ted Dennison
2001-11-13 0:44 ` Nick Roberts
2001-11-13 14:18 ` Ted Dennison
2001-11-14 4:17 ` Nick Roberts
2001-11-10 16:12 ` List container strawman 1.2 Ted Dennison
2001-11-10 18:49 ` Jean-Marc Bourguet
2001-11-10 19:29 ` Ehud Lamm
2001-11-11 10:46 ` Jean-Marc Bourguet
2001-11-11 13:07 ` Larry Kilgallen
2001-11-10 19:07 ` Jacob Sparre Andersen
2001-11-10 22:53 ` Ted Dennison
2001-11-12 16:45 ` Jacob Sparre Andersen
2001-11-13 0:55 ` Nick Roberts
2001-11-13 15:11 ` Ted Dennison
2001-11-10 22:17 ` Jeffrey Carter
2001-11-11 22:04 ` Simon Wright
2001-11-12 16:53 ` Ted Dennison
2001-11-13 7:25 ` Simon Wright
2001-11-13 22:04 ` Ted Dennison
2001-11-10 17:43 ` Florian Weimer
2001-11-10 16:46 ` Ted Dennison
2001-11-10 18:50 ` Steven Deller
2001-11-12 9:25 ` Martin Dowie
2001-11-12 12:57 ` Nick Roberts
2001-11-12 15:32 ` Marin David Condic
2001-11-12 16:58 ` Martin Dowie
2001-11-12 18:44 ` Marin David Condic
2001-11-13 7:18 ` Simon Wright
2001-11-13 21:26 ` Marin David Condic
2001-11-15 23:53 ` martin.m.dowie
2001-11-12 17:35 ` Ted Dennison
2001-11-12 18:39 ` Martin Dowie
2001-11-12 19:58 ` Ted Dennison
2001-11-12 18:39 ` Steven Deller
2001-11-12 20:05 ` Ted Dennison
2001-11-13 19:12 ` Stephen Leake
2001-11-12 16:37 ` Jeffrey Carter
2001-11-12 18:50 ` Marin David Condic
2001-11-13 1:07 ` Nick Roberts
2001-11-13 15:13 ` Ted Dennison
2001-11-15 23:54 ` martin.m.dowie
2001-11-13 19:10 ` Stephen Leake
[not found] ` <3BF0247D.4500975E@san.rr.com>
2001-11-12 20:30 ` Ehud Lamm
2001-11-12 21:57 ` Ted Dennison
2001-11-12 22:53 ` Darren New
2001-11-12 22:55 ` Darren New
2001-11-13 15:54 ` Ted Dennison
2001-11-13 19:17 ` Stephen Leake
2001-11-13 22:37 ` Jeffrey Carter
2001-11-13 15:49 ` Ted Dennison
2001-11-13 16:38 ` Martin Dowie
2001-11-13 19:06 ` Ted Dennison
2001-11-13 19:43 ` Marin David Condic
2001-11-13 20:50 ` Ted Dennison
2001-11-13 21:08 ` Marin David Condic
2001-11-14 4:34 ` Nick Roberts
2001-11-14 14:58 ` Marin David Condic
2001-11-13 17:36 ` Darren New
2001-11-14 4:40 ` Nick Roberts
2001-11-13 22:34 ` Jeffrey Carter
2001-11-14 13:39 ` John English
2001-11-14 15:09 ` Ted Dennison
2001-11-14 16:04 ` Jeffrey Carter
2001-11-14 16:36 ` Ted Dennison
2001-11-15 16:31 ` John English
2001-11-19 17:59 ` Ted Dennison
2001-11-19 21:08 ` Stephen Leake
2001-11-20 10:43 ` John English
2001-11-21 19:40 ` ramatthews
2001-11-22 3:01 ` Nick Roberts
2001-11-22 9:28 ` John English
2001-11-24 3:52 ` Nick Roberts
2001-11-23 2:21 ` Ted Dennison
2001-11-24 0:27 ` John English
2001-11-27 20:04 ` Marin David Condic
2001-11-28 8:10 ` Thomas Wolf
2001-11-28 14:29 ` Marin David Condic
2001-11-28 17:34 ` Ted Dennison
2001-11-28 18:01 ` Marin David Condic
2001-11-28 18:53 ` Ted Dennison
2001-11-28 19:08 ` Overriding 'Class'Input (was: List container strawman 1.1) Ted Dennison
2001-11-28 19:19 ` Ted Dennison
2001-11-28 20:40 ` Marin David Condic
2001-11-28 21:21 ` Ted Dennison
2001-11-28 21:50 ` Marin David Condic
2001-11-29 5:12 ` Nick Roberts
2001-11-29 20:04 ` List container strawman 1.2 Thomas Wolf
2001-11-16 0:01 ` martin.m.dowie
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox