Hugs unterscheidet dabei: Ist der Ausdruck vom Typ IO (), das heißt, eine Aktion, dann wird diese ausgeführt. Beispiel:
Prelude> putStrLn "hello" helloBei Ausdrücken anderer Typen zeigt Hugs eine ASCII-Repräsentation des Wertes an. Beispiel:
Prelude> take 10 [1..] [1,2,3,4,5,6,7,8,9,10]Beachte: nicht für alle Typen existiert so eine Repräsentation. Das führt zu solchen Fehlermeldungen:
Prelude> show id ERROR: Illegal Haskell 98 class constraint in inferred type *** Expression : show id *** Type : Show (a -> a) => [Char]Für nutzerdefinierte Typen muß man die Repräsentation entweder selbst festlegen oder vom Compiler explizit generieren lassen. Siehe später bei Typklassen.
Ein Grafik-Programm ist ebenfalls eine Aktion. Es sieht im einfachsten Fall so aus:
import SOEGraphics main = runGraphics $ do let s = 500 w <- openWindow "Grafik" (s, s) drawInWindow w $ polyline [(0,0), (s,s)] k <- getKey w closeWindow wBeachte: nach dem "do" müssen die Zeilenanfänge genau untereinander stehen.
Was das "do" überhaupt ist, behandeln wir später ausführlich.
import Bild ... bild $ neben ( über (kreis 1) (kreis 2) ) ( quadrat 3 )Einige Datentypen "t" implementieren die Methode "form :: t -> Bild", und es gibt die Abkürzung "zeige x = bild (form x)". Beispiel
import Bild import Ding import Form ... zeige [ [ rot, blau, gelb ], [schwarz, blau] ]Zu Methoden (und Typklassen und Instanzen) hören wir später mehr.