Ticket #3590: crashTest.hs

File crashTest.hs, 953 bytes (added by yairchu, 5 years ago)

the program causing ghc panic

Line 
1-- Uses the "List" package
2import Control.Category (Category(..))
3import Control.Monad (mzero)
4import Control.Monad.ListT (ListT)
5import Control.Monad.Reader ()
6import Control.Monad.Reader.Class (MonadReader(..))
7import Data.List.Class (List(..), ListItem(..), cons)
8import Prelude hiding ((.))
9
10newtype StreamProc input output = StreamProc
11  { runStreamProc :: ListT ((->) input) output
12  }
13
14outStreamProc2
15  :: (StreamProc i0 o0 -> StreamProc i1 o1 -> StreamProc i2 o2)
16  -> ListT ((->) i0) o0 -> ListT ((->) i1) o1 -> ListT ((->) i2) o2
17outStreamProc2 f x = runStreamProc . f (StreamProc x) . StreamProc
18
19instance Category StreamProc where
20  id = StreamProc ask
21  StreamProc xx . StreamProc yy =
22    StreamProc . joinL $ f . runList yy
23    where
24      f Nil = mzero
25      f (Cons y ys) =
26        case runList xx y of
27          Nil -> mzero
28          Cons x xs ->
29            cons x $ outStreamProc2 (.) xs ys
30
31main :: IO ()
32main = putStrLn "cheers"
33