[Haskell-cafe] On the purity of Haskell

Heinrich Apfelmus apfelmus at quantentunnel.de
Thu Dec 29 20:21:50 CET 2011


Gregg Reynolds wrote:
> Donn Cave wrote:
>> Quoth Gregg Reynolds wrote:
>>
>> Look again at the sentence you trimmed off the end:
>> 
>>>> Of course, the point is that this result is an *IO action* of 
>>>> type IO Int, it's not the Int you would get "when executing
>>>> this action".
>>
>> I believe that more or less points to the key to this discussion. 
>> If it didn't make sense to you, or didn't seem relevant to the 
>> question of pure functions, then it would be worth while to think 
>> more about it.
> 
> Ok, let's parse it out.  "…it's not the int you would get 'when
> executing this action".  Close, but no cooky: it's not any kind of
> int at all (try doing arithmetic with it).  "IO Int" is a piece of
> rhetoric for the mental convenience of the user; Haskell does not and
> cannot know what the result of an IO action is, because it's outside
> the scope of the language (and computation).  (The "Int" part of "IO
> Int" refers to the input, not the output; it's just a sort of type
> annotation.)  It's not even a computation, unless you want to take a
> broad view and include oracles, interaction, etc. in your definition
> of computation.

Why would  IO Int  be something special or mysterious? It's an ordinary 
value like everything else; it's on the same footing as [Char], Maybe 
Int, Int -> String, Bool, and so on. I see no difference between the 
list  [1,2,3] :: [Int]  and the action  "pick a random number between 1 
and 6" :: IO Int  .


Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com




More information about the Haskell-Cafe mailing list