Zum Inhalt springen

Funktionale Programmierung mit Haskell/ Das erste Programm

Aus Wikibooks


Ein Hallo-Welt-Programm

[Bearbeiten]

Das erste Haskell-Programm soll wie immer das Hallo-Welt-Beispiel sein. Es wird (mit einem beiliebigen ASCII-Editor) in eine Datei namens hello.hs geschrieben:

Das Hallo-Welt-Programm, Dateiname hello.hs
-- Hallo Welt
main = putStrLn "Hallo Welt"

Die erste Zeile ist ein Kommentar, die Ausgabe von "Hallo Welt" erfolgt mit der putStrLn-Funktion in der zweiten Zeile. Die Zeilennummern werden in diesem Buch zur Übersichtlichkeit vor jedes Programm gestellt.

Verschiedene Arten zur Programmausführung

[Bearbeiten]

Ein Haskell-Programm kann mit :load oder :load direkt in den Interpreter gezogen werden:

Ausführung eines Haskell-Programms im Interpreter
$> ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :load hello.hs 
[1 of 1] Compiling Main             ( hello.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
Hallo Welt
*Main>
Hinweis: Die Eingabe $> ghci steht für den Aufruf des ghci aus einer Unix-Shell

Ein Haskell-Programm lässt sich auch kompilieren und als fertiges Programm ohne Interpreter nutzen.

Aufruf eines Haskell-Programms aus Unix ohne Interpreter
$> ghc --make hello.hs 
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking hello ...
$> ./hello 
Hallo Welt
$>

Es geht auch so:

Aufruf eines Haskell-Programms aus Unix ohne Interpreter
$> ghc -o hallo hello.hs
[1 of 1] Compiling Main             ( hello.hs, hello.o ) 
Linking hallo ...
$> ./hallo 
Hallo Welt
$>

Oder, noch einfacher, so:

Aufruf eines Haskell-Programms aus Unix ohne Interpreter
$> runhaskell hello.hs 
Hallo Welt
$>

Ein Hallo-Welt-Programm mit eigener Eingabe

[Bearbeiten]

Eine kleine Erweiterung, damit das Programm mit Namen grüßt:


Das Hallo-Welt-Programm, Dateiname hello2.hs
main = do 
    putStrLn ("Wie heisst Du?")
    name <- getLine
    putStrLn ("Hallo, " ++ name)
Ausgabe
$> runhaskell hello2.hs
Wie heisst Du? 
Melanie
Hallo, Melanie
$>