\begin{itemize}
\item What are side effects?
\item What is referential transparency?
\item Can you have referential transparency with side effects?
\item What does the output of a haskell function depend on?
\item What is laziness?
\item When are types checked in haskell?
\item What are the differences between lists and pairs?
\end{itemize}
Does this compile? If not, fix it. Is this a total or a partial function?
\begin{haskellcode}
data IntOrDouble = MkDouble Double
                 | MkInt Int

f :: Int -> IntOrDouble
f 0 = 0.5
\end{haskellcode}