# Mythryl-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi
# Compiled by:
#
src/app/yacc/src/mythryl-yacc.lib### "Pointers are like jumps, leading wildly from
### one part of the data package to another.
###
### "Their introduction into high-level languages
### has been a step backwards from which we may
### never recover."
###
### -- C.A.R. Hoare
api Set {
Set;
Element;
exception SELECT_ARB;
apply: (Element -> Void) -> Set -> Void
also card: Set -> Int
also closure: (Set, (Element -> Set)) -> Set
also difference: (Set, Set) -> Set
also elem_eq: ((Element, Element) -> Bool)
also elem_gt: ((Element, Element) -> Bool)
also empty: Set
also exists: ((Element, Set)) -> Bool
also find: ((Element, Set)) -> Null_Or( Element )
also fold: (((Element, Y)) -> Y) -> Set -> Y -> Y
also set: ((Element, Set)) -> Set
also is_empty: Set -> Bool
also make_list: Set -> List( Element )
also make_set: ( List( Element ) -> Set)
also partition: (Element -> Bool) -> (Set -> (Set, Set))
also remove: ((Element, Set)) -> Set
also revfold: (((Element, Y)) -> Y) -> Set -> Y -> Y
also select_arb: Set -> Element
also set_eq: ((Set, Set)) -> Bool
also set_gt: ((Set, Set)) -> Bool
also singleton: (Element -> Set)
also union: (Set, Set) -> Set;
};
api Table {
Table(X);
Key;
size: Table(X) -> Int;
empty: Table(X);
exists: ((Key, Table(X))) -> Bool;
find: ((Key, Table(X))) -> Null_Or(X);
set: ((((Key, X)), Table(X))) -> Table(X);
make_table: List ((Key, X) ) -> Table(X);
make_list: Table(X) -> List ((Key, X));
fold: ((((Key, X)), Y) -> Y) -> Table(X) -> Y -> Y;
};
api Hash {
Table;
Element;
size: Table -> Int;
add: (Element, Table) -> Table;
find: (Element, Table) -> Null_Or( Int );
exists: (Element, Table) -> Bool;
empty: Table;
};