[GHC] #15299: GHCi :print produces variables that cause a panic
GHC
ghc-devs at haskell.org
Thu Jun 21 22:10:20 UTC 2018
#15299: GHCi :print produces variables that cause a panic
--------------------------------------+-------------------------------
Reporter: Omf | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: GHCi | Version: 8.2.2
Keywords: | Operating System: Linux
Architecture: x86_64 (amd64) | Type of failure: GHCi crash
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
--------------------------------------+-------------------------------
Using ghci installed by Stack, I noted some strange behaviour from the
:sprint and :print commands:
{{{#!hs
λ> xs = [1,2,3]
λ> :sprint xs
xs = _
λ> head xs
1
λ> :sprint xs
xs = _
λ> :print xs
xs = (_t1::Num a => [a])
λ> _t1
<interactive>:6:1: error:
• No instance for (Num a) arising from a use of ‘_t1’
• In the expression: _t1
In an equation for ‘it’: it = _t1
λ> :t _t1
<interactive>:1:1: error:
No instance for (Num a) arising from a use of ‘_t1’
λ> :info _t1
_t1 :: Num a => [a] -- Defined in ‘interactive:Ghci3’
λ> _t1 :: [Int]
<interactive>:9:1: error:ghc: panic! (the 'impossible' happened)
(GHC version 8.2.2 for x86_64-unknown-linux):
No skolem info:
a_a1rR
Call stack:
CallStack (from HasCallStack):
prettyCurrentCallStack, called at
compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
ghc:Outputable
pprPanic, called at compiler/typecheck/TcErrors.hs:2653:5 in
ghc:TcErrors
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
I don't really understand the error, or why even the :type command fails,
but it appears to be related to the way numeric types are polymorphic
until a specific type is forced. Note that the both the :sprint and :print
commands don't seem to recognise that we've evaluated any of xs, just
printing an underscore no matter what.
The panic doesn't happen if I force a type when defining xs:
{{{#!hs
λ> xs = [1,2,3] :: [Int]
λ> :sp xs
xs = _
λ> head xs
1
λ> :sp xs
xs = 1 : _
λ> :print xs
xs = 1 : (_t2::[Int])
λ> _t2
[2,3]
λ> :t _t2
_t2 :: [Int]
λ> :in _t2
_t2 :: [Int] -- Defined in ‘interactive:Ghci6’
λ> _t2 :: [Integer]
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15299>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list