(* Dan Grossman; Graduate Programming Languages; Lecture 17 *) (* absolutely no indication how the interface is implemented (threads, channels, blocking, server loops, etc.) *) type account val mkAcct : unit -> account val get : account -> float -> float val put : account -> float -> float val next_square : unit -> int (* Note: To make libraries composable with other CML-based libraries, you should instead (or also) expose versions that return events, so clients then either call sync or first compose with other libraries via choose. For example: val next_square_evt : unit -> int event *)