Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

simple Haskell loop

Tags:

loops

io

haskell

I just started learning Haskell, but the absence of loops is infinitely frustrating right now. I figured out how to write loops for functions. My problem, however, is that I want to output some results while iterating the loop. It seems that I have to use debug to perform this simple task.

So right now I would just appreciate an example of how to print out a string 10 times in the main structure.

In other words, I want to do this 10 times:

main = do       putStrLn "a string"  

Thanks. I feel this will be very illuminating for my task.

like image 905
TurtleTread Avatar asked Apr 14 '13 21:04

TurtleTread


People also ask

Is there for loop in Haskell?

Recursion is important to Haskell because unlike imperative languages, you do computations in Haskell by declaring what something is instead of declaring how you get it. That's why there are no while loops or for loops in Haskell and instead we many times have to use recursion to declare what something is.

Do While loop in Haskell?

Haskell doesn't actually have do-while loops, it has recursion that you can use to implement do-while loops. Haskell doesn't actually have loops at all, just recursion, you'll have to learn how to re-implement features from imperative languages that you're used instead.


1 Answers

You could define a recursive function that prints "a string" n times (n being the parameter of the function), like this:

printStringNTimes 0 = return () printStringNTimes n =  do   putStrLn "a string"   printStringNTimes (n-1)  main = printStringNTimes 10 

A somewhat more general approach would be to define a function that repeats any IO action n times:

repeatNTimes 0 _ = return () repeatNTimes n action =  do   action   repeatNTimes (n-1) action  main = repeatNTimes 10 (putStrLn "a string") 

The above function already exists in Control.Monad under the name replicateM_.

like image 131
sepp2k Avatar answered Sep 19 '22 13:09

sepp2k