Input/Output iterativ In Haskell

Bobi

Bekanntes Mitglied
Hallo Ich will so was in Haskell programmieren
Java:
System.out.println("Geben sie Tex ein");
        st = scan.nextLine();
System.out.println("wie viele mal");
        n = scan.nextInt();
        for(int i = 0; i < n; i++){
            System.out.println(st);
        }
Meine Ansatz in Haskell ist das
Code:
do
   schleife x == 0 = return ()
   schleife x =
   schleife (x-1)
main = schleife x
   putStrLn "Geben sie den Text ein?"
   putStrLn <- getLine
   putStrLn "Wie viel mal?"
   let x <-  readLn
aber es funktioniert nicht ich verstehe fast gar nichts von Haskell und besonders von diese main do methode
ohne das man solche Methode benutzt main = replicateM_ 5 $ putStrLn "Hello World"
Danke schön im voraus für eure Hilfe
 
Zuletzt bearbeitet von einem Moderator:

JCODA

Top Contributor
Tja, iterativ macht man in Haskell einfach nichts. Die Sprache ist nicht dazu gedacht.
Eine rekursive Variante würde so aussehen:

Code:
print3 line times = if (times >0) then do
                                        putStrLn line
                                        print3 line (times-1)
                    else return()
main = do
   putStrLn "Geben sie einen Text ein!"
   line <- getLine
   putStrLn "Wie viel oft soll dieser ausgegeben werden?"
   x <- readLn
   print3 line x
Aber generell Schleifen in Haskell gibt es nicht; siehe http://stackoverflow.com/questions/16004365/simple-haskell-loop
 

Neue Themen


Oben