a Functor instance is defined for IO, so we can fmap (a -> b) over IO, too.
not using IO monad it seems ;)
module FunctorIO where
{-
usage:
*FunctorIO> main
{type something, <enter>}
-}
process:: String -> String
process s = s ++ " .. ok"
main::IO String
main = func getLine
func::IO String -> IO String
func ios = process <$> ios