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