[GHC] #16358: Confusing ghci error message
GHC
ghc-devs at haskell.org
Sat Feb 23 08:06:09 UTC 2019
#16358: Confusing ghci error message
-------------------------------------+-------------------------------------
Reporter: lerkok | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by lerkok:
Old description:
> {{{
> $ ghci
> GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
> Prelude> import qualified Data.Set as S
> Prelude S> S.foo
>
> <interactive>:2:1: error:
> Not in scope: ‘S.foo’
> No module named ‘S’ is imported.
> }}}
>
> I'm curious why `ghci` says `No module named 'S' is imported`. I found it
> very confusing.
>
> I'd have expected it to say one of three things:
>
> 1. `Module Data.Set referenced via S does not export foo`
> 2. `Constructor S not in scope`
> 3. `Variable foo not in scope`
>
> The first one would be the most informative, but I can see that the
> second and the third messages might be quite reasonable as well due to
> the interpretation of dot as composition. But the message `No module S is
> imported` is quite confusing given I just issued `import qualified
> Data.Set as S`.
New description:
{{{
$ ghci
GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
Prelude> import qualified Data.Set as S
Prelude S> S.foo
<interactive>:2:1: error:
Not in scope: ‘S.foo’
No module named ‘S’ is imported.
}}}
I'm curious why `ghci` says `No module named 'S' is imported`. I found it
very confusing.
I'd have expected it to say one of three things:
1. `Module Data.Set referenced via S does not export foo`
2. `Constructor S not in scope`
3. `Variable foo not in scope`
The first one would be the most informative, but I can see that the second
and the third messages might be quite reasonable as well due to the
interpretation of dot as composition. But the message `No module S is
imported` is quite confusing given I just issued `import qualified
Data.Set as S`.
Indeed, if I put this in a file, the error message is crystal clear:
{{{#!hs
$ cat a.hs
import qualified Data.Set as S
bar = S.foo
$ ghci a.hs
GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( a.hs, interpreted )
a.hs:3:7: error:
Not in scope: ‘S.foo’
Module ‘Data.Set’ does not export ‘foo’.
|
3 | bar = S.foo
| ^^^^^
Failed, no modules loaded.
}}}
I'm curious why there's a difference between these two scenarios.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16358#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list