O tom, jak je realizovan vstup a vystup se dozvite presne pozdeji na prednaskach. V modulu Main je definovan vyraz Main typu IO(), ktery je spustitelnym programem umoznujicim interakci s vstup/vystupnim (I/O) rozhranim. Na program Main lze pohlizet jako na posloupnost akci nad I/O rozhranim (viz konstrukce do v definici Main).
module Main where
repl :: Int -> Char -> String
repl 0 _ = []
repl x c = c : repl (x-1) c
main::IO()
main = do putStr "Zadejte pocet replikaci (Int): "
x <- getLine
putStr "Zadejte replikovany znak (Char): "
y <- getLine
putStr "\n Vysledny retezec: "
putStr (repl (read x) (read y))
Pro vypocet pouziva program Main funkci repl, ktera aplikovana na n a c vraci vyraz typu [Char] vytvoreny n-nasobnou replikaci znaku c.
Priklad mozneho behu tohoto programu nasleduje:
__ __ __ __ ____ ___ _________________________________________
|| || || || || || ||__ Hugs 98: Based on the Haskell 98 standard
||___|| ||__|| ||__|| __|| Copyright (c) 1994-1999
||---|| ___|| World Wide Web: http://haskell.org/hugs
|| || Report bugs to: hugs-bugs@haskell.org
|| || Version: November 1999 _________________________________________
Haskell 98 mode: Restart with command line option -98 to enable extensions
Reading file "/packages/share/hugs-98/lib/Prelude.hs":
Hugs session for:
/packages/share/hugs-98/lib/Prelude.hs
Type :? for help
Prelude> :l Main.hs
Reading file "Main.hs":
Hugs session for:
/packages/share/hugs-98/lib/Prelude.hs
Main.hs
Main> main
Zadejte pocet replikaci (Int): 25
Zadejte replikovany znak (Char): '*'
Vysledny retezec: *************************
Main>