
diff -r 619531d87ce4 -r 4e2ee88276d2 doc-src/TutorialI/document/Option2.tex
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc-src/TutorialI/document/Option2.tex	Thu Jul 26 19:59:06 2012 +0200
@@ -0,0 +1,56 @@
+%
+\begin{isabellebody}%
+\def\isabellecontext{Option{\isadigit{2}}}%
+%
+\isadelimtheory
+%
+\endisadelimtheory
+%
+\isatagtheory
+%
+\endisatagtheory
+{\isafoldtheory}%
+%
+\isadelimtheory
+%
+\endisadelimtheory
+%
+\begin{isamarkuptext}%
+\indexbold{*option (type)}\indexbold{*None (constant)}%
+\indexbold{*Some (constant)}
+Our final datatype is very simple but still eminently useful:%
+\end{isamarkuptext}%
+\isamarkuptrue%
+\isacommand{datatype}\isamarkupfalse%
+\ {\isaliteral{27}{\isacharprime}}a\ option\ {\isaliteral{3D}{\isacharequal}}\ None\ {\isaliteral{7C}{\isacharbar}}\ Some\ {\isaliteral{27}{\isacharprime}}a%
+\begin{isamarkuptext}%
+\noindent
+Frequently one needs to add a distinguished element to some existing type.
+For example, type \isa{t\ option} can model the result of a computation that
+may either terminate with an error (represented by \isa{None}) or return
+some value \isa{v} (represented by \isa{Some\ v}).
+Similarly, \isa{nat} extended with $\infty$ can be modeled by type
+\isa{nat\ option}. In both cases one could define a new datatype with
+customized constructors like \isa{Error} and \isa{Infinity},
+but it is often simpler to use \isa{option}. For an application see
+\S\ref{sec:Trie}.%
+\end{isamarkuptext}%
+\isamarkuptrue%
+%
+\isadelimtheory
+%
+\endisadelimtheory
+%
+\isatagtheory
+%
+\endisatagtheory
+{\isafoldtheory}%
+%
+\isadelimtheory
+%
+\endisadelimtheory
+\end{isabellebody}%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "root"
+%%% End:




