| Notation |
Equivalent SML with SET and ORDSET
|
| \[|X|\] | size $S$ |
| \[\{\}\] | empty $()$ |
| \[\{k\}\] | singleton $k$ |
| \[k \in S\] | find $X$ $k$ |
| \[X \cup \{k\}\] | insert $(X, k)$ |
| \[X \setminus \{k\}\] | delete $(X, k)$ |
| \[\{k \in X\ |\ e\}\] | filterKey (fn $k$ => $e$) $X$ |
| \[X \cup Y\] | union $(X, Y)$ |
| \[X \cap Y\] | intersection $(X, Y)$ |
| \[X \setminus Y\] | difference $(X, Y)$ |
| Notation |
Equivalent SML with TABLE and ORDTABLE
|
| \[|T|\] | size $T$ |
| \[\{\}\] | empty $()$ |
| \[\{k \mapsto v\}\] | singleton $(k, v)$ |
| \[\{k \mapsto e : (k \mapsto v) \in T\}\] | mapKey (fn $(k, v)$ => $e$) $T$ |
| \[\{k \mapsto e : k \in X\}\] | tabulate (fn $k$ => $e$) $X$ |
| \[\{(k \mapsto v) \in T\ |\ e\}\] | filterKey (fn $(k, v)$ => $e$) $T$ |
| \[\{e_1 : (k \mapsto v) \in T\ |\ e_2\}\] | mapKey (fn $(k, v)$ => $e_1$) (filterKey (fn $(k, v)$ => $e_2$) $T$) |
| \[T_1 \cup T_2\] | union (fn (_, v) => v) $(T_1, T_2)$ |
| \[T_1 \cap T_2\] | intersection (fn (_, v) => v) $(T_1, T_2)$ |
| \[T_1 \cap T_2\] | difference $(T_1, T_2)$ |
| \[\sum_{(k \mapsto v) \in T} e\] | reduce add 0 (mapKey (fn $(k, v)$ => $e$) $T$) |
The meaning of add and 0 in the
reduce will depend on the type (e.g. Int.+ and
0 for integers or Real.+ and 0.0 for
reals). We can also replace $\sum$ with other operations such as $\min$ and
$\max$ with the implied semantics.