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 October 02, 2003
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 © 2003 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). |