Skip to content

panic caused in ghci by the following code involving monad transformers

I was attempting to learn to use monad transformers when I came across this bug, the following is the contents of StateAccum.hs

import Control.Monad
import Control.Monad.State
import Control.Monad.List

sumUp :: [Int] -> State Int [()]
sumUp = sequence . map (modify . (+))

type StateWithList = ListT (State Int)

sumUp' xs = do x <- xs
               lift (modify (+x))
               return (lift get)


sumThreeLists :: [Int] -> [Int] -> [Int] -> Int
sumThreeLists xs ys zs = execState (sumUp xs >> sumUp ys >> sumUp zs) 0

main = do print $ execState (sumUp [1,2,3]) 0
          print $ sumThreeLists [1..10] [1..10] [1..10]

This is a transcript of the ghci session that causes the panic:

% ghci StateAccum.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( StateAccum.hs, interpreted )
Ok, modules loaded: Main.
*Main> sumUp' [return 1, return 2]
ghc-6.6.1: panic! (the 'impossible' happened)
  (GHC version 6.6.1 for powerpc-apple-darwin):
        nameModule it{v a1es}

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

*Main> 

I'm using the binary ghc package for Mac OS PPC provided on the ghc site. The output for uname -a on my machine is

Darwin Logan-Capaldos-Computer.local 8.9.0 Darwin Kernel Version 8.9.0: Thu Feb 22 20:54:07 PST 2007; root:xnu-792.17.14~1/RELEASE_PPC Power Macintosh powerpc

Running with ghci -v, this is the output

% ghci -v StateAccum.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Using package config file: /usr/local/lib/ghc-6.6.1/package.conf
wired-in package base mapped to base-2.1.1
wired-in package rts mapped to rts-1.0
wired-in package haskell98 mapped to haskell98-1.0
wired-in package template-haskell mapped to template-haskell-2.1
Hsc static flags: -static
Loading package base ... linking ... done.
wired-in package base mapped to base-2.1.1
wired-in package rts mapped to rts-1.0
wired-in package haskell98 mapped to haskell98-1.0
wired-in package template-haskell mapped to template-haskell-2.1
*** Parser:
*** Desugar:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
*** Parser:
*** Desugar:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
wired-in package base mapped to base-2.1.1
wired-in package rts mapped to rts-1.0
wired-in package haskell98 mapped to haskell98-1.0
wired-in package template-haskell mapped to template-haskell-2.1
*** Chasing dependencies:
Stable obj: []
Stable BCO: []
unload: retaining objs []
unload: retaining bcos []
Upsweep completely successful.
*** Deleting temp files:
Deleting: 
*** Chasing dependencies:
Stable obj: []
Stable BCO: []
unload: retaining objs []
unload: retaining bcos []
compile: input file StateAccum.hs
*** Checking old interface for main:Main:
[1 of 1] Compiling Main             ( StateAccum.hs, interpreted )
*** Parser:
*** Renamer/typechecker:
*** Desugar:
    Result size = 244
*** Simplify:
    Result size = 292
    Result size = 263
    Result size = 263
*** Tidy Core:
    Result size = 263
*** CorePrep:
    Result size = 331
*** ByteCodeGen:
*** Deleting temp files:
Deleting: 
Upsweep completely successful.
*** Deleting temp files:
Deleting: 
Ok, modules loaded: Main.
*Main> sumUp' [return 1, return 2]
*** Parser:
*** Desugar:
*** Simplify:
*** CorePrep:
*** ByteCodeGen:
ghc-6.6.1: panic! (the 'impossible' happened)
  (GHC version 6.6.1 for powerpc-apple-darwin):
        nameModule it{v a1es}

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

*Main> 
Trac metadata
Trac field Value
Version 6.6.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information