[Haskell-cafe] Noob question and sequence of operations (print then do something else)

Sam Hughes hughes at rpi.edu
Mon Sep 24 01:30:47 EDT 2007


John Wicket wrote:
> I am still in an imperative way of thinking.  In this example here; how
> would I call "putStrLn" and then set the function with a value.  Eg:
> 
> aa :: String -> IO ()
> aa instr = do
>   putStrLn "abc"
>   putStrLn "abc"
>   return "123"
> 
> --- The error I am getting.
> 
>     Couldn't match expected type `()' against inferred type `[Char]'
>     In the first argument of `return', namely `"123"'
>     In the expression: return "123"
>     In the expression:
>     do putStrLn "abc"
>        putStrLn "abc"
>        return "123"

Your type signature is wrong.  If you want an IO action whose return 
value is a String, say so:

aa :: String -> IO String


More information about the Haskell-Cafe mailing list