Re: Char.isUpper undefined

Ross Paterson <[email protected]> Sun, 30 Apr 2006 16:22:51 +0100
Newsgroups gmane.comp.lang.haskell.hugs.bugs
Message-ID <[email protected]>
On Sun, Apr 30, 2006 at 04:04:42PM +0100, Neil Mitchell wrote:
> In Hugs,
> 
> :l Char
> :t isUpper -- works fine
> :t Data.Char.isUpper -- fine
> :t Char.isUpper -- fails
> 
> Char> Char.isUpper 'a'
> ERROR - Undefined qualified variable "Char.isUpper"

It's a subtle consequence of the documented behaviour: the names
in scope at the prompt are those in scope inside the current module.
According to the rules of Haskell 98, inside the Char module, the names
isUpper and Data.Char.isUpper are in scope, but Char.isUpper is not,
because isUpper isn't defined in the module Char.

> I guess this is the wrong behaviour? GHCi gets this right.

GHCi has an extra feature:

	3.4.3.1. Qualified names

	To make life slightly easier, the GHCi prompt also behaves as if
	there is an implicit import qualified declaration for every module
	in every package, and every module currently loaded into GHCi.

> When saved to a file, for example:
> 
> --
> import Char
> res = Char.isUpper 'a'
> --
> 
> This works fine.

Yes, and if you :l that module, Char.isUpper will be in scope.