[Haskell] Re: Why is getArgs in the IO monad?

Conal Elliott conal at conal.net
Tue Jan 18 11:43:05 EST 2005


Jim Apple wrote:

> Even if this is denotationally different from a value like zero ::
> Int, I think it is also different from getLine :: IO String. It
> seems to mean something between these.

I think I understand your point better now: Do you want another
denotational distinction, somewhere between the semantic simplicity of
Int or [String] and the semantically intractable kitchen-sink IO?  I'd
like to see more exploration in that in-between space.

Cheers,
     - Conal

-----Original Message-----
From: haskell-bounces at haskell.org [mailto:haskell-bounces at haskell.org]
On Behalf Of Jim Apple
Sent: Tuesday, January 18, 2005 12:15 AM
To: haskell at haskell.org
Subject: [Haskell] Re: Why is getArgs in the IO monad?

I still think I'm missing your point, but let me take a stab at it.

Conal Elliott wrote:

> I'm suggesting you might better understand the
> why of Haskell if you think denotationally (here about the meaning of
> the [String] type), rather than operationally.

The meaning of a type seems to be about what happens operationally. ":: 
[String]" is an operational guarantee, so if we let "getArgs :: 
[String]" that is a promise that there is some list of Strings at
runtime.

 > I'm
> guessing that none of those 2^32+1 values is what you'd mean by
"length
> getArgs".

Well, I suppose I mean something like an existential type: there is some

Int that is length getArgs.

Even if this is denotationally different from a value like zero :: Int, 
I think it is also different from getLine :: IO String. It seems to mean

something between these. I suppose my intuition is that it is closer to 
:: Int

Jim

_______________________________________________
Haskell mailing list
Haskell at haskell.org
http://www.haskell.org/mailman/listinfo/haskell



More information about the Haskell mailing list