Ich fange immer noch an, Haskell zu erkunden. Ich weiß, dass dieser Code in der IO
Monade "läuft". Wenn es von der l <- ...
Zeile zur nächsten geht, wird die IO - bind
aufgerufen.Warum ist das nicht faul
Man könnte denken, dass, weil Haskell faul ist, l
nie ausgewertet wird. Aber "bind
" wertet immer den vorherigen Befehl aus, ist das richtig? Weil das Programm den Fehler "Datei nicht gefunden" erzeugt.
main = do
l <- mapM readFile [ "/tmp/notfound" ]
return()
'l wird nie ausgewertet '- Hm? Faul heißt nicht "nie", sondern "noch nicht" oder "nur wenn es wirklich gebraucht wird". –
@RobertHarvey Ja, aber für die Nicht-Haskeller, die den Quellcode betrachten, wird 'l' nicht mehr benutzt. Aber es wird implizit verwendet, oder? – Cartesius00