Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
222 views
in Technique[技术] by (71.8m points)

flow - Haskell: Continue program execution

I am very new to Haskell. My question might be very basic for you. Here I go-

I am writing a program to create a series of numbers using a specific mathematical formula. After creating this series, I am supposed to perform some operation on it like finding the maximum/minimum out of those numbers.

I could write the program but after getting a single input from the user, my program displays the output and then exits. What should I do if I have to wait for more commands from the user and exit on command END?

line <- getLine

I am using this command to get a command and then calling the necessary function according to the command. How should I proceed?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

A basic input loop:

loop = do
  putStr "Enter a command: "
  input <- getLine
  let ws = words input -- split into words
  case ws of
    ("end":_)       -> return ()
    ("add":xs:ys:_) -> do let x = read xs :: Int
                              y = read ys
                          print $ x + y
                          loop
    ... other commands ...
    _ -> do putStrLn "command not understood"; loop


main = loop

Note how each command handler calls loop again to restart the loop. The "end" handler calls return () to exit the loop.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...