Haskell logo CIS 5520: Advanced Programming

Fall 2022

  • Home
  • Schedule
  • Homework
  • Resources
  • Software
  • Style guide
Note: this is the stubbed version of module IOExercise. Try to figure out how to fill in all parts of this file marked undefined. CIS 5520 students should be able to access this code through github. Eventually, the completed version will be available.

In class exercise: IOExercise

In-class exercise (IO Monad)

> module IOExercise where
> 
> import System.FilePath

Rewrite these programs so that they do not use 'do'. (Make sure that you do not change their behavior!)

> simpleProgram :: IO ()
> simpleProgram = do
>    putStrLn "This is a simple program that does IO."
>    putStrLn "What is your name?"
>    inpStr <- getLine
>    putStrLn ("Welcome to Haskell, " ++ inpStr ++ "!")
> lengthProgram :: IO Int
> lengthProgram = do
>    let x = length [1,2,3,4,5,6]
>    putStrLn ("The length of the list is" ++ show x)
>    return x
> 
> anotherProgram :: IO ()
> anotherProgram = do
>    putStrLn "What is your name?"
>    inpStr <- getLine
>    if inpStr == "Haskell"
>        then do putStrLn "You rock!"
>                return ()
>                putStrLn "Really!!"
>        else putStrLn ("Hello " ++ inpStr)
>    putStrLn "That's all!"
Design adapted from Minimalistic Design | Powered by Pandoc and Hakyll