\begin{slide}{Unendliche Datenstrukturen}

Argumente für Konstruktoren werden auch verzögert ausgewertet,
deswegen kann man mit unendlichen Listen, Bäumen usw. rechnen.

\begin{verbatim}
nats :: [ Int ]
nats = nats_from 0 where
    nats_from n = n : nats_from (n+1)
\end{verbatim}
Das geht gut, solange man sich immer nur einen endlichen Teil ansieht
\begin{verbatim}
take 10 nats  -- OK
take 10 $ map ( \ x -> x * x) nats -- OK
length nats > 20 -- nicht OK
\end{verbatim}
Operationen auf Maschinenzahlen sind strikt
(erfordern ausgewertete Argumente)
\end{slide}
%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
