| Vor- und NachteileAnwendbarkeit
Der Entwickler ...
 ... braucht sich nicht um die Auswertungsreihenfolge sorgen
... kann sich darauf verlassen, dass komplexe, rechenintensive Operationen nur
ausgefhrt werden, wenn sie tats„chlich ben÷tigt werden.
nullvect = newvect 0 0 0upvect = newvect 0 1 0
 lvect = newvect (-1) 0 0
 rvect = newvect 1 1 0
 dirvect = newvect 0 0 1
 
isnullvect :: LVect3D->Boolisnullvect v = (nullvect == v)
 
vectlen :: LVect3D->Floatvectlen p | (isnullvect p) = 0
 | otherwise = sqrt(((u p)*(u p))+((v p)*(v p))+((w p)*(w p)))
 
vectlens :: [LVect3D]->[Float]vectlens [] = []
 vectlens (hd:tl) = vectlen hd : vectlens tl
 
Main> head (vectlens [dirvect,rvect,nullvect,lvect])1.0
 Main>
 
 
... hat die M÷glichkeit unendliche Datenstrukturen zu benutzen
-- unendliche listeintlist :: Integer -> [Integer]
 intlist i = i : intlist (i+1)
 
zehnints = take 10 (intlist 0)von13bis21 = take 9 (intlist 13)
 
Main> zehnints[0,1,2,3,4,5,6,7,8,9]
 Main> von13bis21
 [13,14,15,16,17,18,19,20,21]
 Main>
 
 
.. muss unter Umst„nden die Auswertung von Teilausdrcken erzwingen
fcat :: String->IO Stringfcat f = do
 content<-readFile f
 return (show content)
 
flist :: String->IO ()flist f = do
 content<-readFile f
 putStrLn content
 
Nur die Methode flistgibt tats„chlich den Inhalt einer
Datei aus.
Die Methode readFilewertet nicht strikt aus
Der Inhalt einer Datei wird nur eingelesen, wenn er ben÷tigt wird
 Komplexit„t
 |