Generic support

Many of the packages that export generic interfaces and modules also define m3makefile procedures that will instantiate the generic source and add it to the list of Modula-3 sources to be compiled. The instantiated interfaces and modules are created in the derived directory, so they won't clutter up your source directory.

array_sort(nm, elt) instantiates the ArraySort generics to produce nmArraySort.i3 and nmArraySort.m3 which implement a sort for arrays of elt.T values.

Array_sort(nm, elt) like array_sort, but also makes the interface available to importers outside the current package.

list(nm, elt) instantiates the List generics to produce nmList.i3 and nmList.m3 which implement linked lists of elt.T values.

List(nm, elt) like list, but also makes the interface available to importers outside the current package.

list_sort(nm, elt) instantiates the ListSort generics to produce nmListSort.i3 and nmListSort.m3 which implement a sorting procedure for lists of elt.T values. This procedure assumes that list(nm,elt) has been called.

List_sort(nm, elt) like list_sort, but also makes the interface available to importers outside the current package.

pqueue(nm, elt) instantiates the PQueue generics to produce nmPQ.i3 and nmPQ.m3 which implement a priority queue of elt.T values.

Pqueue(nm, elt) like pqueue, but also makes the interface available to importers outside the current package.

sequence(nm, elt) instantiates the Sequence generics to produce nmSeq.i3, nmSeqRep.i3 and nmSeq.m3 which implement a sequence of elt.T values.

Sequence(nm, elt) like sequence, but also makes the interfaces available to importers outside the current package.

sorted_table(nm, key, value) instantiates the SortedTable generics to produce nmSortedTbl.i3 and nmSortedTbl.m3 which implement a sorted table mapping from type key.T to value.T.

Sorted_table(nm, key, value) like sorted_table, but also makes the interface available to importers outside the current package.

table(nm, key, value) instantiates the Table generics to produce nmTbl.i3 and nmTbl.m3 which implement a table mapping from type key.T to value.T.

Table(nm, key, value) like table, but also makes the interface available to importers outside the current package.