Option structure
signature OPTION
structure Option :> OPTION
The Option structure defines the option type, used for handling partial functions and optional values, and provides a collection of common combinators.
The type, the Option exception, and the functions getOpt, valOf, and isSome are available in the top-level environment.
datatype 'a option = NONE | SOME of 'a
exception Option
val getOpt : 'a option * 'a -> 'a
val isSome : 'a option -> bool
val valOf : 'a option -> 'a
val filter : ('a -> bool) -> 'a -> 'a option
val join : 'a option option -> 'a option
val app : ('a -> unit) -> 'a option -> unit
val map : ('a -> 'b) -> 'a option -> 'b option
val mapPartial : ('a -> 'b option)
-> 'a option -> 'b option
val compose : ('a -> 'b) * ('c -> 'a option)
-> 'c -> 'b option
val composePartial : ('a -> 'b option) * ('c -> 'a option)
-> 'c -> 'b option
datatype 'a option = NONE | SOME of 'a
option provides a distinction between some value and no value, and is often used for representing the result of partially defined functions. It can be viewed as a typed version of the C convention of returning a NULL pointer to indicate no value.
getOpt (opt, a)
v if opt is SOME(v); otherwise it returns a.
isSome opt
true if opt is SOME(v); otherwise it returns false.
valOf opt
v if opt is SOME(v); otherwise it raises the Option exception.
filter f a
SOME(a) if f(a) is true and NONE otherwise.
val join : 'a option option -> 'a option
join function maps NONE to NONE and SOME(v) to v.
app f opt
v if opt is SOME(v), and otherwise does nothing.
map f opt
NONE to NONE and SOME(v) to SOME(f v).
mapPartial f opt
NONE to NONE and SOME(v) to f(v). The expression mapPartial f is equivalent to join o (map f).
compose (f, g) a
NONE if g(a) is NONE; otherwise, if g(a) is SOME(v), it returns SOME(f v). Thus, the compose function composes f with the partial function g to produce another partial function. The expression compose (f, g) is equivalent to (map f) o g.
composePartial (f, g) a
NONE if g(a) is NONE; otherwise, if g(a) is SOME(v), it returns f(v). Thus, the composePartial function composes the two partial functions f and g to produce another partial function. The expression composePartial (f, g) is equivalent to (mapPartial f) o g.
Generated April 12, 2004
Last Modified January 22, 1997
Comments to John Reppy.
This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy.
|
Copyright © 2004 AT&T and Lucent Technologies. All rights reserved.
Permission is granted for internet users to make one paper copy for their
own personal use. Further hardcopy reproduction is strictly prohibited.
Permission to distribute the HTML document electronically on any medium
other than the internet must be requested from the copyright holders by
contacting the editors.
Printed versions of the SML Basis Manual are available from Cambridge
University Press.
To order, please visit
www.cup.org (North America) or
www.cup.cam.ac.uk (outside North America). |