|
|
@@ -501,16 +501,6 @@ data MaybeInt = NoError Int |
|
|
|
| Error String |
|
|
|
\end{lstlisting} |
|
|
|
\pause |
|
|
|
And now we can do sanity checks: |
|
|
|
\pause |
|
|
|
\setHaskellCodeStyle |
|
|
|
\begin{lstlisting} |
|
|
|
calcSomething :: Int -> MaybeInt |
|
|
|
calcSomething x |
|
|
|
| x < 100 = NoError (x * 5) |
|
|
|
| otherwise = Error "Int out of range!" |
|
|
|
\end{lstlisting} |
|
|
|
\pause |
|
|
|
So constructors are just \emph{functions}! And they can have arguments, just like functions. Let's check their types: |
|
|
|
\setHaskellCodeStyle |
|
|
|
\begin{lstlisting} |
|
|
@@ -519,6 +509,15 @@ NoError :: Int -> MaybeInt |
|
|
|
> :t Error |
|
|
|
Error :: String -> MaybeInt |
|
|
|
\end{lstlisting} |
|
|
|
\pause |
|
|
|
And now we can do sanity checks: |
|
|
|
\setHaskellCodeStyle |
|
|
|
\begin{lstlisting} |
|
|
|
calcSomething :: Int -> MaybeInt |
|
|
|
calcSomething x |
|
|
|
| x < 100 = NoError (x * 5) |
|
|
|
| otherwise = Error "Int out of range!" |
|
|
|
\end{lstlisting} |
|
|
|
\end{frame} |
|
|
|
|
|
|
|
\begin{frame}[fragile] |
|
|
|