Hashtable: module{ PATH: con "/dis/lib/hashtable.dis"; fun1, fun2: fn(s:string,n:int):int; HashNode: adt[T]{ key:string; val:T; # insert() can update contents }; HashTable: adt[T]{ a: array of list of HashNode[T]; find: fn(h:self ref HashTable, key:string):T; insert: fn(h:self ref HashTable, key:string, val:T); delete: fn(h:self ref HashTable, key:string); all: fn(h:self ref HashTable): list of HashNode[T]; }; new: fn[T](size:int, elem:T):ref HashTable[T];};
Hashtable: module{
PATH: con "/dis/lib/hashtable.dis";
fun1, fun2: fn(s:string,n:int):int;
HashNode: adt[T]{
key:string;
val:T; # insert() can update contents
};
HashTable: adt[T]{
a: array of list of HashNode[T];
find: fn(h:self ref HashTable, key:string):T;
insert: fn(h:self ref HashTable, key:string, val:T);
delete: fn(h:self ref HashTable, key:string);
all: fn(h:self ref HashTable): list of HashNode[T];
};
new: fn[T](size:int, elem:T):ref HashTable[T];
};