On Wed, 23 Jan 2002, S.D.Mechveliani wrote:
I am sorry for, maybe, a silly question.
f name = readFile name >>= putStr
has the type String -> IO () And I need String -> String,
But that IS not the type of a function returning the contents of a file! (I'm sure you know what a mathematical function from String to String is and what it isn't, and the function you want just isnt String -> String, but rather (String,FileSystem) -> String, or String -> (FileSystem -> String) or String -> IO String. ) You want to have an apple, but you insist on wanting to call it a banana. Why? If you are going to be happy with haskell, you have to get used to call things what they are.
so that (f name) is a string contained in the given file.
I never learned such things in Haskell because they are rather non-functional.
Not really. Everything in Haskell is 100% functional, but readFile "foo.txt" is not a String, it is an action that when executed returns a string. Sequences of actions can be built whith >>= (or do { ; ; ;} ) (Since actions belong to a Monad). Mvh /Lars L