I'd like to ask a question concerning a following passage in
"Yet another Haskell Tutorial" that ushers in the topic of monads:

I, as a beginner here, believe the haskell cafe list is the correct place for beginner questions.


<<After all, suppose you have a function that reads a string from the keyboard. Ifyou 
call this function twice, and the user types something the first time and something else 
the second time, then you no longer have a function, since it would return two different 
values.>>

How do I have to interpret this? I cannot make sense of it for I do not see where the definition of a function that I know is violated. I view it that way: The string is just a kind of argument to the string-reading function and that different strings (i.e. different arguments) yield different return values is a commonplace phenomenon with functions, isn't it? How do I have to alter this (over?)simple interpretation to see the point the author wants to make?


In this case I think you mean that the string typed on the keyboard is a "kind of" argument to the function. I think this is the problem. A function call f x to a function f should always return the same value if x is the same, and reading from keyboard and stating that the string read is a "kind of extra argument" to the function is not allowed. I think what is called functions here would be called "pure functions" ina different language. This would mean a function that only depends on its arguments.

Using this definition a zero-parameter function (like the readLine function mentioned above) must always return the same value. This property is violated.

This requirement makes Haskell a purely functional language.

/ johan

_______________________________________________
Hugs-Users mailing list
Hugs-Users@haskell.org
http://www.haskell.org/mailman/listinfo/hugs-users

Reply via email to