f36590c9f4
Also added a few more section to make beamer and article more compatible.
22 lines
811 B
TeX
22 lines
811 B
TeX
But we can do more than enumerations. How about we do some error handling? Let's say we want a function to return an \code{Int}, but in case something went horribly wrong, we don't just want to return a 0 or some magic number, but a proper error message. Here we go:
|
|
\pause
|
|
\begin{haskellcode}
|
|
data MaybeInt = NoError Int
|
|
| Error String
|
|
\end{haskellcode}
|
|
\pause
|
|
So constructors are just \emph{functions}! And they can have arguments, just like functions. Let's check their types:
|
|
\begin{haskellcode}
|
|
> :t NoError
|
|
NoError :: Int -> MaybeInt
|
|
> :t Error
|
|
Error :: String -> MaybeInt
|
|
\end{haskellcode}
|
|
\pause
|
|
And now we can do sanity checks:
|
|
\begin{haskellcode}
|
|
calcSomething :: Int -> MaybeInt
|
|
calcSomething x
|
|
| x < 100 = NoError (x * 5)
|
|
| otherwise = Error "Int out of range!"
|
|
\end{haskellcode} |