93bdf8c197df7d642656b826855e5bffe046f7a2
[haskell-report.git] / report / maybe.verb
1 %**<title>The Haskell 98 Library Report: Maybe Utilities</title>
2 %**~header
3 \section{Maybe Utilities}
4
5 \outline{
6 \inputHS{lib-hdrs/Maybe}
7 }
8
9 The type constructor @Maybe@ is defined in @Prelude@ as
10 \bprog
11 @
12 data Maybe a = Nothing | Just a
13 @
14 \eprog
15 The purpose of the @Maybe@ type is to provide a method of dealing with
16 illegal or optional values without terminating the program, as would
17 happen if @error@ were used, and without using @IOError@ from the @IO@
18 monad, which would cause the expression to become monadic.  A correct
19 result is encapsulated by wrapping it in @Just@; an incorrect result
20 is returned as @Nothing@.
21
22 Other operations on @Maybe@ are provided as part of the monadic
23 classes in the Prelude.
24
25 \clearpage
26 \subsection{Library {\tt Maybe}}
27 \label {Maybe}
28 \inputHS{lib-code/Maybe}
29
30 %**~footer