# Basis library changes

please see math/README to configure.): \alpha \rightarrow \alpha , fst : $\alpha \times \beta \rightarrow \alpha$, and snd : Failed to parse (Missing texvc executable; please see math/README to configure.): \alpha \times \beta \rightarrow \beta

to General module.

• The addition of currying/uncurrying helpers to General module (or perhaps a module Curry)
• curry : $(\alpha \times \beta \rightarrow \gamma) \rightarrow \alpha \rightarrow \beta \rightarrow \gamma$
• uncurry : $(\alpha \rightarrow \beta \rightarrow \gamma) \rightarrow (\alpha \times \beta) \rightarrow \gamma)$
• (un)curryn for $3 \leq n \leq 5$?
• A standard sum type. Perhaps
   datatype ('a, 'b) either = LEFT of 'a
| RIGHT of 'b


as suggested by Vesa Karvonen.

• More "standard" and efficient containers, ideally with convenient notation. Somewhat predicated upon an improved overloading/typeclass mechanism.
• Sets
• Multisets/Bags
• Maps
• Queue datatype. List datatype already acts as a stack. To have both convienent notation and an efficient implementation, something like views would probably be required.
• Note: there may be systematic ways to provide both curried and uncurried forms semi-automatically. See, for example, R. Di Cosmo, Isomorphisms of types: from -calculus to information retrieval and language design, Birkhauser, 1995. see CiteSeer