mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-25 22:38:04 +02:00
Haskell Type hierarchy
This commit is contained in:
parent
7d278dd745
commit
e7e4f64df5
8 changed files with 138 additions and 0 deletions
|
@ -6,3 +6,4 @@ in dem Erstellen dieses Skripts steckt:
|
|||
|01.02.2014 | 13:30 - 13:45 | Thoma | Initialisierung; Grobe Struktur
|
||||
|01.02.2014 | 14:00 - 14:45 | Thoma | ASCII-Tabelle in C angefangen; Kapitel "Programmiersprachen" hinzugefügt; erste Definitionen
|
||||
|01.02.2014 | 14:45 - 15:30 | Thoma | Haskell angefangen
|
||||
|01.02.2014 | 11:15 - 11:45 | Thoma | Haskell Class Hierachy
|
||||
|
|
|
@ -21,6 +21,16 @@ Haskell kann unter \href{http://www.haskell.org/platform/}{\path{www.haskell.org
|
|||
für alle Plattformen heruntergeladen werden. Unter Debian-Systemen
|
||||
ist das Paket \texttt{ghc} bzw. \texttt{haskell-platform} relevant.
|
||||
|
||||
\section{Typen}
|
||||
Siehe \cref{fig:haskell-type-hierarchy}:
|
||||
|
||||
\begin{figure}[htp]
|
||||
\centering
|
||||
\resizebox{0.9\linewidth}{!}{\input{figures/haskell-type-classes.tex}}
|
||||
\caption{Hierarchie der Haskell Standardklassen}
|
||||
\label{fig:haskell-type-hierarchy}
|
||||
\end{figure}
|
||||
|
||||
\section{Syntax}
|
||||
\subsection{Klammern}
|
||||
Haskell verzichtet an vielen Stellen auf Klammern. So werden im
|
||||
|
|
Binary file not shown.
|
@ -5,6 +5,18 @@ in der Klausur als Nachschlagewerk zu dienen; es soll jedoch auch
|
|||
vorher schon für die Vorbereitung genutzt werden können und nach
|
||||
der Klausur als Nachschlagewerk dienen.
|
||||
|
||||
Ein Link auf das Skript ist unter \href{http://martin-thoma.com/programmierparadigmen-klausur/}{\path{martin-thoma.com/programmierparadigmen-klausur/}}
|
||||
zu finden.
|
||||
|
||||
\section*{Anregungen, Verbesserungsvorschläge, Ergänzungen}
|
||||
Noch ist das Skript im Aufbau. Es gibt viele Baustellen und es ist
|
||||
fraglich, ob ich bis zur Klausur alles in guter Qualität bereitstellen
|
||||
kann. Daher freue ich mich über jeden Verbesserungsvorschlag.
|
||||
|
||||
Anregungen, Verbesserungsvorschläge und Ergänzungen können per
|
||||
Pull-Request gemacht werden oder mir per Email an info@martin-thoma.de
|
||||
geschickt werden.
|
||||
|
||||
\section*{Was ist Programmierparadigmen?}
|
||||
|
||||
TODO
|
||||
|
@ -13,3 +25,6 @@ TODO
|
|||
Grundlegende Kenntnisse vom Programmieren, insbesondere mit Java,
|
||||
wie sie am KIT in \enquote{Programmieren} vermittelt werden, werden
|
||||
vorausgesetzt.
|
||||
|
||||
Die Unifikation wird wohl auch in \enquote{Formale Systeme}
|
||||
erklärt; das könnte also hier von Vorteil sein.
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
\begin{tikzpicture}
|
||||
\tikzstyle{node}=[ellipse,thick,fill=white,draw=black,inner sep=0pt,text width=3cm,align=center]
|
||||
\tikzstyle{edge}=[->, ultra thick]
|
||||
\matrix[row sep=0.5cm,column sep=0.5cm] {
|
||||
\node[node] (Eq) {\textbf{Eq}\\All except IO, (->)}; &
|
||||
\node[node] (Show) {\textbf{Show}\\All except IO, (->)}; &
|
||||
\node[node] (Read) {\textbf{Read}\\All except IO, (->)}; \\
|
||||
\node[node] (Ord) {\textbf{Ord}\\All except IO, (->), IOError}; &
|
||||
\node[node] (Num) {\textbf{Num}\\Int, Integer, Float, Double}; &
|
||||
\node[node] (Bounded) {\textbf{Bounded}\\Int, Char, Bool, (), Ordering, tuples}; \\
|
||||
\node[node] (Enum) {\textbf{Enum}\\{\small (), Bool, Char, Ordering, Int, Integer, Float, Double}}; &
|
||||
\node[node] (Real) {\textbf{Real}\\Int, Integer, Float, Double}; &
|
||||
\node[node] (Fractional) {\textbf{Fractional}\\Float, Double}; \\
|
||||
\node[node] (Integral) {\textbf{Integral}\\Int, Integer}; &
|
||||
\node[node] (RealFrac) {\textbf{RealFrac}\\Float, Double}; &
|
||||
\node[node] (Floating) {\textbf{Floating}\\Float, Double}; \\
|
||||
\node[node] (Monad) {\textbf{Monad}\\IO, (), Maybe}; &
|
||||
\node[node] (RealFloat) {\textbf{RealFloat}\\Float, Double}; &
|
||||
\\
|
||||
\node[node] (MonadPlus) {\textbf{MonadPlus}\\IO, (), Maybe}; &
|
||||
\node[node] (Functor) {\textbf{Functor}\\IO, (), Maybe}; &
|
||||
\\
|
||||
};
|
||||
\draw[edge] (Eq) -- (Ord);
|
||||
\draw[edge] (Eq) -- (Num);
|
||||
\draw[edge] (Show) -- (Num);
|
||||
\draw[edge] (Ord) -- (Real);
|
||||
\draw[edge] (Num) -- (Real);
|
||||
\draw[edge] (Num) -- (Fractional);
|
||||
\draw[edge] (Enum) -- (Integral);
|
||||
\draw[edge] (Real) -- (Integral);
|
||||
\draw[edge] (Real) -- (RealFrac);
|
||||
\draw[edge] (Floating) -- (RealFloat);
|
||||
\draw[edge] (RealFrac) -- (RealFloat);
|
||||
\draw[edge] (Monad) -- (MonadPlus);
|
||||
\end{tikzpicture}
|
Loading…
Add table
Add a link
Reference in a new issue