Content deleted Content added
m →Standard ML: lang="sml" |
|||
Line 1,195:
The library of the popular [[Standard ML of New Jersey]] implementation provides a signature (somewhat like an "interface"), <code>ORD_MAP</code>, which defines a common interface for ordered functional (immutable) associative arrays. There are several general functors, <code>BinaryMapFn</code>, <code>ListMapFn</code>, <code>RedBlackMapFn</code>, and <code>SplayMapFn</code>, that allow you to create the corresponding type of ordered map (the types are a [[self-balancing binary search tree]], sorted [[association list]], [[red-black tree]], and [[splay tree]], respectively) using a user-provided structure to describe the key type and comparator. The functor returns a structure that follows the <code>ORD_MAP</code> interface. In addition, there are two pre-defined modules for associative arrays with integer keys: <code>IntBinaryMap</code> and <code>IntListMap</code>.
<source lang="sml">
- structure StringMap = BinaryMapFn (struct
type ord_key = string
Line 1,213:
- StringMap.find (m, "John Doe");
val it = SOME "555-1212" : string option
</
SML/NJ also provides a polymorphic hash table:
<source lang="sml">
- exception NotFound;
exception NotFound
Line 1,236:
- HashTable.lookup m "John Doe"; (* raises the exception if not found *)
val it = "555-1212" : string
</
Monomorphic hash tables are also supported using the <code>HashTableFn</code> functor.
|