[project @ 1997-05-26 05:58:06 by sof]
authorsof <unknown>
Mon, 26 May 1997 06:03:10 +0000 (06:03 +0000)
committersof <unknown>
Mon, 26 May 1997 06:03:10 +0000 (06:03 +0000)
Updated for 2.03

84 files changed:
ghc/compiler/tests/ccall/Makefile
ghc/compiler/tests/ccall/cc001.hs
ghc/compiler/tests/ccall/cc001.stderr
ghc/compiler/tests/ccall/cc002.hs
ghc/compiler/tests/ccall/cc002.stderr
ghc/compiler/tests/ccall/cc003.hs
ghc/compiler/tests/ccall/cc003.stderr
ghc/compiler/tests/ccall/cc004.hs
ghc/compiler/tests/ccall/cc004.stderr
ghc/compiler/tests/ccall/cc005.hs
ghc/compiler/tests/ccall/cc005.stderr
ghc/compiler/tests/ccall/cc006.hs
ghc/compiler/tests/ccall/cc006.stderr
ghc/compiler/tests/ccall/cc007.hs
ghc/compiler/tests/ccall/cc007.stderr
ghc/compiler/tests/deSugar/Makefile
ghc/compiler/tests/deSugar/ds-wildcard.stderr
ghc/compiler/tests/deSugar/ds001.stderr
ghc/compiler/tests/deSugar/ds002.stderr
ghc/compiler/tests/deSugar/ds003.stderr
ghc/compiler/tests/deSugar/ds004.stderr
ghc/compiler/tests/deSugar/ds005.stderr
ghc/compiler/tests/deSugar/ds006.stderr
ghc/compiler/tests/deSugar/ds007.stderr
ghc/compiler/tests/deSugar/ds008.stderr
ghc/compiler/tests/deSugar/ds009.stderr
ghc/compiler/tests/deSugar/ds010.stderr
ghc/compiler/tests/deSugar/ds011.stderr
ghc/compiler/tests/deSugar/ds012.stderr
ghc/compiler/tests/deSugar/ds013.stderr
ghc/compiler/tests/deSugar/ds014.stderr
ghc/compiler/tests/deSugar/ds014a.stderr
ghc/compiler/tests/deSugar/ds015.stderr
ghc/compiler/tests/deSugar/ds016.stderr
ghc/compiler/tests/deSugar/ds017.stderr
ghc/compiler/tests/deSugar/ds018.stderr
ghc/compiler/tests/deSugar/ds019.stderr
ghc/compiler/tests/deSugar/ds020.stderr
ghc/compiler/tests/deSugar/ds021.stderr
ghc/compiler/tests/deSugar/ds022.stderr
ghc/compiler/tests/deSugar/ds023.stderr
ghc/compiler/tests/deSugar/ds024.stderr
ghc/compiler/tests/deSugar/ds025.stderr
ghc/compiler/tests/deSugar/ds026.stderr
ghc/compiler/tests/deSugar/ds027.stderr
ghc/compiler/tests/deSugar/ds028.stderr
ghc/compiler/tests/deSugar/ds029.stderr
ghc/compiler/tests/deSugar/ds030.stderr
ghc/compiler/tests/deSugar/ds031.stderr
ghc/compiler/tests/deSugar/ds032.stderr
ghc/compiler/tests/deSugar/ds033.stderr
ghc/compiler/tests/deSugar/ds034.stderr
ghc/compiler/tests/deSugar/ds035.stderr
ghc/compiler/tests/deSugar/ds036.stderr
ghc/compiler/tests/deSugar/ds037.stderr
ghc/compiler/tests/deSugar/ds038.stderr
ghc/compiler/tests/deSugar/ds039.stderr
ghc/compiler/tests/deSugar/ds040.stderr
ghc/compiler/tests/deriving/Makefile
ghc/compiler/tests/deriving/drv001.stderr
ghc/compiler/tests/deriving/drv002.stderr
ghc/compiler/tests/deriving/drv003.stderr
ghc/compiler/tests/deriving/drv004.stderr
ghc/compiler/tests/deriving/drv005.stderr
ghc/compiler/tests/deriving/drv006.hs
ghc/compiler/tests/deriving/drv006.stderr
ghc/compiler/tests/deriving/drv007.stderr
ghc/compiler/tests/printing/Makefile
ghc/compiler/tests/printing/Print001.hs
ghc/compiler/tests/printing/Print001.stderr
ghc/compiler/tests/printing/Print002.stderr
ghc/compiler/tests/printing/Print003.stderr
ghc/compiler/tests/printing/Print004.hs
ghc/compiler/tests/printing/Print004.stderr
ghc/compiler/tests/reader/Makefile
ghc/compiler/tests/reader/expr001.stderr
ghc/compiler/tests/reader/read001.hs
ghc/compiler/tests/reader/read001.stderr
ghc/compiler/tests/reader/read002.hs
ghc/compiler/tests/reader/read002.stderr
ghc/compiler/tests/reader/read003.hs
ghc/compiler/tests/reader/read003.stderr
ghc/compiler/tests/reader/read004.hs
ghc/compiler/tests/reader/read004.stderr

index e9fde1b..a02df9b 100644 (file)
@@ -1,18 +1,32 @@
-TOP = ../../../..
-GhcRunTestRules = YES
-# These options apply to all tests
-RUNSTDTEST_OPTS = -fglasgow-exts -dcore-lint
-include $(TOP)/ghc/mk/ghc.mk
+TOP = ../../..
+include $(TOP)/mk/boilerplate.mk
 
-runtests :: $(patsubst %.hs, %.runtest, $(wildcard *.hs))
+HS_SRCS = $(wildcard *.hs)
+
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+HC_OPTS += -dcore-lint -fglasgow-exts
+
+cc002_RUNTEST_OPTS = -x 1
+cc004_RUNTEST_OPTS = -x 1
+cc007_RUNTEST_OPTS = -x 1
 
 # Note that these tests are still in a state of flux... don't believe errors
 # they report. In fact, these aren't really very good tests at all...
 
-cc001_flags = -noC -ddump-tc -ddump-ds 
-cc002_flags = -noC -ddump-tc -ddump-ds 
-cc003_flags = -noC -ddump-tc -ddump-ds -x1
-cc004_flags = -noC -ddump-tc -ddump-ds 
-cc005_flags = -via-C -ddump-stg -ddump-flatC
-cc006_flags = -via-C -ddump-stg -ddump-flatC
-cc007_flags = -via-C -ddump-stg -ddump-flatC
+cc001_HC_OPTS = -noC -ddump-tc -ddump-ds 
+cc002_HC_OPTS = -noC -ddump-tc -ddump-ds 
+cc003_HC_OPTS = -noC -ddump-tc -ddump-ds
+cc004_HC_OPTS = -noC -ddump-tc -ddump-ds 
+cc005_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
+cc006_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
+cc007_HC_OPTS = -fvia-C -ddump-stg -ddump-flatC
+
+
+%.o : %.hs
+
+%.o : %.hs
+       $(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
+
+all :: $(HS_OBJS)
+
+include $(TOP)/mk/target.mk
index c26a53f..8aeca95 100644 (file)
@@ -2,7 +2,7 @@
 
 module Test where
 
-import PreludeGlaST
+import GlaExts
 
 -- simple functions
 
index ab13745..952647f 100644 (file)
+
+
+================================================================================
 Typechecked:
-lit.t444 = D# 2.0000000000000000##
-lit.t443 = F# 1.0000000000000000#
-AbsBinds [] [] [(a.t439, Test.a{-r79-})]
-    {- nonrec -}
-    a.t439 :: IoWorld -> (Int, IoWorld)
-    a.t439
-       = ccall  a [Int] 
 {- nonrec -}
 {- nonrec -}
-AbsBinds [] [] [(b.t440, Test.b{-r80-})]
-    {- nonrec -}
-    b.t440 :: Int -> IoWorld -> (Int, IoWorld)
-    b.t440
-       x.r212 = ccall  b [Int, Int] x.r212
 {- nonrec -}
+d.Fractional_a16j =
+    PrelNum.$d23{-rtW,p-}
+fromRational_a16o =
+    PrelNum.fromRational{-8T,p-}
+       PrelBase.Float{-3c,p-}
+       d.Fractional_a16j
+lit_a16r =
+    fromRational_a16o
+       1.0000000000000000
+d.Fractional_a16n =
+    PrelNum.$d14{-rtM,p-}
+fromRational_a16q =
+    PrelNum.fromRational{-8T,p-}
+       PrelBase.Double{-3a,p-}
+       d.Fractional_a16n
+lit_a16p =
+    fromRational_a16q
+       2.0000000000000000
 {- nonrec -}
-AbsBinds [] [] [(c.t441, Test.c{-r81-})]
-    {- nonrec -}
-    c.t441 :: Int -> Char -> Float -> Double -> IoWorld -> (Float, IoWorld)
-    c.t441
-       x1.r213 x2.r214 x3.r215 x4.r216
-               = ccall  c [Float, Int, Char, Float, Double]
-                     x1.r213 x2.r214 x3.r215 x4.r216
+AbsBinds [] [] [([], c{-r5,x-}, c_a15h)]
+    c_a15h
+       x1_r4l x2_r4n x3_r4p x4_r4r
+               =   STBase.ST{-5G,p-}{i}
+                       [GHC.RealWorld{-3s,p-}, PrelBase.Float{-3c,p-}]
+                       _ccall_ c
+                           x1_r4l x2_r4n x3_r4p x4_r4r
 {- nonrec -}
 {- nonrec -}
-AbsBinds [] [] [(d.t442, Test.d{-r82-})]
-    {- nonrec -}
-    d.t442 :: IoWorld -> (Float, IoWorld)
-    d.t442
-       = (thenIO{-r102-} [Int, Float])
-             Test.a{-r79-}
-             (\ x.r217 -> (thenIO{-r102-} [Int, Float])
-                              (Test.b{-r80-} x.r217)
-                              (\ y.r218 -> Test.c{-r81-}
-                                               y.r218 'f' lit.t443 lit.t444))
+AbsBinds [] [] [([], b{-r3,x-}, b_a15F)]
+    b_a15F
+       x_r4j   =   STBase.ST{-5G,p-}{i}
+                       [GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
+                       _ccall_ b
+                           x_r4j
 {- nonrec -}
 {- nonrec -}
+AbsBinds [] [] [([], a{-r1,x-}, a_a15R)]
+    a_a15R
+       =   STBase.ST{-5G,p-}{i}
+               [GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
+               _ccall_ a
+{- nonrec -}
+{- nonrec -}
+AbsBinds [] [] [([], d{-r7,x-}, d_a15Y)]
+    d_a15Y
+       =   STBase.thenPrimIO{-r4w,p-}
+               [PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-}]
+               a{-r1,x-}
+               (\ x_r4t   ->  STBase.thenPrimIO{-r4w,p-}
+                                  [PrelBase.Int{-3g,p-}, PrelBase.Float{-3c,p-}]
+                                  (b{-r3,x-}
+                                       x_r4t)
+                                  (\ y_r4v   ->  c{-r5,x-}
+                                                     y_r4v 'f' lit_a16r lit_a16p))
+{- nonrec -}
+
+
+================================================================================
 Desugared:
-{- plain CoRec -}
-lit.t444 :: Double
-_NI_
-lit.t444 = (\ tpl.d0# -> D#! tpl.d0#) 2.0000000000000000##
-lit.t443 :: Float
-_NI_
-lit.t443 = (\ tpl.d1# -> F#! tpl.d1#) 1.0000000000000000#
-Test.a{-r79-} :: IoWorld -> (Int, IoWorld)
-_NI_
-Test.a{-r79-} =
-    \ ds.d2 ->
-       case
-           (case
-                (case ds.d2 of {
-                   IoWorld ds.d3# -> ds.d3#
-                 })
-            of {
-              a.d8# -> ( _CCALL_ a [] Int# )! a.d8#
-            })
-       of {
-         IntPrimAndIoWorld ds.d4#  ds.d5# ->
-             let {
-               a.d6 :: Int
-               _NI_
-               a.d6 = I#! ds.d4# } in
-             let {
-               a.d7 :: IoWorld
-               _NI_
-               a.d7 = IoWorld! ds.d5#
-             } in  Tup2! Int IoWorld a.d6 a.d7
-       }
-Test.b{-r80-} :: Int -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.b{-r80-} =
-    \ x.r212  ds.d9 ->
-       case
-           (case
-                (case ds.d9 of {
-                   IoWorld ds.d10# -> ds.d10#
-                 })
-            of {
-              a.d16# ->
-                  case
-                      (case x.r212 of {
-                         I# ds.d11# -> ds.d11#
-                       })
-                  of {
-                    a.d17# -> ( _CCALL_ b [Int#] Int# )! a.d16# a.d17#
-                  }
-            })
-       of {
-         IntPrimAndIoWorld ds.d12#  ds.d13# ->
-             let {
-               a.d14 :: Int
-               _NI_
-               a.d14 = I#! ds.d12# } in
-             let {
-               a.d15 :: IoWorld
-               _NI_
-               a.d15 = IoWorld! ds.d13#
-             } in  Tup2! Int IoWorld a.d14 a.d15
-       }
-Test.c{-r81-} :: Int -> Char -> Float -> Double -> IoWorld -> (Float, IoWorld)
-_NI_
-Test.c{-r81-} =
-    \ x1.r213  x2.r214  x3.r215  x4.r216  ds.d18 ->
-       case
-           (case
-                (case ds.d18 of {
-                   IoWorld ds.d19# -> ds.d19#
-                 })
-            of {
-              a.d28# ->
-                  case
-                      (case x1.r213 of {
-                         I# ds.d20# -> ds.d20#
-                       })
-                  of {
-                    a.d29# ->
-                        case
-                            (case x2.r214 of {
-                               C# ds.d21# -> ds.d21#
-                             })
-                        of {
-                          a.d30# ->
-                              case
-                                  (case x3.r215 of {
-                                     F# ds.d22# -> ds.d22#
-                                   })
-                              of {
-                                a.d31# ->
-                                    case
-                                        (case x4.r216 of {
-                                           D# ds.d23# -> ds.d23#
-                                         })
-                                    of {
-                                      a.d32# ->
-                                          ( _CCALL_ c [Int#,
-                                                       Char#,
-                                                       Float#,
-                                                       Double#] Float# )!
-                                              a.d28#
-                                              a.d29#
-                                              a.d30#
-                                              a.d31#
-                                              a.d32#
-                                    }
-                              }
-                        }
-                  }
-            })
-       of {
-         FloatPrimAndIoWorld ds.d24#  ds.d25# ->
+Rec {
+d.Fractional_a16j  :: 
+    {PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
+{-# L #-}
+d.Fractional_a16j =
+    PrelNum.$d23{-rtW,p-}
+fromRational_a16o  :: 
+    PrelNum.Rational{-3r,p-} -> PrelBase.Float{-3c,p-}
+{-# L #-}
+fromRational_a16o =
+    PrelNum.fromRational{-8T,p-}
+       _@_ PrelBase.Float{-3c,p-} d.Fractional_a16j
+lit_a16r  :: 
+    PrelBase.Float{-3c,p-}
+{-# L #-}
+lit_a16r =
+    fromRational_a16o
+       _rational_  1 1
+d.Fractional_a16n  :: 
+    {PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,p-}}
+{-# L #-}
+d.Fractional_a16n =
+    PrelNum.$d14{-rtM,p-}
+fromRational_a16q  :: 
+    PrelNum.Rational{-3r,p-} -> PrelBase.Double{-3a,p-}
+{-# L #-}
+fromRational_a16q =
+    PrelNum.fromRational{-8T,p-}
+       _@_ PrelBase.Double{-3a,p-} d.Fractional_a16n
+lit_a16p  :: 
+    PrelBase.Double{-3a,p-}
+{-# L #-}
+lit_a16p =
+    fromRational_a16q
+       _rational_  2 1
+c_a15h  :: 
+    PrelBase.Int{-3g,p-}
+    -> PrelBase.Char{-38,p-}
+    -> PrelBase.Float{-3c,p-}
+    -> PrelBase.Double{-3a,p-}
+    -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+{-# L #-}
+c_a15h =
+    \ x1_r4l  :: 
+         PrelBase.Int{-3g,p-}
+      {-# L #-}
+      x1_r4l x2_r4n  :: 
+                PrelBase.Char{-38,p-}
+            {-# L #-}
+            x2_r4n x3_r4p  :: 
+                       PrelBase.Float{-3c,p-}
+                   {-# L #-}
+                   x3_r4p x4_r4r  :: 
+                              PrelBase.Double{-3a,p-}
+                          {-# L #-}
+                          x4_r4r ->
+       let {
+         ds_d1et  :: 
+             STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+             -> (PrelBase.Float{-3c,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+         {-# L #-}
+         ds_d1et =
+             \ ds_d1ez  :: 
+                   STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+               {-# L #-}
+               ds_d1ez ->
+                 case ds_d1ez of { STBase.S#{-5D,p-}{i} ds_d1eI  ->
+                 case x1_r4l of { PrelBase.I#{-5b,p-}{i} ds_d1eR  ->
+                 case x2_r4n of { PrelBase.C#{-54,p-}{i} ds_d1f0  ->
+                 case x3_r4p of { PrelBase.F#{-59,p-}{i} ds_d1f9  ->
+                 case x4_r4r of { PrelBase.D#{-56,p-}{i} ds_d1fw  ->
+                 case
+                     _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]!
+                         ds_d1eI ds_d1eR ds_d1f0 ds_d1f9 ds_d1fw
+                 of {
+                 STBase.StateAndFloat#{-5u,p-}{i} ds_d1fZ ds_d1fX  ->
+                 let {
+                   ds_d1fO  :: 
+                       PrelBase.Float{-3c,p-}
+                   {-# L #-}
+                   ds_d1fO =
+                       PrelBase.F#{-59,p-}{i}
+                           {ds_d1fX} } in
+                 let {
+                   ds_d1fS  :: 
+                       STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                   {-# L #-}
+                   ds_d1fS =
+                       STBase.S#{-5D,p-}{i}
+                           {_@_ GHC.RealWorld{-3s,p-} ds_d1fZ}
+                 } in 
+                   PrelTup.(,){-62,p-}{i}
+                       {_@_ PrelBase.Float{-3c,p-}
+                        _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+                        ds_d1fO
+                        ds_d1fS};};};};};};}
+       } in 
+         STBase.ST{-5G,p-}{i}
+             _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Float{-3c,p-} ds_d1et
+c{-r5,x-}  :: 
+    PrelBase.Int{-3g,p-}
+    -> PrelBase.Char{-38,p-}
+    -> PrelBase.Float{-3c,p-}
+    -> PrelBase.Double{-3a,p-}
+    -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+{-# L #-}
+c{-r5,x-} =
+    c_a15h
+b_a15F  :: 
+    PrelBase.Int{-3g,p-} -> STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+b_a15F =
+    \ x_r4j  :: 
+         PrelBase.Int{-3g,p-}
+      {-# L #-}
+      x_r4j ->
+       let {
+         ds_d1gj  :: 
+             STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+             -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+         {-# L #-}
+         ds_d1gj =
+             \ ds_d1gp  :: 
+                   STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+               {-# L #-}
+               ds_d1gp ->
+                 case ds_d1gp of { STBase.S#{-5D,p-}{i} ds_d1gy  ->
+                 case x_r4j of { PrelBase.I#{-5b,p-}{i} ds_d1gM  ->
+                 case
+                     _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]!
+                         ds_d1gy ds_d1gM
+                 of {
+                 STBase.StateAndInt#{-5v,p-}{i} ds_d1hf ds_d1hd  ->
+                 let {
+                   ds_d1h4  :: 
+                       PrelBase.Int{-3g,p-}
+                   {-# L #-}
+                   ds_d1h4 =
+                       PrelBase.I#{-5b,p-}{i}
+                           {ds_d1hd} } in
+                 let {
+                   ds_d1h8  :: 
+                       STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                   {-# L #-}
+                   ds_d1h8 =
+                       STBase.S#{-5D,p-}{i}
+                           {_@_ GHC.RealWorld{-3s,p-} ds_d1hf}
+                 } in 
+                   PrelTup.(,){-62,p-}{i}
+                       {_@_ PrelBase.Int{-3g,p-}
+                        _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+                        ds_d1h4
+                        ds_d1h8};};};}
+       } in 
+         STBase.ST{-5G,p-}{i}
+             _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d1gj
+b{-r3,x-}  :: 
+    PrelBase.Int{-3g,p-} -> STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+b{-r3,x-} =
+    b_a15F
+a_a15R  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+a_a15R =
+    let {
+      ds_d1hy  :: 
+         STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+         -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+      {-# L #-}
+      ds_d1hy =
+         \ ds_d1hE  :: 
+               STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+           {-# L #-}
+           ds_d1hE ->
+             case ds_d1hE of { STBase.S#{-5D,p-}{i} ds_d1hP  ->
+             case
+                 _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
+                     ds_d1hP
+             of {
+             STBase.StateAndInt#{-5v,p-}{i} ds_d1ii ds_d1ig  ->
              let {
-               a.d26 :: Float
-               _NI_
-               a.d26 = F#! ds.d24# } in
+               ds_d1i7  :: 
+                   PrelBase.Int{-3g,p-}
+               {-# L #-}
+               ds_d1i7 =
+                   PrelBase.I#{-5b,p-}{i}
+                       {ds_d1ig} } in
              let {
-               a.d27 :: IoWorld
-               _NI_
-               a.d27 = IoWorld! ds.d25#
-             } in  Tup2! Float IoWorld a.d26 a.d27
-       }
-Test.d{-r82-} :: IoWorld -> (Float, IoWorld)
-_NI_
-Test.d{-r82-} =
+               ds_d1ib  :: 
+                   STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+               {-# L #-}
+               ds_d1ib =
+                   STBase.S#{-5D,p-}{i}
+                       {_@_ GHC.RealWorld{-3s,p-} ds_d1ii}
+             } in 
+               PrelTup.(,){-62,p-}{i}
+                   {_@_ PrelBase.Int{-3g,p-}
+                    _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+                    ds_d1i7
+                    ds_d1ib};};}
+    } in 
+      STBase.ST{-5G,p-}{i}
+         _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d1hy
+a{-r1,x-}  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+a{-r1,x-} =
+    a_a15R
+d_a15Y  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+{-# L #-}
+d_a15Y =
     let {
-      a.d36 :: Int -> IoWorld -> (Float, IoWorld)
-      _NI_
-      a.d36 =
-         \ x.r217 ->
+      ds_d1iE  :: 
+         PrelBase.Int{-3g,p-}
+         -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+      {-# L #-}
+      ds_d1iE =
+         \ x_r4t  :: 
+               PrelBase.Int{-3g,p-}
+           {-# L #-}
+           x_r4t ->
+             let {
+               ds_d1iT  :: 
+                   STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+               {-# L #-}
+               ds_d1iT =
+                   b{-r3,x-}
+                       x_r4t } in
              let {
-               a.d35 :: Int -> IoWorld -> (Float, IoWorld)
-               _NI_
-               a.d35 =
-                   \ y.r218 ->
-                       (let {
-                          a.d33 :: Char
-                          _NI_
-                          a.d33 = C#! 'f'#
-                        } in  Test.c{-r81-} y.r218 a.d33) lit.t443 lit.t444
+               ds_d1iX  :: 
+                   PrelBase.Int{-3g,p-}
+                   -> STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+               {-# L #-}
+               ds_d1iX =
+                   \ y_r4v  :: 
+                         PrelBase.Int{-3g,p-}
+                     {-# L #-}
+                     y_r4v ->
+                       let {
+                         ds_d1jf  :: 
+                             PrelBase.Char{-38,p-}
+                         {-# L #-}
+                         ds_d1jf =
+                             PrelBase.C#{-54,p-}{i}
+                                 {'f'}
+                       } in 
+                         c{-r5,x-}
+                             y_r4v ds_d1jf lit_a16r lit_a16p
              } in 
-               (let {
-                  a.d34 :: IoWorld -> (Int, IoWorld)
-                  _NI_
-                  a.d34 = Test.b{-r80-} x.r217
-                } in  ((thenIO{-r102-} Int) Float) a.d34) a.d35
-    } in  ((thenIO{-r102-} Int) Float) Test.a{-r79-} a.d36
-{- end plain CoRec -}
+               STBase.thenPrimIO{-r4w,p-}
+                   _@_ PrelBase.Int{-3g,p-} _@_ PrelBase.Float{-3c,p-} ds_d1iT ds_d1iX
+    } in 
+      STBase.thenPrimIO{-r4w,p-}
+         _@_ PrelBase.Int{-3g,p-}
+         _@_ PrelBase.Float{-3c,p-}
+         a{-r1,x-}
+         ds_d1iE
+d{-r7,x-}  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Float{-3c,p-}
+{-# L #-}
+d{-r7,x-} =
+    d_a15Y
+end Rec }
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
index 95a061b..c970d88 100644 (file)
@@ -2,14 +2,15 @@
 
 module Test where
 
-import PreludeGlaST
+import GlaExts
+import Foreign
 
 -- Test returning results
 
 a :: PrimIO ForeignObj
 a = _ccall_ a
 
-b :: PrimIO StablePtr
+b :: PrimIO (StablePtr Double)
 b = _ccall_ b
 
 -- Test taking arguments
@@ -17,5 +18,5 @@ b = _ccall_ b
 c :: ForeignObj -> PrimIO Int
 c x = _ccall_ c x
 
-d :: StablePtr -> PrimIO Int
+d :: StablePtr Int -> PrimIO Int
 d x = _ccall_ d x
index 2f097cf..4d70998 100644 (file)
@@ -1,140 +1,9 @@
-Typechecked:
-AbsBinds [] [] [(a.t439, Test.a{-r79-})]
-    {- nonrec -}
-    a.t439 :: IoWorld -> (CHeapPtr, IoWorld)
-    a.t439
-       = ccall  a [CHeapPtr] 
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(b.t440, Test.b{-r80-})]
-    {- nonrec -}
-    b.t440 :: IoWorld -> (StablePtr, IoWorld)
-    b.t440
-       = ccall  b [StablePtr] 
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(c.t441, Test.c{-r81-})]
-    {- nonrec -}
-    c.t441 :: CHeapPtr -> IoWorld -> (Int, IoWorld)
-    c.t441
-       x.r211 = ccall  c [Int, CHeapPtr] x.r211
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(d.t442, Test.d{-r82-})]
-    {- nonrec -}
-    d.t442 :: StablePtr -> IoWorld -> (Int, IoWorld)
-    d.t442
-       x.r212 = ccall  d [Int, StablePtr] x.r212
-{- nonrec -}
-{- nonrec -}
-Desugared:
-Test.a{-r79-} :: IoWorld -> (CHeapPtr, IoWorld)
-_NI_
-Test.a{-r79-} =
-    \ ds.d0 ->
-       case
-           (case
-                (case ds.d0 of {
-                   IoWorld ds.d1# -> ds.d1#
-                 })
-            of {
-              a.d6# -> ( _CCALL_ a [] CHeapPtr# )! a.d6#
-            })
-       of {
-         CHPPrimAndIoWorld ds.d2#  ds.d3# ->
-             let {
-               a.d4 :: CHeapPtr
-               _NI_
-               a.d4 = CHP#! ds.d2# } in
-             let {
-               a.d5 :: IoWorld
-               _NI_
-               a.d5 = IoWorld! ds.d3#
-             } in  Tup2! CHeapPtr IoWorld a.d4 a.d5
-       }
-Test.b{-r80-} :: IoWorld -> (StablePtr, IoWorld)
-_NI_
-Test.b{-r80-} =
-    \ ds.d7 ->
-       case
-           (case
-                (case ds.d7 of {
-                   IoWorld ds.d8# -> ds.d8#
-                 })
-            of {
-              a.d13# -> ( _CCALL_ b [] StablePtr# )! a.d13#
-            })
-       of {
-         SPPrimAndIoWorld ds.d9#  ds.d10# ->
-             let {
-               a.d11 :: StablePtr
-               _NI_
-               a.d11 = StablePtr#! ds.d9# } in
-             let {
-               a.d12 :: IoWorld
-               _NI_
-               a.d12 = IoWorld! ds.d10#
-             } in  Tup2! StablePtr IoWorld a.d11 a.d12
-       }
-Test.c{-r81-} :: CHeapPtr -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.c{-r81-} =
-    \ x.r211  ds.d14 ->
-       case
-           (case
-                (case ds.d14 of {
-                   IoWorld ds.d15# -> ds.d15#
-                 })
-            of {
-              a.d21# ->
-                  case
-                      (case x.r211 of {
-                         CHP# ds.d16# -> ds.d16#
-                       })
-                  of {
-                    a.d22# -> ( _CCALL_ c [CHeapPtr#] Int# )! a.d21# a.d22#
-                  }
-            })
-       of {
-         IntPrimAndIoWorld ds.d17#  ds.d18# ->
-             let {
-               a.d19 :: Int
-               _NI_
-               a.d19 = I#! ds.d17# } in
-             let {
-               a.d20 :: IoWorld
-               _NI_
-               a.d20 = IoWorld! ds.d18#
-             } in  Tup2! Int IoWorld a.d19 a.d20
-       }
-Test.d{-r82-} :: StablePtr -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.d{-r82-} =
-    \ x.r212  ds.d23 ->
-       case
-           (case
-                (case ds.d23 of {
-                   IoWorld ds.d24# -> ds.d24#
-                 })
-            of {
-              a.d30# ->
-                  case
-                      (case x.r212 of {
-                         StablePtr# ds.d25# -> ds.d25#
-                       })
-                  of {
-                    a.d31# -> ( _CCALL_ d [StablePtr#] Int# )! a.d30# a.d31#
-                  }
-            })
-       of {
-         IntPrimAndIoWorld ds.d26#  ds.d27# ->
-             let {
-               a.d28 :: Int
-               _NI_
-               a.d28 = I#! ds.d26# } in
-             let {
-               a.d29 :: IoWorld
-               _NI_
-               a.d29 = IoWorld! ds.d27#
-             } in  Tup2! Int IoWorld a.d28 a.d29
-       }
+cc002.hs:11: No instance for:
+                `Foreign.CReturnable Foreign.ForeignObj'
+    cc002.hs:11:
+       in the result of the _ccall_ to a
+    When checking signature(s) for: `a'
+
+
+Compilation had errors
index 474a4b3..b8c8d35 100644 (file)
@@ -1,8 +1,9 @@
 --!!! cc003 -- ccall with unresolved polymorphism (should fail)
+--!!! not anymore (as of 0.29, result type will default to ())
 module Test where
 
-import PreludeGlaST
+import GlaExts
 
 fubar :: PrimIO Int
-fubar = ccall f `seqPrimIO` ccall b
+fubar = _ccall_ f `seqPrimIO` _ccall_ b
                     --^ result type of f "lost" (never gets generalised)
index 4b2772f..1f8dfdc 100644 (file)
+
+
+================================================================================
 Typechecked:
-AbsBinds [] [] [(fubar.t439, Main.fubar{-r79-})]
-    {- nonrec -}
-    fubar.t439 :: IoWorld -> (Int, IoWorld)
-    fubar.t439
-       = (thenIO_{-r99-} [bpv83, Int]) (ccall  f [bpv83] ) (ccall  b [Int] )
 {- nonrec -}
 {- nonrec -}
-Desugared:
+AbsBinds [] [] [([], fubar{-r1,x-}, fubar_aZa)]
+    fubar_aZa
+       =   STBase.seqPrimIO{-r46,p-}
+               [PrelBase.(){-40,p-}, PrelBase.Int{-3g,p-}]
+               (STBase.ST{-5G,p-}{i}
+                    [GHC.RealWorld{-3s,p-}, PrelBase.(){-40,p-}]
+                    _ccall_ f)
+               (STBase.ST{-5G,p-}{i}
+                    [GHC.RealWorld{-3s,p-}, PrelBase.Int{-3g,p-}]
+                    _ccall_ b)
+{- nonrec -}
 
-Fail: panic! (the `impossible' happened):
-       getBoxedPrimTypeInfo: bpv83
 
-Please report it as a compiler bug to glasgow-haskell-bugs@dcs.glasgow.ac.uk.
+================================================================================
+Desugared:
+fubar_aZa  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+fubar_aZa =
+    let { ds_d110  :: 
+             STBase.ST{-3O,p-} GHC.RealWorld{-3s,p-} PrelBase.(){-40,p-}
+         {-# L #-}
+         ds_d110 =
+      let {
+       ds_d11g  :: 
+           STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+           -> (PrelBase.(){-40,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+       {-# L #-}
+       ds_d11g =
+           \ ds_d11m  :: 
+                 STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+             {-# L #-}
+             ds_d11m ->
+               case ds_d11m of { STBase.S#{-5D,p-}{i} ds_d11x  ->
+               case
+                   _ccall_ f [(STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
+                       ds_d11x
+               of {
+               STBase.S#{-5D,p-}{i} ds_d11X  ->
+               let {
+                 ds_d11Q  :: 
+                     STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 {-# L #-}
+                 ds_d11Q =
+                     STBase.S#{-5D,p-}{i}
+                         {_@_ GHC.RealWorld{-3s,p-} ds_d11X}
+               } in 
+                 PrelTup.(,){-62,p-}{i}
+                     {_@_ PrelBase.(){-40,p-}
+                      _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+                      PrelBase.(){-60,p-}{i}
+                      ds_d11Q};};}
+      } in 
+       STBase.ST{-5G,p-}{i}
+           _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.(){-40,p-} ds_d11g
+    } in
+    let { ds_d114  :: 
+             STBase.ST{-3O,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
+         {-# L #-}
+         ds_d114 =
+      let {
+       ds_d12a  :: 
+           STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+           -> (PrelBase.Int{-3g,p-}, STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+       {-# L #-}
+       ds_d12a =
+           \ ds_d12g  :: 
+                 STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+             {-# L #-}
+             ds_d12g ->
+               case ds_d12g of { STBase.S#{-5D,p-}{i} ds_d12r  ->
+               case
+                   _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]!
+                       ds_d12r
+               of {
+               STBase.StateAndInt#{-5v,p-}{i} ds_d12U ds_d12S  ->
+               let {
+                 ds_d12J  :: 
+                     PrelBase.Int{-3g,p-}
+                 {-# L #-}
+                 ds_d12J =
+                     PrelBase.I#{-5b,p-}{i}
+                         {ds_d12S} } in
+               let {
+                 ds_d12N  :: 
+                     STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 {-# L #-}
+                 ds_d12N =
+                     STBase.S#{-5D,p-}{i}
+                         {_@_ GHC.RealWorld{-3s,p-} ds_d12U}
+               } in 
+                 PrelTup.(,){-62,p-}{i}
+                     {_@_ PrelBase.Int{-3g,p-}
+                      _@_ (STBase.State{-3M,p-} GHC.RealWorld{-3s,p-})
+                      ds_d12J
+                      ds_d12N};};}
+      } in 
+       STBase.ST{-5G,p-}{i}
+           _@_ GHC.RealWorld{-3s,p-} _@_ PrelBase.Int{-3g,p-} ds_d12a
+    } in
+    STBase.seqPrimIO{-r46,p-}
+       _@_ PrelBase.(){-40,p-} _@_ PrelBase.Int{-3g,p-} ds_d110 ds_d114
+fubar{-r1,x-}  :: 
+    STBase.PrimIO{-3P,p-} PrelBase.Int{-3g,p-}
+{-# L #-}
+fubar{-r1,x-} =
+    fubar_aZa
 
+NOTE: Simplifier still going after 4 iterations; bailing out.
index 6dee399..f53c61d 100644 (file)
@@ -1,7 +1,7 @@
 --!!! cc004 -- ccall with synonyms, polymorphic type variables and user type variables.
 module Test where
 
-import PreludeGlaST
+import GlaExts
 
 -- Since I messed up the handling of polymorphism originally, I'll
 -- explicitly test code with UserSysTyVar (ie an explicit polymorphic
@@ -10,16 +10,14 @@ import PreludeGlaST
 foo = _ccall_ f        `thenADR` \ a -> returnPrimIO (a + 1)
  where 
    thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   m `thenADR` k  = \ s -> case m s of
-                         (a,t) -> k a t
+   thenADR = thenPrimIO
 
 -- and with a PolySysTyVar (ie no explicit signature)
 
 bar = _ccall_ f        `thenADR` \ a -> returnPrimIO (a + 1)
  where 
    -- thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   m `thenADR` k  = \ s -> case m s of
-                         (a,t) -> k a t
+   thenADR = thenPrimIO
 
 -- and with a type synonym
 
index e69de29..b8cd850 100644 (file)
@@ -0,0 +1,9 @@
+cc004.hs:2: Cannot generalise these overloadings (in a _ccall_):
+               `Foreign.CReturnable t{-a12p-}'
+cc004.hs:2: Cannot generalise these overloadings (in a _ccall_):
+               `Foreign.CReturnable t{-a138-}'
+
+
+Compilation had errors
index c26a53f..8aeca95 100644 (file)
@@ -2,7 +2,7 @@
 
 module Test where
 
-import PreludeGlaST
+import GlaExts
 
 -- simple functions
 
index ab13745..ed9f6bb 100644 (file)
-Typechecked:
-lit.t444 = D# 2.0000000000000000##
-lit.t443 = F# 1.0000000000000000#
-AbsBinds [] [] [(a.t439, Test.a{-r79-})]
-    {- nonrec -}
-    a.t439 :: IoWorld -> (Int, IoWorld)
-    a.t439
-       = ccall  a [Int] 
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(b.t440, Test.b{-r80-})]
-    {- nonrec -}
-    b.t440 :: Int -> IoWorld -> (Int, IoWorld)
-    b.t440
-       x.r212 = ccall  b [Int, Int] x.r212
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(c.t441, Test.c{-r81-})]
-    {- nonrec -}
-    c.t441 :: Int -> Char -> Float -> Double -> IoWorld -> (Float, IoWorld)
-    c.t441
-       x1.r213 x2.r214 x3.r215 x4.r216
-               = ccall  c [Float, Int, Char, Float, Double]
-                     x1.r213 x2.r214 x3.r215 x4.r216
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(d.t442, Test.d{-r82-})]
-    {- nonrec -}
-    d.t442 :: IoWorld -> (Float, IoWorld)
-    d.t442
-       = (thenIO{-r102-} [Int, Float])
-             Test.a{-r79-}
-             (\ x.r217 -> (thenIO{-r102-} [Int, Float])
-                              (Test.b{-r80-} x.r217)
-                              (\ y.r218 -> Test.c{-r81-}
-                                               y.r218 'f' lit.t443 lit.t444))
-{- nonrec -}
-{- nonrec -}
-Desugared:
-{- plain CoRec -}
-lit.t444 :: Double
-_NI_
-lit.t444 = (\ tpl.d0# -> D#! tpl.d0#) 2.0000000000000000##
-lit.t443 :: Float
-_NI_
-lit.t443 = (\ tpl.d1# -> F#! tpl.d1#) 1.0000000000000000#
-Test.a{-r79-} :: IoWorld -> (Int, IoWorld)
-_NI_
-Test.a{-r79-} =
-    \ ds.d2 ->
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+
+
+================================================================================
+STG syntax:
+nrlit_s25b =
+     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_2{-8e,p-} PrelNum.integer_1{-8d,p-}];
+lit_a19u =
+    (False, True, False, False, True) [] \u []
        case
-           (case
-                (case ds.d2 of {
-                   IoWorld ds.d3# -> ds.d3#
-                 })
-            of {
-              a.d8# -> ( _CCALL_ a [] Int# )! a.d8#
-            })
+           PrelNum.$d14{-rtM,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Double{-3a,p-}}
        of {
-         IntPrimAndIoWorld ds.d4#  ds.d5# ->
-             let {
-               a.d6 :: Int
-               _NI_
-               a.d6 = I#! ds.d4# } in
-             let {
-               a.d7 :: IoWorld
-               _NI_
-               a.d7 = IoWorld! ds.d5#
-             } in  Tup2! Int IoWorld a.d6 a.d7
-       }
-Test.b{-r80-} :: Int -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.b{-r80-} =
-    \ x.r212  ds.d9 ->
+           -- lvs: []; rhs lvs: []; uniq: c2b9
+         PrelTup.(,,,){-64,p-}{i} tpl_s1V1 tpl_s1V2 tpl_s1V3 tpl_s1V0 ->
+             tpl_s1V0
+                 nrlit_s25b;
+       };
+nrlit_s25c =
+     PrelNum.:%{-5l,p-}{i}! [PrelNum.integer_1{-8d,p-} PrelNum.integer_1{-8d,p-}];
+lit_a19w =
+    (False, True, False, False, True) [] \u []
        case
-           (case
-                (case ds.d9 of {
-                   IoWorld ds.d10# -> ds.d10#
-                 })
-            of {
-              a.d16# ->
-                  case
-                      (case x.r212 of {
-                         I# ds.d11# -> ds.d11#
-                       })
-                  of {
-                    a.d17# -> ( _CCALL_ b [Int#] Int# )! a.d16# a.d17#
-                  }
-            })
+           PrelNum.$d23{-rtW,p-} ::{PrelNum.Fractional{-26,p-} PrelBase.Float{-3c,p-}}
        of {
-         IntPrimAndIoWorld ds.d12#  ds.d13# ->
-             let {
-               a.d14 :: Int
-               _NI_
-               a.d14 = I#! ds.d12# } in
-             let {
-               a.d15 :: IoWorld
-               _NI_
-               a.d15 = IoWorld! ds.d13#
-             } in  Tup2! Int IoWorld a.d14 a.d15
+           -- lvs: []; rhs lvs: []; uniq: c2ba
+         PrelTup.(,,,){-64,p-}{i} tpl_s1Vt tpl_s1Vu tpl_s1Vv tpl_s1Vs ->
+             tpl_s1Vs
+                 nrlit_s25c;
+       };
+s_s1MF =
+     [] \r [ds_s1VJ]
+       case ds_s1VJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1VJ]; rhs lvs: []; uniq: c2bb
+         STBase.S#{-5D,p-}{i} ds_s1Wa ->
+             case
+                 _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Wa] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+             of {
+                 -- lvs: [ds_s1Wa]; rhs lvs: []; uniq: c2bc
+               STBase.StateAndInt#{-5v,p-}{i} ds_s1Wk ds_s1W9 ->
+                   let {
+                     ds_s1WA =
+                          PrelBase.I#{-5b,p-}{i}! [ds_s1W9]; } in
+                   let {
+                     ds_s1Wz =
+                          STBase.S#{-5D,p-}{i}! [ds_s1Wk];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1WA ds_s1Wz];
+             };
+       };
+s_s1Xu =
+     [] \r [ds_s1WI]
+       case ds_s1WI ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1WI]; rhs lvs: []; uniq: c2bd
+         STBase.S#{-5D,p-}{i} ds_s1X9 ->
+             case
+                 _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1X9] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+             of {
+                 -- lvs: [ds_s1X9]; rhs lvs: []; uniq: c2be
+               STBase.StateAndInt#{-5v,p-}{i} ds_s1Xj ds_s1X8 ->
+                   let {
+                     ds_s1XP =
+                          PrelBase.I#{-5b,p-}{i}! [ds_s1X8]; } in
+                   let {
+                     ds_s1XO =
+                          STBase.S#{-5D,p-}{i}! [ds_s1Xj];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1XP ds_s1XO];
+             };
+       };
+a{-r1,x-} =
+     [] \u []
+       s_s1Xu;
+b{-r3,x-} =
+     [] \r [x_s1XY]
+       let {
+         stg_c2ac =
+             (False, True, False, False, True) [x_s1XY] \r [ds_s1XN]
+                 case
+                     ds_s1XN{-lvs:x_s1XY-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 of {
+                     -- lvs: [ds_s1XN x_s1XY]; rhs lvs: [x_s1XY]; uniq: c2bf
+                   STBase.S#{-5D,p-}{i} ds_s1XZ ->
+                       case x_s1XY{-lvs:ds_s1XZ-} ::PrelBase.Int{-3g,p-} of {
+                           -- lvs: [x_s1XY ds_s1XZ]; rhs lvs: [ds_s1XZ]; uniq: c2bg
+                         PrelBase.I#{-5b,p-}{i} ds_s1Yp ->
+                             case
+                                 _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s1XZ ds_s1Yp] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+                             of {
+                                 -- lvs: [ds_s1XZ ds_s1Yp]; rhs lvs: []; uniq: c2bh
+                               STBase.StateAndInt#{-5v,p-}{i} ds_s1YA ds_s1Yq ->
+                                   let {
+                                     ds_s1Za =
+                                          PrelBase.I#{-5b,p-}{i}! [ds_s1Yq]; } in
+                                   let {
+                                     ds_s1Z9 =
+                                          STBase.S#{-5D,p-}{i}! [ds_s1YA];
+                                   } in 
+                                     PrelTup.(,){-62,p-}{i}! [ds_s1Za ds_s1Z9];
+                             };
+                       };
+                 };
+       } in 
+         stg_c2ac;
+c{-r5,x-} =
+     [] \r [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]
+       let {
+         stg_c29C =
+             (False, True, False, False, True) [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN] \r [ds_s1Z8]
+                 case
+                     ds_s1Z8{-lvs:x1_s1Zj, x2_s1Zt, x3_s1ZD, x4_s1ZN-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 of {
+                     -- lvs: [ds_s1Z8 x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]; rhs lvs: [x1_s1Zj x2_s1Zt x3_s1ZD x4_s1ZN]; uniq: c2bi
+                   STBase.S#{-5D,p-}{i} ds_s1Zk ->
+                       case
+                           x1_s1Zj{-lvs:ds_s1Zk, x2_s1Zt, x3_s1ZD, x4_s1ZN-} ::PrelBase.Int{-3g,p-}
+                       of {
+                           -- lvs: [x1_s1Zj ds_s1Zk x2_s1Zt x3_s1ZD x4_s1ZN]; rhs lvs: [ds_s1Zk x2_s1Zt x3_s1ZD x4_s1ZN]; uniq: c2bj
+                         PrelBase.I#{-5b,p-}{i} ds_s1Zu ->
+                             case
+                                 x2_s1Zt{-lvs:ds_s1Zk, ds_s1Zu, x3_s1ZD, x4_s1ZN-} ::PrelBase.Char{-38,p-}
+                             of {
+                                 -- lvs: [ds_s1Zk x2_s1Zt ds_s1Zu x3_s1ZD x4_s1ZN]; rhs lvs: [ds_s1Zk ds_s1Zu x3_s1ZD x4_s1ZN]; uniq: c2bk
+                               PrelBase.C#{-54,p-}{i} ds_s1ZE ->
+                                   case
+                                       x3_s1ZD{-lvs:ds_s1Zk, ds_s1Zu, ds_s1ZE, x4_s1ZN-} ::PrelBase.Float{-3c,p-}
+                                   of {
+                                       -- lvs: [ds_s1Zk ds_s1Zu x3_s1ZD ds_s1ZE x4_s1ZN]; rhs lvs: [ds_s1Zk ds_s1Zu ds_s1ZE x4_s1ZN]; uniq: c2bl
+                                     PrelBase.F#{-59,p-}{i} ds_s1ZO ->
+                                         case
+                                             x4_s1ZN{-lvs:ds_s1Zk, ds_s1Zu, ds_s1ZE, ds_s1ZO-} ::PrelBase.Double{-3a,p-}
+                                         of {
+                                             -- lvs: [ds_s1Zk ds_s1Zu ds_s1ZE x4_s1ZN ds_s1ZO]; rhs lvs: [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO]; uniq: c2bm
+                                           PrelBase.D#{-56,p-}{i} ds_s20e ->
+                                               case
+                                                   _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]# [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO ds_s20e] ::STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}
+                                               of {
+                                                   -- lvs: [ds_s1Zk ds_s1Zu ds_s1ZE ds_s1ZO ds_s20e]; rhs lvs: []; uniq: c2bn
+                                                 STBase.StateAndFloat#{-5u,p-}{i} ds_s20p ds_s20f ->
+                                                     let {
+                                                       ds_s217 =
+                                                            PrelBase.F#{-59,p-}{i}! [ds_s20f]; } in
+                                                     let {
+                                                       ds_s216 =
+                                                            STBase.S#{-5D,p-}{i}! [ds_s20p];
+                                                     } in 
+                                                       PrelTup.(,){-62,p-}{i}! [ds_s217 ds_s216];
+                                               };
+                                         };
+                                   };
+                             };
+                       };
+                 };
+       } in 
+         stg_c29C;
+d{-r7,x-} =
+     [] \u []
+       let {
+         ds_s258 =
+              [] \r [x_s21g]
+                 let { s_s22a =  [x_s21g] \r [ds_s215]
+                         case
+                             ds_s215{-lvs:x_s21g-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                         of {
+                             -- lvs: [ds_s215 x_s21g]; rhs lvs: [x_s21g]; uniq: c2bo
+                           STBase.S#{-5D,p-}{i} ds_s21h ->
+                               case x_s21g{-lvs:ds_s21h-} ::PrelBase.Int{-3g,p-} of {
+                                   -- lvs: [x_s21g ds_s21h]; rhs lvs: [ds_s21h]; uniq: c2bp
+                                 PrelBase.I#{-5b,p-}{i} ds_s21H ->
+                                     case
+                                         _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s21h ds_s21H] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+                                     of {
+                                         -- lvs: [ds_s21h ds_s21H]; rhs lvs: []; uniq: c2bq
+                                       STBase.StateAndInt#{-5v,p-}{i} ds_s21S ds_s21I ->
+                                           let {
+                                             ds_s22c =
+                                                  PrelBase.I#{-5b,p-}{i}! [ds_s21I]; } in
+                                           let {
+                                             ds_s22b =
+                                                  STBase.S#{-5D,p-}{i}! [ds_s21S];
+                                           } in 
+                                             PrelTup.(,){-62,p-}{i}! [ds_s22c ds_s22b];
+                                     };
+                               };
+                         } } in
+                 let { s_s23h =  [x_s21g] \r [ds_s22k]
+                         case
+                             ds_s22k{-lvs:x_s21g-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                         of {
+                             -- lvs: [x_s21g ds_s22k]; rhs lvs: [x_s21g]; uniq: c2br
+                           STBase.S#{-5D,p-}{i} ds_s22t ->
+                               case x_s21g{-lvs:ds_s22t-} ::PrelBase.Int{-3g,p-} of {
+                                   -- lvs: [x_s21g ds_s22t]; rhs lvs: [ds_s22t]; uniq: c2bs
+                                 PrelBase.I#{-5b,p-}{i} ds_s22T ->
+                                     case
+                                         _ccall_ b [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-}]# [ds_s22t ds_s22T] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+                                     of {
+                                         -- lvs: [ds_s22t ds_s22T]; rhs lvs: []; uniq: c2bt
+                                       STBase.StateAndInt#{-5v,p-}{i} ds_s234 ds_s22U ->
+                                           let {
+                                             ds_s23A =
+                                                  PrelBase.I#{-5b,p-}{i}! [ds_s22U]; } in
+                                           let {
+                                             ds_s23z =
+                                                  STBase.S#{-5D,p-}{i}! [ds_s234];
+                                           } in 
+                                             PrelTup.(,){-62,p-}{i}! [ds_s23A ds_s23z];
+                                     };
+                               };
+                         } } in
+                 let {
+                   ds_s24V =
+                        [] \r [y_s23K]
+                           let {
+                             stg_c28E =
+                                 (False, True, False, False, True) [y_s23K] \r [ds_s23y]
+                                     case
+                                         ds_s23y{-lvs:y_s23K-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                                     of {
+                                         -- lvs: [ds_s23y y_s23K]; rhs lvs: [y_s23K]; uniq: c2bu
+                                       STBase.S#{-5D,p-}{i} ds_s23L ->
+                                           case y_s23K{-lvs:ds_s23L-} ::PrelBase.Int{-3g,p-} of {
+                                               -- lvs: [y_s23K ds_s23L]; rhs lvs: [ds_s23L]; uniq: c2bv
+                                             PrelBase.I#{-5b,p-}{i} ds_s23U ->
+                                                 case
+                                                     lit_a19w{-lvs:ds_s23L, ds_s23U-} ::PrelBase.Float{-3c,p-}
+                                                 of {
+                                                     -- lvs: [ds_s23L ds_s23U]; rhs lvs: [ds_s23L ds_s23U]; uniq: c2bw
+                                                   PrelBase.F#{-59,p-}{i} ds_s243 ->
+                                                       case
+                                                           lit_a19u{-lvs:ds_s23L, ds_s23U, ds_s243-} ::PrelBase.Double{-3a,p-}
+                                                       of {
+                                                           -- lvs: [ds_s23L ds_s23U ds_s243]; rhs lvs: [ds_s23L ds_s23U ds_s243]; uniq: c2bx
+                                                         PrelBase.D#{-56,p-}{i} ds_s24t ->
+                                                             case
+                                                                 _ccall_ c [(STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.Int#{-3f,p-} GHC.Char#{-37,p-} GHC.Float#{-3b,p-} GHC.Double#{-39,p-}]# [ds_s23L ds_s23U 'f' ds_s243 ds_s24t] ::STBase.StateAndFloat#{-3C,p-} GHC.RealWorld{-3s,p-}
+                                                             of {
+                                                                 -- lvs: [ds_s23L ds_s23U ds_s243 ds_s24t]; rhs lvs: []; uniq: c2by
+                                                               STBase.StateAndFloat#{-5u,p-}{i} ds_s24E ds_s24u ->
+                                                                   let {
+                                                                     ds_s24U =
+                                                                          PrelBase.F#{-59,p-}{i}! [ds_s24u]; } in
+                                                                   let {
+                                                                     ds_s24T =
+                                                                          STBase.S#{-5D,p-}{i}! [ds_s24E];
+                                                                   } in 
+                                                                     PrelTup.(,){-62,p-}{i}! [ds_s24U ds_s24T];
+                                                             };
+                                                       };
+                                                 };
+                                           };
+                                     };
+                           } in 
+                             stg_c28E;
+                 } in 
+                   STBase.thenPrimIO{-r4w,p-}
+                       s_s23h ds_s24V;
+       } in 
+         STBase.thenPrimIO{-r4w,p-}
+             s_s1Xu ds_s258;
+
+
+================================================================================
+Flat Abstract C:
+ED_(PrelNum_integerZu2_closure);
+ED_(PrelNum_integerZu1_closure);
+SET_STATIC_HDR(s25b_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
+  , (W_)PrelNum_integerZu2_closure, (W_)PrelNum_integerZu1_closure
+};
+IFN_(ret_c2b9) {
+ID_(s25b_closure);
+       FB_
+       SpA[-1]=s25b_closure;
+       RetReg=StdUpdRetVecReg;
+       R1=R6;
+       SpA=SpA-1;
+       SpB=SpB-1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(6,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2b9,ret_c2b9)
+STATIC_ITBL(a19u_info,a19u_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                   2),0,static const,IF_,0,0,0);
+IFN_(a19u_entry) {
+ED_(PrelNum_Z36d14_closure);
+       FB_
+       STK_CHK(1,1,5,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+2),1);
+       SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+1));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
+       RetReg=(StgRetAddr)UNVEC(ret_c2b9,vtbl_c2b9);
+       R1.p=PrelNum_Z36d14_closure;
+       SpB=SpB+5;
+       ENT_VIA_NODE();
+       GRAN_EXEC(19,2,2,8,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(a19u_closure,a19u_info,0,static ,ID_RO_)
+  , (W_)0, (W_)0
+};
+ED_(PrelNum_integerZu1_closure);
+SET_STATIC_HDR(s25c_closure,PrelNum_ZcZ37_static_info,0,static ,ED_RO_)
+  , (W_)PrelNum_integerZu1_closure, (W_)PrelNum_integerZu1_closure
+};
+IFN_(ret_c2ba) {
+ID_(s25c_closure);
+       FB_
+       SpA[-1]=s25c_closure;
+       RetReg=StdUpdRetVecReg;
+       R1=R6;
+       SpA=SpA-1;
+       SpB=SpB-1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(6,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2ba,ret_c2ba)
+STATIC_ITBL(a19w_info,a19w_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                   2),0,static const,IF_,0,0,0);
+IFN_(a19w_entry) {
+ED_(PrelNum_Z36d23_closure);
+       FB_
+       STK_CHK(1,1,5,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+2),1);
+       SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+1));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
+       RetReg=(StgRetAddr)UNVEC(ret_c2ba,vtbl_c2ba);
+       R1.p=PrelNum_Z36d23_closure;
+       SpB=SpB+5;
+       ENT_VIA_NODE();
+       GRAN_EXEC(19,2,2,8,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(a19w_closure,a19w_info,0,static ,ID_RO_)
+  , (W_)0, (W_)0
+};
+IFN_(ret_c2bb) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1W9;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (a());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1W9=_ccall_result;
        }
-Test.c{-r81-} :: Int -> Char -> Float -> Double -> IoWorld -> (Float, IoWorld)
-_NI_
-Test.c{-r81-} =
-    \ x1.r213  x2.r214  x3.r215  x4.r216  ds.d18 ->
-       case
-           (case
-                (case ds.d18 of {
-                   IoWorld ds.d19# -> ds.d19#
-                 })
-            of {
-              a.d28# ->
-                  case
-                      (case x1.r213 of {
-                         I# ds.d20# -> ds.d20#
-                       })
-                  of {
-                    a.d29# ->
-                        case
-                            (case x2.r214 of {
-                               C# ds.d21# -> ds.d21#
-                             })
-                        of {
-                          a.d30# ->
-                              case
-                                  (case x3.r215 of {
-                                     F# ds.d22# -> ds.d22#
-                                   })
-                              of {
-                                a.d31# ->
-                                    case
-                                        (case x4.r216 of {
-                                           D# ds.d23# -> ds.d23#
-                                         })
-                                    of {
-                                      a.d32# ->
-                                          ( _CCALL_ c [Int#,
-                                                       Char#,
-                                                       Float#,
-                                                       Double#] Float# )!
-                                              a.d28#
-                                              a.d29#
-                                              a.d30#
-                                              a.d31#
-                                              a.d32#
-                                    }
-                              }
-                        }
-                  }
-            })
-       of {
-         FloatPrimAndIoWorld ds.d24#  ds.d25# ->
-             let {
-               a.d26 :: Float
-               _NI_
-               a.d26 = F#! ds.d24# } in
-             let {
-               a.d27 :: IoWorld
-               _NI_
-               a.d27 = IoWorld! ds.d25#
-             } in  Tup2! Float IoWorld a.d26 a.d27
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1W9);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bb,ret_c2bb)
+STATIC_ITBL(s1MF_info,s1MF_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1MF_entry) {
+ID_(s1MF_closure);
+IF_(s1MF_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1MF_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1MF_fast1);
+       FE_
+}
+IFN_(s1MF_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bb,vtbl_c2bb);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1MF_closure,s1MF_info,0,static ,ID_RO_)
+};
+IFN_(ret_c2bd) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1X8;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (a());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1X8=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1X8);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bd,ret_c2bd)
+STATIC_ITBL(s1Xu_info,s1Xu_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1Xu_entry) {
+ID_(s1Xu_closure);
+IF_(s1Xu_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1Xu_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1Xu_fast1);
+       FE_
+}
+IFN_(s1Xu_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bd,vtbl_c2bd);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1Xu_closure,s1Xu_info,0,static ,ID_RO_)
+};
+STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                       2),0,const,EF_,0,0,0);
+FN_(Test_a_entry) {
+IF_(s1Xu_entry);
+       FB_
+       STK_CHK(1,0,4,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+2),1);
+       SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+1));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
+       RetReg=StdUpdRetVecReg;
+       SpB=SpB+4;
+       GRAN_EXEC(16,2,1,8,0);
+       JMP_(s1Xu_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_)
+  , (W_)0, (W_)0
+};
+IFN_(ret_c2bg) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1Yq;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       I_ _ccall_arg1=R3.i;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (b((_ccall_arg1)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1Yq=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1Yq);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,22,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bg,ret_c2bg)
+IFN_(ret_c2bf) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bg,vtbl_c2bg);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bf,ret_c2bf)
+SPEC_N_ITBL(c2ac_info,c2ac_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c2ac_entry) {
+IF_(c2ac_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(c2ac_fast1);
+       FE_
+}
+IFN_(c2ac_fast1) {
+       FB_
+       STK_CHK(3,1,1,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bf,vtbl_c2bf);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+STATIC_ITBL(Test_b_info,Test_b_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_b_entry) {
+ED_(Test_b_closure);
+EF_(Test_b_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,Test_b_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(Test_b_fast1);
+       FE_
+}
+FN_(Test_b_fast1) {
+ID_RO_(c2ac_info);
+IF_(c2ac_entry);
+       FB_
+       HEAP_CHK(1,(_FHS+1),0);
+       SET_SPEC_HDR(Hp-_FHS,c2ac_info,0,1,1);
+       *Hp=(W_)(R1.p);
+       R1.p=Hp-_FHS;
+       GRAN_EXEC(5,2,0,2,0);
+       JMP_(c2ac_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_)
+};
+IFN_(ret_c2bm) {
+ED_RO_(PrelBase_FZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+StgFloat s20f;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       StgFloat _ccall_result;
+       I_ _ccall_arg1=(I_)(SpB[-2]);
+       StgChar _ccall_arg2=(StgChar)(SpB[-1]);
+       StgFloat _ccall_arg3=PK_FLT(SpB);
+       StgDouble _ccall_arg4=DblReg1;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (c((_ccall_arg1),(_ccall_arg2),(_ccall_arg3),(_ccall_arg4)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s20f=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_FZh_con_info,0,1,0);
+       ASSIGN_FLT(Hp,s20f);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-4;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,25,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bm,ret_c2bm)
+IFN_(ret_c2bl) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bm,vtbl_c2bm);
+       R1.p=*SpA;
+       ASSIGN_FLT(SpB+1,FltReg1);
+       SpA=SpA+4;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(4,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bl,ret_c2bl)
+IFN_(ret_c2bk) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bl,vtbl_c2bl);
+       R1.p=SpA[1];
+       SpB[1]=(W_)(R3.c);
+       SpA[1]=StkStubReg;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bk,ret_c2bk)
+IFN_(ret_c2bj) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bk,vtbl_c2bk);
+       R1.p=SpA[2];
+       SpB[1]=(W_)(R3.i);
+       SpA[2]=StkStubReg;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bj,ret_c2bj)
+IFN_(ret_c2bi) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bj,vtbl_c2bj);
+       R1.p=SpA[3];
+       SpA[3]=StkStubReg;
+       ENT_VIA_NODE();
+       GRAN_EXEC(2,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bi,ret_c2bi)
+SPEC_N_ITBL(c29C_info,c29C_entry,StdErrorCode,1,-1,4,4,static const,IF_,0,0,0);
+IFN_(c29C_entry) {
+IF_(c29C_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(c29C_fast1);
+       FE_
+}
+IFN_(c29C_fast1) {
+       FB_
+       STK_CHK(3,4,4,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bi,vtbl_c2bi);
+       SpA[-4]=(P_)(R1.p[(_FHS+3)]);
+       SpA[-3]=(P_)(R1.p[(_FHS+2)]);
+       SpA[-2]=(P_)(R1.p[(_FHS+1)]);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-4;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,5,5,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+STATIC_ITBL(Test_c_info,Test_c_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_c_entry) {
+ED_(Test_c_closure);
+EF_(Test_c_fast4);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(4,Test_c_closure);
+       R1.p=*SpA;
+       R2.p=SpA[1];
+       R3.p=SpA[2];
+       R4.p=SpA[3];
+       SpA=SpA+4;
+       GRAN_EXEC(5,2,4,0,0);
+       JMP_(Test_c_fast4);
+       FE_
+}
+FN_(Test_c_fast4) {
+ID_RO_(c29C_info);
+IF_(c29C_entry);
+       FB_
+       HEAP_CHK(15,(_FHS+4),0);
+       SET_SPEC_HDR(Hp-(_FHS+3),c29C_info,0,4,4);
+       Hp[-3]=(W_)(R1.p);
+       Hp[-2]=(W_)(R2.p);
+       Hp[-1]=(W_)(R3.p);
+       *Hp=(W_)(R4.p);
+       R1.p=Hp-(_FHS+3);
+       GRAN_EXEC(5,2,0,5,0);
+       JMP_(c29C_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_)
+};
+IFN_(ret_c2bp) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s21I;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       I_ _ccall_arg1=R3.i;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (b((_ccall_arg1)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s21I=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s21I);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,22,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bp,ret_c2bp)
+IFN_(ret_c2bo) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bp,vtbl_c2bp);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bo,ret_c2bo)
+SPEC_N_ITBL(s22a_info,s22a_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(s22a_entry) {
+IF_(s22a_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s22a_fast1);
+       FE_
+}
+IFN_(s22a_fast1) {
+       FB_
+       STK_CHK(3,1,1,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bo,vtbl_c2bo);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+IFN_(ret_c2bs) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s22U;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       I_ _ccall_arg1=R3.i;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (b((_ccall_arg1)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s22U=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s22U);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,22,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bs,ret_c2bs)
+IFN_(ret_c2br) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bs,vtbl_c2bs);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2br,ret_c2br)
+SPEC_N_ITBL(s23h_info,s23h_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(s23h_entry) {
+IF_(s23h_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s23h_fast1);
+       FE_
+}
+IFN_(s23h_fast1) {
+       FB_
+       STK_CHK(3,1,1,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2br,vtbl_c2br);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+IFN_(ret_c2bx) {
+ED_RO_(PrelBase_FZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+StgFloat s24u;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       StgFloat _ccall_result;
+       I_ _ccall_arg1=(I_)(SpB[-1]);
+       StgChar _ccall_arg2=(C_)'f';
+       StgFloat _ccall_arg3=PK_FLT(SpB);
+       StgDouble _ccall_arg4=DblReg1;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (c((_ccall_arg1),(_ccall_arg2),(_ccall_arg3),(_ccall_arg4)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s24u=_ccall_result;
        }
-Test.d{-r82-} :: IoWorld -> (Float, IoWorld)
-_NI_
-Test.d{-r82-} =
-    let {
-      a.d36 :: Int -> IoWorld -> (Float, IoWorld)
-      _NI_
-      a.d36 =
-         \ x.r217 ->
-             let {
-               a.d35 :: Int -> IoWorld -> (Float, IoWorld)
-               _NI_
-               a.d35 =
-                   \ y.r218 ->
-                       (let {
-                          a.d33 :: Char
-                          _NI_
-                          a.d33 = C#! 'f'#
-                        } in  Test.c{-r81-} y.r218 a.d33) lit.t443 lit.t444
-             } in 
-               (let {
-                  a.d34 :: IoWorld -> (Int, IoWorld)
-                  _NI_
-                  a.d34 = Test.b{-r80-} x.r217
-                } in  ((thenIO{-r102-} Int) Float) a.d34) a.d35
-    } in  ((thenIO{-r102-} Int) Float) Test.a{-r79-} a.d36
-{- end plain CoRec -}
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_FZh_con_info,0,1,0);
+       ASSIGN_FLT(Hp,s24u);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-3;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(11,2,24,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bx,ret_c2bx)
+IFN_(ret_c2bw) {
+ID_(a19u_closure);
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bx,vtbl_c2bx);
+       R1.p=a19u_closure;
+       ASSIGN_FLT(SpB+1,FltReg1);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bw,ret_c2bw)
+IFN_(ret_c2bv) {
+ID_(a19w_closure);
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bw,vtbl_c2bw);
+       R1.p=a19w_closure;
+       SpB[1]=(W_)(R3.i);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bv,ret_c2bv)
+IFN_(ret_c2bu) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c2bv,vtbl_c2bv);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c2bu,ret_c2bu)
+SPEC_N_ITBL(c28E_info,c28E_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c28E_entry) {
+IF_(c28E_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(c28E_fast1);
+       FE_
+}
+IFN_(c28E_fast1) {
+       FB_
+       STK_CHK(3,1,3,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c2bu,vtbl_c2bu);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SPEC_N_ITBL(s24V_info,s24V_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
+IFN_(s24V_entry) {
+IF_(s24V_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s24V_fast1);
+       FE_
+}
+IFN_(s24V_fast1) {
+ID_RO_(c28E_info);
+IF_(c28E_entry);
+       FB_
+       HEAP_CHK(3,(_FHS+1),1);
+       SET_SPEC_HDR(Hp-_FHS,c28E_info,0,1,1);
+       *Hp=(W_)(R2.p);
+       R1.p=Hp-_FHS;
+       GRAN_EXEC(5,2,0,2,0);
+       JMP_(c28E_entry);
+       FE_
+}
+SPEC_N_ITBL(s258_info,s258_entry,StdErrorCode,1,-1,1,0,static const,IF_,0,0,0);
+IFN_(s258_entry) {
+IF_(s258_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s258_fast1);
+       FE_
+}
+IFN_(s258_fast1) {
+ID_RO_(s22a_info);
+ID_RO_(s23h_info);
+ID_RO_(s24V_info);
+ED_(STBase_thenPrimIO_closure);
+       FB_
+       STK_CHK(3,2,0,0,0,0,1);
+       HEAP_CHK(3,((_FHS*3)+3),1);
+       SET_SPEC_HDR(Hp-((_FHS*3)+2),s22a_info,0,1,1);
+       Hp[-((_FHS*2)+2)]=(W_)(R2.p);
+       SET_SPEC_HDR(Hp-((_FHS*2)+1),s23h_info,0,1,1);
+       Hp[-(_FHS+1)]=(W_)(R2.p);
+       SET_SPEC_HDR(Hp-_FHS,s24V_info,0,1,0);
+       SpA[-1]=Hp-_FHS;
+       SpA[-2]=Hp-((_FHS*2)+1);
+       R1.p=STBase_thenPrimIO_closure;
+       SpA=SpA-2;
+       ENT_VIA_NODE();
+       GRAN_EXEC(11,2,3,7,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                       2),0,const,EF_,0,0,0);
+FN_(Test_d_entry) {
+ID_RO_(s258_info);
+ID_(s1Xu_closure);
+ED_(STBase_thenPrimIO_closure);
+       FB_
+       STK_CHK(1,2,4,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+_FHS+3),1);
+       SET_BH_HDR(Hp-(BH_HS+_FHS+2),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+_FHS+2));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+_FHS+2),0,0);
+       SET_SPEC_HDR(Hp-_FHS,s258_info,0,1,0);
+       SpA[-1]=Hp-_FHS;
+       SpA[-2]=s1Xu_closure;
+       RetReg=StdUpdRetVecReg;
+       R1.p=STBase_thenPrimIO_closure;
+       SpA=SpA-2;
+       SpB=SpB+4;
+       ENT_VIA_NODE();
+       GRAN_EXEC(23,2,3,11,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(Test_d_closure,Test_d_info,0,,ED_RO_)
+  , (W_)0, (W_)0
+};
+ghc: module version changed to 1; reason: no old .hi file
index 95a061b..27579e9 100644 (file)
@@ -1,15 +1,16 @@
---!!! cc002 -- ccall with non-standard boxed arguments and results
+--!!! cc006 -- ccall with non-standard boxed arguments and results
 
 module Test where
 
-import PreludeGlaST
+import GlaExts
+import Foreign
 
 -- Test returning results
 
-a :: PrimIO ForeignObj
+a :: PrimIO Int
 a = _ccall_ a
 
-b :: PrimIO StablePtr
+b :: PrimIO (StablePtr Int)
 b = _ccall_ b
 
 -- Test taking arguments
@@ -17,5 +18,5 @@ b = _ccall_ b
 c :: ForeignObj -> PrimIO Int
 c x = _ccall_ c x
 
-d :: StablePtr -> PrimIO Int
+d :: StablePtr Int -> PrimIO Int
 d x = _ccall_ d x
index 2f097cf..df765d7 100644 (file)
-Typechecked:
-AbsBinds [] [] [(a.t439, Test.a{-r79-})]
-    {- nonrec -}
-    a.t439 :: IoWorld -> (CHeapPtr, IoWorld)
-    a.t439
-       = ccall  a [CHeapPtr] 
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(b.t440, Test.b{-r80-})]
-    {- nonrec -}
-    b.t440 :: IoWorld -> (StablePtr, IoWorld)
-    b.t440
-       = ccall  b [StablePtr] 
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(c.t441, Test.c{-r81-})]
-    {- nonrec -}
-    c.t441 :: CHeapPtr -> IoWorld -> (Int, IoWorld)
-    c.t441
-       x.r211 = ccall  c [Int, CHeapPtr] x.r211
-{- nonrec -}
-{- nonrec -}
-AbsBinds [] [] [(d.t442, Test.d{-r82-})]
-    {- nonrec -}
-    d.t442 :: StablePtr -> IoWorld -> (Int, IoWorld)
-    d.t442
-       x.r212 = ccall  d [Int, StablePtr] x.r212
-{- nonrec -}
-{- nonrec -}
-Desugared:
-Test.a{-r79-} :: IoWorld -> (CHeapPtr, IoWorld)
-_NI_
-Test.a{-r79-} =
-    \ ds.d0 ->
-       case
-           (case
-                (case ds.d0 of {
-                   IoWorld ds.d1# -> ds.d1#
-                 })
-            of {
-              a.d6# -> ( _CCALL_ a [] CHeapPtr# )! a.d6#
-            })
-       of {
-         CHPPrimAndIoWorld ds.d2#  ds.d3# ->
-             let {
-               a.d4 :: CHeapPtr
-               _NI_
-               a.d4 = CHP#! ds.d2# } in
-             let {
-               a.d5 :: IoWorld
-               _NI_
-               a.d5 = IoWorld! ds.d3#
-             } in  Tup2! CHeapPtr IoWorld a.d4 a.d5
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
+
+
+================================================================================
+STG syntax:
+d{-r5y,x-} =
+     [] \r [x_s1vw]
+       let {
+         stg_c1Fh =
+             (False, True, False, False, True) [x_s1vw] \r [ds_s1vn]
+                 case
+                     ds_s1vn{-lvs:x_s1vw-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 of {
+                     -- lvs: [ds_s1vn x_s1vw]; rhs lvs: [x_s1vw]; uniq: c1Fi
+                   STBase.S#{-5D,p-}{i} ds_s1vx ->
+                       case
+                           x_s1vw{-lvs:ds_s1vx-} ::Foreign.StablePtr{-3w,p-} PrelBase.Int{-3g,p-}
+                       of {
+                           -- lvs: [x_s1vw ds_s1vx]; rhs lvs: [ds_s1vx]; uniq: c1Fj
+                         Foreign.StablePtr{-5o,p-}{i} ds_s1vX ->
+                             case
+                                 _ccall_ d [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) (GHC.StablePtr#{-3v,p-} PrelBase.Int{-3g,p-})]# [ds_s1vx ds_s1vX] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+                             of {
+                                 -- lvs: [ds_s1vx ds_s1vX]; rhs lvs: []; uniq: c1Fk
+                               STBase.StateAndInt#{-5v,p-}{i} ds_s1w8 ds_s1vY ->
+                                   let {
+                                     ds_s1wC =
+                                          PrelBase.I#{-5b,p-}{i}! [ds_s1vY]; } in
+                                   let {
+                                     ds_s1wB =
+                                          STBase.S#{-5D,p-}{i}! [ds_s1w8];
+                                   } in 
+                                     PrelTup.(,){-62,p-}{i}! [ds_s1wC ds_s1wB];
+                             };
+                       };
+                 };
+       } in 
+         stg_c1Fh;
+c{-r5x,x-} =
+     [] \r [x_s1wL]
+       let {
+         stg_c1EH =
+             (False, True, False, False, True) [x_s1wL] \r [ds_s1wA]
+                 case
+                     ds_s1wA{-lvs:x_s1wL-} ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-}
+                 of {
+                     -- lvs: [ds_s1wA x_s1wL]; rhs lvs: [x_s1wL]; uniq: c1Fl
+                   STBase.S#{-5D,p-}{i} ds_s1wM ->
+                       case x_s1wL{-lvs:ds_s1wM-} ::Foreign.ForeignObj{-3l,p-} of {
+                           -- lvs: [x_s1wL ds_s1wM]; rhs lvs: [ds_s1wM]; uniq: c1Fm
+                         Foreign.ForeignObj{-5f,p-}{i} ds_s1xc ->
+                             case
+                                 _ccall_ c [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-}) GHC.ForeignObj#{-3k,p-}]# [ds_s1wM ds_s1xc] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+                             of {
+                                 -- lvs: [ds_s1wM ds_s1xc]; rhs lvs: []; uniq: c1Fn
+                               STBase.StateAndInt#{-5v,p-}{i} ds_s1xn ds_s1xd ->
+                                   let {
+                                     ds_s1xL =
+                                          PrelBase.I#{-5b,p-}{i}! [ds_s1xd]; } in
+                                   let {
+                                     ds_s1xK =
+                                          STBase.S#{-5D,p-}{i}! [ds_s1xn];
+                                   } in 
+                                     PrelTup.(,){-62,p-}{i}! [ds_s1xL ds_s1xK];
+                             };
+                       };
+                 };
+       } in 
+         stg_c1EH;
+s_s1sE =
+     [] \r [ds_s1xJ]
+       case ds_s1xJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1xJ]; rhs lvs: []; uniq: c1Fo
+         STBase.S#{-5D,p-}{i} ds_s1yc ->
+             case
+                 _ccall_ b [(Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1yc] ::Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
+             of {
+                 -- lvs: [ds_s1yc]; rhs lvs: []; uniq: c1Fp
+               Foreign.StateAndStablePtr#{-5B,p-}{i} ds_s1ym ds_s1yb ->
+                   let {
+                     ds_s1yC =
+                          Foreign.StablePtr{-5o,p-}{i}! [ds_s1yb]; } in
+                   let {
+                     ds_s1yB =
+                          STBase.S#{-5D,p-}{i}! [ds_s1ym];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1yC ds_s1yB];
+             };
+       };
+s_s1zw =
+    (False, True, False, False, True) [] \r [ds_s1yK]
+       case ds_s1yK ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1yK]; rhs lvs: []; uniq: c1Fq
+         STBase.S#{-5D,p-}{i} ds_s1zb ->
+             case
+                 _ccall_ b [(Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1zb] ::Foreign.StateAndStablePtr#{-3J,p-} GHC.RealWorld{-3s,p-} PrelBase.Int{-3g,p-}
+             of {
+                 -- lvs: [ds_s1zb]; rhs lvs: []; uniq: c1Fr
+               Foreign.StateAndStablePtr#{-5B,p-}{i} ds_s1zl ds_s1za ->
+                   let {
+                     ds_s1zL =
+                          Foreign.StablePtr{-5o,p-}{i}! [ds_s1za]; } in
+                   let {
+                     ds_s1zK =
+                          STBase.S#{-5D,p-}{i}! [ds_s1zl];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1zL ds_s1zK];
+             };
+       };
+b{-r5w,x-} =
+     [] \u []
+       s_s1zw;
+s_s1uE =
+     [] \r [ds_s1zJ]
+       case ds_s1zJ ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1zJ]; rhs lvs: []; uniq: c1Fs
+         STBase.S#{-5D,p-}{i} ds_s1Ac ->
+             case
+                 _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Ac] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+             of {
+                 -- lvs: [ds_s1Ac]; rhs lvs: []; uniq: c1Ft
+               STBase.StateAndInt#{-5v,p-}{i} ds_s1Am ds_s1Ab ->
+                   let {
+                     ds_s1AC =
+                          PrelBase.I#{-5b,p-}{i}! [ds_s1Ab]; } in
+                   let {
+                     ds_s1AB =
+                          STBase.S#{-5D,p-}{i}! [ds_s1Am];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1AC ds_s1AB];
+             };
+       };
+s_s1Bw =
+    (False, True, False, False, True) [] \r [ds_s1AK]
+       case ds_s1AK ::STBase.State{-3M,p-} GHC.RealWorld{-3s,p-} of {
+           -- lvs: [ds_s1AK]; rhs lvs: []; uniq: c1Fu
+         STBase.S#{-5D,p-}{i} ds_s1Bb ->
+             case
+                 _ccall_ a [(STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}) (GHC.State#{-3L,p-} GHC.RealWorld{-3s,p-})]# [ds_s1Bb] ::STBase.StateAndInt#{-3D,p-} GHC.RealWorld{-3s,p-}
+             of {
+                 -- lvs: [ds_s1Bb]; rhs lvs: []; uniq: c1Fv
+               STBase.StateAndInt#{-5v,p-}{i} ds_s1Bl ds_s1Ba ->
+                   let {
+                     ds_s1BE =
+                          PrelBase.I#{-5b,p-}{i}! [ds_s1Ba]; } in
+                   let {
+                     ds_s1BF =
+                          STBase.S#{-5D,p-}{i}! [ds_s1Bl];
+                   } in 
+                     PrelTup.(,){-62,p-}{i}! [ds_s1BE ds_s1BF];
+             };
+       };
+a{-r5v,x-} =
+     [] \u []
+       s_s1Bw;
+
+
+================================================================================
+Flat Abstract C:
+IFN_(ret_c1Fj) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1vY;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       StgStablePtr _ccall_arg1=R3.i;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (d((_ccall_arg1)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1vY=_ccall_result;
        }
-Test.b{-r80-} :: IoWorld -> (StablePtr, IoWorld)
-_NI_
-Test.b{-r80-} =
-    \ ds.d7 ->
-       case
-           (case
-                (case ds.d7 of {
-                   IoWorld ds.d8# -> ds.d8#
-                 })
-            of {
-              a.d13# -> ( _CCALL_ b [] StablePtr# )! a.d13#
-            })
-       of {
-         SPPrimAndIoWorld ds.d9#  ds.d10# ->
-             let {
-               a.d11 :: StablePtr
-               _NI_
-               a.d11 = StablePtr#! ds.d9# } in
-             let {
-               a.d12 :: IoWorld
-               _NI_
-               a.d12 = IoWorld! ds.d10#
-             } in  Tup2! StablePtr IoWorld a.d11 a.d12
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1vY);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,22,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fj,ret_c1Fj)
+IFN_(ret_c1Fi) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fj,vtbl_c1Fj);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fi,ret_c1Fi)
+SPEC_N_ITBL(c1Fh_info,c1Fh_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1Fh_entry) {
+IF_(c1Fh_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(c1Fh_fast1);
+       FE_
+}
+IFN_(c1Fh_fast1) {
+       FB_
+       STK_CHK(3,1,1,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fi,vtbl_c1Fi);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_d_entry) {
+ED_(Test_d_closure);
+EF_(Test_d_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,Test_d_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(Test_d_fast1);
+       FE_
+}
+FN_(Test_d_fast1) {
+ID_RO_(c1Fh_info);
+IF_(c1Fh_entry);
+       FB_
+       HEAP_CHK(1,(_FHS+1),0);
+       SET_SPEC_HDR(Hp-_FHS,c1Fh_info,0,1,1);
+       *Hp=(W_)(R1.p);
+       R1.p=Hp-_FHS;
+       GRAN_EXEC(5,2,0,2,0);
+       JMP_(c1Fh_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_d_closure,Test_d_info,0,,ED_RO_)
+};
+IFN_(ret_c1Fm) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1xd;
+       FB_
+       HEAP_CHK(4,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       StgForeignObj _ccall_arg1=ForeignObj_CLOSURE_DATA(R3.p);
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (c((_ccall_arg1)));
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1xd=_ccall_result;
        }
-Test.c{-r81-} :: CHeapPtr -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.c{-r81-} =
-    \ x.r211  ds.d14 ->
-       case
-           (case
-                (case ds.d14 of {
-                   IoWorld ds.d15# -> ds.d15#
-                 })
-            of {
-              a.d21# ->
-                  case
-                      (case x.r211 of {
-                         CHP# ds.d16# -> ds.d16#
-                       })
-                  of {
-                    a.d22# -> ( _CCALL_ c [CHeapPtr#] Int# )! a.d21# a.d22#
-                  }
-            })
-       of {
-         IntPrimAndIoWorld ds.d17#  ds.d18# ->
-             let {
-               a.d19 :: Int
-               _NI_
-               a.d19 = I#! ds.d17# } in
-             let {
-               a.d20 :: IoWorld
-               _NI_
-               a.d20 = IoWorld! ds.d18#
-             } in  Tup2! Int IoWorld a.d19 a.d20
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1xd);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,22,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fm,ret_c1Fm)
+IFN_(ret_c1Fl) {
+       FB_
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fm,vtbl_c1Fm);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,2,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fl,ret_c1Fl)
+SPEC_N_ITBL(c1EH_info,c1EH_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0);
+IFN_(c1EH_entry) {
+IF_(c1EH_fast1);
+       FB_
+       ARGS_CHK_A(1);
+       R2.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(c1EH_fast1);
+       FE_
+}
+IFN_(c1EH_fast1) {
+       FB_
+       STK_CHK(3,1,1,0,0,0,1);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fl,vtbl_c1Fl);
+       SpA[-1]=(P_)(R1.p[_FHS]);
+       R1=R2;
+       SpA=SpA-1;
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(5,1,2,2,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+STATIC_ITBL(Test_c_info,Test_c_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0);
+FN_(Test_c_entry) {
+ED_(Test_c_closure);
+EF_(Test_c_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,Test_c_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(Test_c_fast1);
+       FE_
+}
+FN_(Test_c_fast1) {
+ID_RO_(c1EH_info);
+IF_(c1EH_entry);
+       FB_
+       HEAP_CHK(1,(_FHS+1),0);
+       SET_SPEC_HDR(Hp-_FHS,c1EH_info,0,1,1);
+       *Hp=(W_)(R1.p);
+       R1.p=Hp-_FHS;
+       GRAN_EXEC(5,2,0,2,0);
+       JMP_(c1EH_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_)
+};
+IFN_(ret_c1Fo) {
+ED_RO_(Foreign_StablePtr_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+StgStablePtr s1yb;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       StgStablePtr _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (b());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1yb=_ccall_result;
        }
-Test.d{-r82-} :: StablePtr -> IoWorld -> (Int, IoWorld)
-_NI_
-Test.d{-r82-} =
-    \ x.r212  ds.d23 ->
-       case
-           (case
-                (case ds.d23 of {
-                   IoWorld ds.d24# -> ds.d24#
-                 })
-            of {
-              a.d30# ->
-                  case
-                      (case x.r212 of {
-                         StablePtr# ds.d25# -> ds.d25#
-                       })
-                  of {
-                    a.d31# -> ( _CCALL_ d [StablePtr#] Int# )! a.d30# a.d31#
-                  }
-            })
-       of {
-         IntPrimAndIoWorld ds.d26#  ds.d27# ->
-             let {
-               a.d28 :: Int
-               _NI_
-               a.d28 = I#! ds.d26# } in
-             let {
-               a.d29 :: IoWorld
-               _NI_
-               a.d29 = IoWorld! ds.d27#
-             } in  Tup2! Int IoWorld a.d28 a.d29
+       SET_SPEC_HDR(Hp-_FHS,Foreign_StablePtr_con_info,0,1,0);
+       *Hp=(W_)(s1yb);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fo,ret_c1Fo)
+STATIC_ITBL(s1sE_info,s1sE_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1sE_entry) {
+ID_(s1sE_closure);
+IF_(s1sE_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1sE_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1sE_fast1);
+       FE_
+}
+IFN_(s1sE_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fo,vtbl_c1Fo);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1sE_closure,s1sE_info,0,static ,ID_RO_)
+};
+IFN_(ret_c1Fq) {
+ED_RO_(Foreign_StablePtr_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+StgStablePtr s1za;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       StgStablePtr _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (b());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1za=_ccall_result;
        }
+       SET_SPEC_HDR(Hp-_FHS,Foreign_StablePtr_con_info,0,1,0);
+       *Hp=(W_)(s1za);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fq,ret_c1Fq)
+STATIC_ITBL(s1zw_info,s1zw_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1zw_entry) {
+ID_(s1zw_closure);
+IF_(s1zw_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1zw_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1zw_fast1);
+       FE_
+}
+IFN_(s1zw_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fq,vtbl_c1Fq);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1zw_closure,s1zw_info,0,static ,ID_RO_)
+};
+STATIC_ITBL(Test_b_info,Test_b_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                       2),0,const,EF_,0,0,0);
+FN_(Test_b_entry) {
+IF_(s1zw_entry);
+       FB_
+       STK_CHK(1,0,4,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+2),1);
+       SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+1));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
+       RetReg=StdUpdRetVecReg;
+       SpB=SpB+4;
+       GRAN_EXEC(16,2,1,8,0);
+       JMP_(s1zw_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_)
+  , (W_)0, (W_)0
+};
+IFN_(ret_c1Fs) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1Ab;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (a());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1Ab=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1Ab);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fs,ret_c1Fs)
+STATIC_ITBL(s1uE_info,s1uE_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1uE_entry) {
+ID_(s1uE_closure);
+IF_(s1uE_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1uE_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1uE_fast1);
+       FE_
+}
+IFN_(s1uE_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fs,vtbl_c1Fs);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1uE_closure,s1uE_info,0,static ,ID_RO_)
+};
+IFN_(ret_c1Fu) {
+ED_RO_(PrelBase_IZh_con_info);
+ED_(STBase_SZh_static_closure);
+ED_RO_(PrelTup_Z40Z44Z41_inregs_info);
+I_ s1Ba;
+       FB_
+       HEAP_CHK(0,(_FHS+1),0);
+       {
+       I_ _ccall_result;
+       CALLER_SAVE_Base
+       CALLER_SAVE_SpA
+       CALLER_SAVE_SuA
+       CALLER_SAVE_SpB
+       CALLER_SAVE_SuB
+       CALLER_SAVE_Ret
+       CALLER_SAVE_Hp
+       CALLER_SAVE_HpLim
+       _ccall_result = (a());
+       CALLER_RESTORE_Base
+       CALLER_RESTORE_SpA
+       CALLER_RESTORE_SuA
+       CALLER_RESTORE_SpB
+       CALLER_RESTORE_SuB
+       CALLER_RESTORE_Ret
+       CALLER_RESTORE_Hp
+       CALLER_RESTORE_HpLim
+       CALLER_RESTORE_StdUpdRetVec
+       CALLER_RESTORE_StkStub
+       s1Ba=_ccall_result;
+       }
+       SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0);
+       *Hp=(W_)(s1Ba);
+       R4.p=STBase_SZh_static_closure;
+       R3.p=Hp-_FHS;
+       SpB=SpB-1;
+       R2.d=PrelTup_Z40Z44Z41_inregs_info;
+       GRAN_EXEC(10,2,21,22,0);
+       JMP_(DIRECT((StgRetAddr)(SpB[1])));
+       FE_
+}
+UNVECTBL(static,vtbl_c1Fu,ret_c1Fu)
+STATIC_ITBL(s1Bw_info,s1Bw_entry,StdErrorCode,1,-1,STATIC_VHS,0,static const,IF_,0,0,0);
+IFN_(s1Bw_entry) {
+ID_(s1Bw_closure);
+IF_(s1Bw_fast1);
+       FB_
+       ARGS_CHK_A_LOAD_NODE(1,s1Bw_closure);
+       R1.p=*SpA;
+       SpA=SpA+1;
+       GRAN_EXEC(5,2,1,0,0);
+       JMP_(s1Bw_fast1);
+       FE_
+}
+IFN_(s1Bw_fast1) {
+       FB_
+       STK_CHK(1,0,1,0,0,0,0);
+       SpB[1]=(W_)(RetReg);
+       RetReg=(StgRetAddr)UNVEC(ret_c1Fu,vtbl_c1Fu);
+       SpB=SpB+1;
+       ENT_VIA_NODE();
+       GRAN_EXEC(3,1,1,1,0);
+       JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p)))));
+       FE_
+}
+SET_STATIC_HDR(s1Bw_closure,s1Bw_info,0,static ,ID_RO_)
+};
+STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,(STATIC_VHS+
+                                                       2),0,const,EF_,0,0,0);
+FN_(Test_a_entry) {
+IF_(s1Bw_entry);
+       FB_
+       STK_CHK(1,0,4,0,0,0,1);
+       HEAP_CHK(1,(BH_HS+2),1);
+       SET_BH_HDR(Hp-(BH_HS+1),BH_UPD_info,0,(BH_VHS+2),0);
+       UPD_CAF(R1.p,Hp-(BH_HS+1));
+       PUSH_STD_UPD_FRAME(Hp-(BH_HS+1),0,0);
+       RetReg=StdUpdRetVecReg;
+       SpB=SpB+4;
+       GRAN_EXEC(16,2,1,8,0);
+       JMP_(s1Bw_entry);
+       FE_
+}
+SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_)
+  , (W_)0, (W_)0
+};
+ghc: module version changed to 1; reason: no old .hi file
index 6dee399..42d1260 100644 (file)
@@ -1,7 +1,7 @@
---!!! cc004 -- ccall with synonyms, polymorphic type variables and user type variables.
+--!!! cc007 -- ccall with synonyms, polymorphic type variables and user type variables.
 module Test where
 
-import PreludeGlaST
+import GlaExts
 
 -- Since I messed up the handling of polymorphism originally, I'll
 -- explicitly test code with UserSysTyVar (ie an explicit polymorphic
@@ -10,16 +10,14 @@ import PreludeGlaST
 foo = _ccall_ f        `thenADR` \ a -> returnPrimIO (a + 1)
  where 
    thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   m `thenADR` k  = \ s -> case m s of
-                         (a,t) -> k a t
+   thenADR = thenPrimIO
 
 -- and with a PolySysTyVar (ie no explicit signature)
 
 bar = _ccall_ f        `thenADR` \ a -> returnPrimIO (a + 1)
  where 
    -- thenADR :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
-   m `thenADR` k  = \ s -> case m s of
-                         (a,t) -> k a t
+   thenADR = thenPrimIO
 
 -- and with a type synonym
 
index e69de29..a5da32e 100644 (file)
@@ -0,0 +1,9 @@
+cc007.hs:2: Cannot generalise these overloadings (in a _ccall_):
+               `Foreign.CReturnable t{-a12t-}'
+cc007.hs:2: Cannot generalise these overloadings (in a _ccall_):
+               `Foreign.CReturnable t{-a13c-}'
+
+
+Compilation had errors
index 829a772..76a64e1 100644 (file)
@@ -1,13 +1,21 @@
 TOP = ../../..
 include $(TOP)/mk/boilerplate.mk
 
-SRCS = $(wildcard *.hs)
-HS_PROG = ds040
+HS_SRCS = $(wildcard *.hs)
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
 
-PROG : $(SRCS)
+ds014a_RUNTEST_OPTS = -x 1
+ds025_RUNTEST_OPTS  = -x 1
+ds035_RUNTEST_OPTS  = -x 1
+ds038_RUNTEST_OPTS  = -x 1
+ds040_RUNTEST_OPTS  = -x 1
 
-runtests :: $(wildcard *.hs)
-       @echo 'TODO: ds014a -- some things that should NOT go through'
+%.o : %.hs
+
+%.o : %.hs
+       $(RUNTEST) $(HC) $(RUNTEST_OPTS) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) 
+
+all :: $(HS_OBJS)
 
 #SUBDIRS = cvh-ds-unboxed
 
@@ -18,5 +26,4 @@ ds030_HC_OPTS = -dppr-all
 ds035_HC_OPTS = -fglasgow-exts
 ds039_HC_OPTS = -dppr-all
 
-
 include $(TOP)/mk/target.mk
index e69de29..07da869 100644 (file)
@@ -0,0 +1,19 @@
+
+
+================================================================================
+Desugared:
+Rec {
+x{-r1,x-}  :: 
+    _forall_ [t{-amE-}] => t{-amE-}
+{-# L #-}
+x{-r1,x-} =
+    _/\_ t{-amE-} ->
+       _letrec_ {
+         x_amC  :: 
+             t{-amE-}
+         {-# L #-}
+         x_amC =
+             x_amC;
+       } in 
+         x_amC
+end Rec }
index 6282a3e..cc34719 100644 (file)
-Desugared:
-Test.f :: for all d. d -> d
-Test.f = /\ o95 -> \ x.129 -> x.129
-Test.g :: for all d, e, f. d -> e -> f -> f
-Test.g = /\ o98 o99 t101 -> \ x.130 y.131 z.132 -> (Test.f t101) z.132
-Test.j :: for all d, e, f, g. d -> e -> f -> g -> g
-Test.j =
-    /\ t108 t109 o106 t110 -> \ w.133 x.134 y.135 z.136 ->
-       (((Test.g t108) t109) t110) w.133 x.134 z.136
-Test.h :: for all d, e, f. d -> f -> e -> f
-Test.h =
-    /\ o113 t119 t120 -> \ x.139 y.140 ->
-       let f.145 = /\ o141 o142 -> \ a.143 b.144 -> a.143
-       in  ((f.145 t119) t120) y.140
-Test.b :: for all d. d -> d
-Test.b = /\ t123 -> Test.f t123
-Test.a :: for all d. d -> d
-Test.a = /\ t126 -> Test.b t126
-{- plain CoRec -}
-Test.c :: for all d. d
-Test.c = /\ t127 -> Test.c t127
-{- end plain CoRec -}
 
+
+================================================================================
+Desugared:
+Rec {
+c{-r3I,x-}  :: 
+    _forall_ [t{-ang-}] => t{-ang-}
+{-# L #-}
+c{-r3I,x-} =
+    _/\_ t{-ang-} ->
+       _letrec_ {
+         c_ane  :: 
+             t{-ang-}
+         {-# L #-}
+         c_ane =
+             c_ane;
+       } in 
+         c_ane
+end Rec }
+h{-r3L,x-}  :: 
+    _forall_
+    [t{-anG-} t{-anC-} t{-anE-}]
+    =>
+    t{-anG-} -> t{-anC-} -> t{-anE-} -> t{-anC-}
+{-# L #-}
+h{-r3L,x-} =
+    _/\_ t{-anG-} t{-anC-} t{-anE-} -> \ x_r3z  :: 
+                                            t{-anG-}
+                                        {-# L #-}
+                                        x_r3z y_r3B  :: 
+                                                  t{-anC-}
+                                              {-# L #-}
+                                              y_r3B ->
+       let {
+         f_r3D  :: 
+             _forall_ [t{-any-} t{-anA-}] => t{-any-} -> t{-anA-} -> t{-any-}
+         {-# L #-}
+         f_r3D =
+             _/\_ t{-any-} t{-anA-} -> \ a_r3F  :: 
+                                             t{-any-}
+                                         {-# L #-}
+                                         a_r3F b_r3H  :: 
+                                                   t{-anA-}
+                                               {-# L #-}
+                                               b_r3H ->
+                 a_r3F
+       } in 
+         f_r3D
+             _@_ t{-anC-} _@_ t{-anE-} y_r3B
+f{-r3O,x-}  :: 
+    _forall_ [t{-anO-}] => t{-anO-} -> t{-anO-}
+{-# L #-}
+f{-r3O,x-} =
+    _/\_ t{-anO-} -> \ x_r3j  :: 
+                          t{-anO-}
+                      {-# L #-}
+                      x_r3j ->
+       x_r3j
+g{-r3N,x-}  :: 
+    _forall_
+    [t{-anW-} t{-ao2-} t{-ao4-}]
+    =>
+    t{-ao2-} -> t{-ao4-} -> t{-anW-} -> t{-anW-}
+{-# L #-}
+g{-r3N,x-} =
+    _/\_ t{-anW-} t{-ao2-} t{-ao4-} -> \ x_r3l  :: 
+                                            t{-ao2-}
+                                        {-# L #-}
+                                        x_r3l y_r3n  :: 
+                                                  t{-ao4-}
+                                              {-# L #-}
+                                              y_r3n z_r3p  :: 
+                                                        t{-anW-}
+                                                    {-# L #-}
+                                                    z_r3p ->
+       f{-r3O,x-}
+           _@_ t{-anW-} z_r3p
+j{-r3M,x-}  :: 
+    _forall_
+    [t{-aoe-} t{-aoh-} t{-aoj-} t{-aoo-}]
+    =>
+    t{-aoe-} -> t{-aoh-} -> t{-aoo-} -> t{-aoj-} -> t{-aoj-}
+{-# L #-}
+j{-r3M,x-} =
+    _/\_ t{-aoe-} t{-aoh-} t{-aoj-} t{-aoo-} -> \ w_r3r  :: 
+                                                     t{-aoe-}
+                                                 {-# L #-}
+                                                 w_r3r x_r3t  :: 
+                                                           t{-aoh-}
+                                                       {-# L #-}
+                                                       x_r3t y_r3v  :: 
+                                                                 t{-aoo-}
+                                                             {-# L #-}
+                                                             y_r3v z_r3x  :: 
+                                                                       t{-aoj-}
+                                                                   {-# L #-}
+                                                                   z_r3x ->
+       g{-r3N,x-}
+           _@_ t{-aoj-} _@_ t{-aoe-} _@_ t{-aoh-} w_r3r x_r3t z_r3x
+b{-r3J,x-}  :: 
+    _forall_ [t{-aou-}] => t{-aou-} -> t{-aou-}
+{-# L #-}
+b{-r3J,x-} =
+    _/\_ t{-aou-} ->
+       f{-r3O,x-}
+           _@_ t{-aou-}
+a{-r3K,x-}  :: 
+    _forall_ [t{-aoA-}] => t{-aoA-} -> t{-aoA-}
+{-# L #-}
+a{-r3K,x-} =
+    _/\_ t{-aoA-} ->
+       b{-r3J,x-}
+           _@_ t{-aoA-}
index 4cd3d62..5e6aeeb 100644 (file)
@@ -1,12 +1,74 @@
-Desugared:
-Test.f :: for all d. d -> d
-Test.f = /\ o88 -> \ x.104 -> x.104
-Test.g :: for all d, e, f. d -> e -> f -> f
-Test.g =
-    /\ o97 o98 t102 -> \ x.106 y.107 z.108 ->
-       let
-         fail.109 =
-             (error t102)
-                 "\"ds002.hs\", line 16: pattern-matching failure [function binding]\n"S
-       in  (Test.f t102) z.108
+ds002.hs:8: 
+    Warning: Pattern match(es) completely overlapped
+       in the definition of function `f'
+ds002.hs:9: 
+    Warning: Pattern match(es) completely overlapped
+       in the definition of function `f'
+ds002.hs:13: 
+    Warning: Possibly incomplete patterns
+       in the definition of function `g'
+
 
+================================================================================
+Desugared:
+f{-r3w,x-}  :: 
+    _forall_ [t{-an6-}] => t{-an6-} -> t{-an6-}
+{-# L #-}
+f{-r3w,x-} =
+    _/\_ t{-an6-} -> \ x_r3e  :: 
+                          t{-an6-}
+                      {-# L #-}
+                      x_r3e ->
+       x_r3e
+g{-r3v,x-}  :: 
+    _forall_
+    [t{-anr-} t{-anA-} t{-anC-}]
+    =>
+    t{-anA-} -> t{-anC-} -> t{-anr-} -> t{-anr-}
+{-# L #-}
+g{-r3v,x-} =
+    _/\_ t{-anr-} t{-anA-} t{-anC-} -> \ x_r3k  :: 
+                                            t{-anA-}
+                                        {-# L #-}
+                                        x_r3k y_r3m  :: 
+                                                  t{-anC-}
+                                              {-# L #-}
+                                              y_r3m z_r3o  :: 
+                                                        t{-anr-}
+                                                    {-# L #-}
+                                                    z_r3o ->
+       let {
+         fail_drB  :: 
+             t{-anr-}
+         {-# L #-}
+         fail_drB =
+             GHCerr.patError{-8r,p-}
+                 _@_ t{-anr-} _string_ "ds002.hs:11|function `g'" } in
+       let { fail_drG  :: 
+                 t{-anr-}
+             {-# L #-}
+             fail_drG =
+         let {
+           z_r3u  :: 
+               t{-anr-}
+           {-# L #-}
+           z_r3u =
+               z_r3o } in
+         let {
+           y_r3s  :: 
+               t{-anC-}
+           {-# L #-}
+           y_r3s =
+               y_r3m } in
+         let {
+           x_r3q  :: 
+               t{-anA-}
+           {-# L #-}
+           x_r3q =
+               x_r3k
+         } in 
+           f{-r3w,x-}
+               _@_ t{-anr-} z_r3u
+       } in
+       f{-r3w,x-}
+           _@_ t{-anr-} z_r3o
index da843e7..a5f1cb9 100644 (file)
@@ -1,61 +1,64 @@
+
+
+================================================================================
 Desugared:
-Test.f :: for all d, e, f, g. [d] -> (e, f) -> Bool -> [g]
-Test.f =
-    /\ t106 o107 o108 t113 -> \ ds.122 y.123 ds.124 ->
-       let
-         fail.125 =
-             (error [t113])
-                 "\"ds003.hs\", line 8: pattern-matching failure [function binding]\n"S in
-       let
-         fail.149 =
-             let
-               fail.142 =
-                   let
-                     fail.128 =
-                         case ds.124 of {
-                           True ->
-                               let y.126 = y.123 in
-                               let x.127 = ds.122 in  Nil! t113
-                           _ ->  fail.125
-                         }
-                   in 
-                     case ds.122 of {
-                       (:) x.129 ds.130 ->
-                           case ds.130 of {
-                             (:) x1.131 ds.132 ->
-                                 case ds.132 of {
-                                   (:) x2.133 x3.134 ->
-                                       let z.135 = ds.124 in
-                                       let
-                                         y.138 =
-                                             case y.123 of {
-                                               MkTuple2 y.136 ys.137 -> y.136
-                                             } in
-                                       let
-                                         ys.141 =
-                                             case y.123 of {
-                                               MkTuple2 y.139 ys.140 -> ys.140
-                                             }
-                                       in  Nil! t113
-                                   _ ->  fail.128
-                                 }
-                             _ ->  fail.128
-                           }
-                       _ ->  fail.128
-                     }
-             in 
-               case y.123 of {
-                 MkTuple2 y.143 ys.144 ->
-                     let z.146 = let z.145 = ds.124 in  z.145 in
-                     let a.147 = y.123 in let x.148 = ds.122 in  Nil! t113
-               }
-       in 
-         case ds.122 of {
-           Nil ->
-               case ds.124 of {
-                 True -> Nil! t113
-                 _ ->  fail.149
-               }
-           _ ->  fail.149
+f{-r3C,x-}  :: 
+    _forall_
+    [t{-aBt-} t{-aBF-} t{-aBI-} t{-aBS-}]
+    =>
+    [t{-aBt-}]
+    -> (t{-aBF-}, t{-aBI-})
+    -> PrelBase.Bool{-34,p-}
+    -> [t{-aBS-}]
+{-# L #-}
+f{-r3C,x-} =
+    _/\_ t{-aBt-} t{-aBF-} t{-aBI-} t{-aBS-} -> \ ds_dGi  :: 
+                                                     [t{-aBt-}]
+                                                 {-# L #-}
+                                                 ds_dGi y_r3e  :: 
+                                                            (t{-aBF-}, t{-aBI-})
+                                                        {-# L #-}
+                                                        y_r3e ds_dGj  :: 
+                                                                  PrelBase.Bool{-34,p-}
+                                                              {-# L #-}
+                                                              ds_dGj ->
+       let {
+         fail_dGE  :: 
+             [t{-aBS-}]
+         {-# L #-}
+         fail_dGE =
+             case y_r3e of { PrelTup.(,){-62,p-}{i} y_r3k ys_r3l  ->
+             let {
+               z_r3n  :: 
+                   PrelBase.Bool{-34,p-}
+               {-# L #-}
+               z_r3n =
+                   ds_dGj } in
+             let {
+               a_r3j  :: 
+                   (t{-aBF-}, t{-aBI-})
+               {-# L #-}
+               a_r3j =
+                   y_r3e } in
+             let {
+               x_r3h  :: 
+                   [t{-aBt-}]
+               {-# L #-}
+               x_r3h =
+                   ds_dGi
+             } in 
+               PrelBase.[]{-5i,p-}{i}
+                   _@_ t{-aBS-};}
+       } in 
+         case ds_dGi of {
+           PrelBase.:{-55,p-}{i} ds_dGM ds_dGL ->
+               fail_dGE;
+           PrelBase.[]{-5i,p-}{i} ->
+               case ds_dGj of {
+                 PrelBase.False{-58,p-}{i} ->
+                     fail_dGE;
+                 PrelBase.True{-5E,p-}{i} ->
+                     PrelBase.[]{-5i,p-}{i}
+                         _@_ t{-aBS-};
+               };
          }
-
index 5890e92..342da36 100644 (file)
-Desugared:
-{- plain CoRec -}
-Test.nodups :: for all d. <Eq d> -> [d] -> [d]
-Test.nodups =
-    /\ t95 -> \ dict.90 ds.103 ->
-       let
-         fail.104 =
-             (error [t95])
-                 "\"ds004.hs\", line 9: pattern-matching failure [function binding]\n"S
-       in 
-         case ds.103 of {
-           Nil -> Nil! t95
-           (:) x.105 ds.106 ->
-               case ds.106 of {
-                 Nil -> :! t95 x.105 (Nil! t95)
-                 (:) x.107 xs.108 ->
-                     let y.109 = x.105
-                     in 
-                       case ((== t95) dict.90 y.109 x.107) of {
-                         True ->
-                             (Test.nodups t95) dict.90 ((: t95) x.107 xs.108)
-                         False ->
-                             (: t95)
-                                 y.109
-                                 ((Test.nodups t95)
-                                      dict.90 ((: t95) x.107 xs.108))
-                       }
-               }
-         }
-{- end plain CoRec -}
+ds004.hs:6: 
+    Warning: Possibly incomplete patterns
+       in the definition of function `nodups'
+
 
+================================================================================
+Desugared:
+Rec {
+nodups{-r3j,x-}  :: 
+    _forall_
+    [t{-aGj-}]
+    =>
+    {PrelBase.Eq{-23,p-} t{-aGj-}} -> [t{-aGj-}] -> [t{-aGj-}]
+{-# L #-}
+nodups{-r3j,x-} =
+    _/\_ t{-aGj-} -> \ d.Eq_aGz  :: 
+                          {PrelBase.Eq{-23,p-} t{-aGj-}}
+                      {-# L #-}
+                      d.Eq_aGz ->
+       _letrec_ {
+         ==_aJI  :: 
+             t{-aGj-} -> t{-aGj-} -> PrelBase.Bool{-34,p-}
+         {-# L #-}
+         ==_aJI =
+             PrelBase.=={-8Y,p-}
+                 _@_ t{-aGj-} d.Eq_aGz;
+         nodups_aG4  :: 
+             [t{-aGj-}] -> [t{-aGj-}]
+         {-# L #-}
+         nodups_aG4 =
+             \ ds_dK8  :: 
+                   [t{-aGj-}]
+               {-# L #-}
+               ds_dK8 ->
+                 let {
+                   fail_dK9  :: 
+                       [t{-aGj-}]
+                   {-# L #-}
+                   fail_dK9 =
+                       GHCerr.patError{-8r,p-}
+                           _@_ [t{-aGj-}] _string_ "ds004.hs:6|function `nodups'"
+                 } in 
+                   case ds_dK8 of {
+                     PrelBase.[]{-5i,p-}{i} ->
+                         PrelBase.[]{-5i,p-}{i}
+                             _@_ t{-aGj-};
+                     PrelBase.:{-55,p-}{i} x_r3e ds_dKq ->
+                         case ds_dKq of {
+                           PrelBase.[]{-5i,p-}{i} ->
+                               let {
+                                 ds_dKG  :: 
+                                     [t{-aGj-}]
+                                 {-# L #-}
+                                 ds_dKG =
+                                     PrelBase.[]{-5i,p-}{i}
+                                         {_@_ t{-aGj-}}
+                               } in 
+                                 PrelBase.:{-55,p-}{i}
+                                     {_@_ t{-aGj-} x_r3e ds_dKG};
+                           PrelBase.:{-55,p-}{i} x_r3h xs_r3i ->
+                               let {
+                                 y_r3g  :: 
+                                     t{-aGj-}
+                                 {-# L #-}
+                                 y_r3g =
+                                     x_r3e
+                               } in 
+                                 case
+                                     ==_aJI
+                                         y_r3g x_r3h
+                                 of {
+                                   PrelBase.True{-5E,p-}{i} ->
+                                       let {
+                                         ds_dLd  :: 
+                                             [t{-aGj-}]
+                                         {-# L #-}
+                                         ds_dLd =
+                                             PrelBase.:{-55,p-}{i}
+                                                 _@_ t{-aGj-} x_r3h xs_r3i
+                                       } in 
+                                         nodups_aG4
+                                             ds_dLd;
+                                   PrelBase.False{-58,p-}{i} ->
+                                       let { ds_dLF  :: 
+                                                 [t{-aGj-}]
+                                             {-# L #-}
+                                             ds_dLF =
+                                         let {
+                                           ds_dLN  :: 
+                                               [t{-aGj-}]
+                                           {-# L #-}
+                                           ds_dLN =
+                                               PrelBase.:{-55,p-}{i}
+                                                   _@_ t{-aGj-} x_r3h xs_r3i
+                                         } in 
+                                           nodups_aG4
+                                               ds_dLN
+                                       } in
+                                       PrelBase.:{-55,p-}{i}
+                                           _@_ t{-aGj-} y_r3g ds_dLF;
+                                 };
+                         };
+                   };
+       } in 
+         nodups_aG4
+end Rec }
index 84c0664..75f16db 100644 (file)
+ds005.hs:13: 
+    Warning: Possibly incomplete patterns
+       in the definition of function `mappairs''
+
+
+================================================================================
 Desugared:
-{- plain CoRec -}
-MapPairs.mappairs :: for all d, e, f. (d -> e -> f) -> [d] -> [e] -> [f]
-MapPairs.mappairs =
-    /\ t109 t112 t105 -> \ f.146 ds.147 ys.148 ->
-       let
-         fail.149 =
-             (error [t105])
-                 "\"ds005.hs\", line 10: pattern-matching failure [function binding]\n"S
-       in 
-         case ds.147 of {
-           Nil -> Nil! t105
-           (:) x.150 xs.151 ->
-               case ys.148 of {
-                 Nil -> let f.152 = f.146 in  Nil! t105
-                 (:) y.153 ys.154 ->
-                     let xs.155 = xs.151 in
-                     let x.156 = x.150 in
-                     let f.157 = f.146
-                     in 
-                       (: t105)
-                           (f.157 x.156 y.153)
-                           ((((MapPairs.mappairs t109) t112) t105)
-                                f.157 xs.155 ys.154)
-               }
-         }
-{- end plain CoRec -}
-{- plain CoRec -}
-MapPairs.mappairs' :: for all d, e, f. (d -> e -> f) -> [d] -> [e] -> [f]
-MapPairs.mappairs' =
-    /\ t133 t136 t129 -> \ f.162 ds.163 ys.164 ->
-       let
-         fail.165 =
-             (error [t129])
-                 "\"ds005.hs\", line 15: pattern-matching failure [function binding]\n"S in
-       let
-         fail.174 =
-             let
-               fail.171 =
-                   case ds.163 of {
-                     (:) x.166 xs.167 ->
-                         case ys.164 of {
-                           (:) y.168 ys.169 ->
-                               let f.170 = f.162
-                               in 
-                                 (: t129)
-                                     (f.170 x.166 y.168)
-                                     ((((MapPairs.mappairs' t133) t136) t129)
-                                          f.170 xs.167 ys.169)
-                           _ ->  fail.165
+Rec {
+mappairs'{-r3O,x-}  :: 
+    _forall_
+    [t{-anl-} t{-anv-} t{-anx-}]
+    =>
+    (t{-anl-} -> t{-anv-} -> t{-anx-})
+    -> [t{-anl-}]
+    -> [t{-anv-}]
+    -> [t{-anx-}]
+{-# L #-}
+mappairs'{-r3O,x-} =
+    _/\_ t{-anl-} t{-anv-} t{-anx-} ->
+       _letrec_ {
+         mappairs'_anf  :: 
+             (t{-anl-} -> t{-anv-} -> t{-anx-})
+             -> [t{-anl-}]
+             -> [t{-anv-}]
+             -> [t{-anx-}]
+         {-# L #-}
+         mappairs'_anf =
+             \ f_r3x  :: 
+                   t{-anl-} -> t{-anv-} -> t{-anx-}
+               {-# L #-}
+               f_r3x ds_duS  :: 
+                         [t{-anl-}]
+                     {-# L #-}
+                     ds_duS ys_r3A  :: 
+                                [t{-anv-}]
+                            {-# L #-}
+                            ys_r3A ->
+                 let {
+                   fail_duT  :: 
+                       [t{-anx-}]
+                   {-# L #-}
+                   fail_duT =
+                       GHCerr.patError{-8r,p-}
+                           _@_ [t{-anx-}] _string_ "ds005.hs:13|function `mappairs''" } in
+                 let { fail_dwj  :: 
+                           [t{-anx-}]
+                       {-# L #-}
+                       fail_dwj =
+                   let {
+                     fail_dvV  :: 
+                         [t{-anx-}]
+                     {-# L #-}
+                     fail_dvV =
+                         case ds_duS of {
+                           PrelBase.[]{-5i,p-}{i} ->
+                               fail_duT;
+                           PrelBase.:{-55,p-}{i} x_r3J xs_r3K ->
+                               case ys_r3A of {
+                                 PrelBase.[]{-5i,p-}{i} ->
+                                     fail_duT;
+                                 PrelBase.:{-55,p-}{i} y_r3M ys_r3N ->
+                                     let {
+                                       f_r3H  :: 
+                                           t{-anl-} -> t{-anv-} -> t{-anx-}
+                                       {-# L #-}
+                                       f_r3H =
+                                           f_r3x } in
+                                     let {
+                                       ds_dvr  :: 
+                                           t{-anx-}
+                                       {-# L #-}
+                                       ds_dvr =
+                                           f_r3H
+                                               x_r3J y_r3M } in
+                                     let {
+                                       ds_dvv  :: 
+                                           [t{-anx-}]
+                                       {-# L #-}
+                                       ds_dvv =
+                                           mappairs'_anf
+                                               f_r3H xs_r3K ys_r3N
+                                     } in 
+                                       PrelBase.:{-55,p-}{i}
+                                           _@_ t{-anx-} ds_dvr ds_dvv;
+                               };
                          }
-                     _ ->  fail.165
-                   }
-             in 
-               case ys.164 of {
-                 Nil -> let x.172 = ds.163 in let f.173 = f.162 in  Nil! t129
-                 _ ->  fail.171
-               }
-       in 
-         case ds.163 of {
-           Nil -> Nil! t129
-           _ ->  fail.174
-         }
-{- end plain CoRec -}
-
+                   } in 
+                     case ys_r3A of {
+                       PrelBase.:{-55,p-}{i} ds_dw3 ds_dw2 ->
+                           fail_dvV;
+                       PrelBase.[]{-5i,p-}{i} ->
+                           let {
+                             x_r3E  :: 
+                                 [t{-anl-}]
+                             {-# L #-}
+                             x_r3E =
+                                 ds_duS } in
+                           let {
+                             f_r3C  :: 
+                                 t{-anl-} -> t{-anv-} -> t{-anx-}
+                             {-# L #-}
+                             f_r3C =
+                                 f_r3x
+                           } in 
+                             PrelBase.[]{-5i,p-}{i}
+                                 _@_ t{-anx-};
+                     }
+                 } in
+                 case ds_duS of {
+                   PrelBase.:{-55,p-}{i} ds_dwr ds_dwq ->
+                       fail_dwj;
+                   PrelBase.[]{-5i,p-}{i} ->
+                       PrelBase.[]{-5i,p-}{i}
+                           _@_ t{-anx-};
+                 };
+       } in 
+         mappairs'_anf
+end Rec }
+Rec {
+mappairs{-r3P,x-}  :: 
+    _forall_
+    [t{-aoc-} t{-aoh-} t{-aoj-}]
+    =>
+    (t{-aoc-} -> t{-aoh-} -> t{-aoj-})
+    -> [t{-aoc-}]
+    -> [t{-aoh-}]
+    -> [t{-aoj-}]
+{-# L #-}
+mappairs{-r3P,x-} =
+    _/\_ t{-aoc-} t{-aoh-} t{-aoj-} ->
+       _letrec_ {
+         mappairs_anX  :: 
+             (t{-aoc-} -> t{-aoh-} -> t{-aoj-})
+             -> [t{-aoc-}]
+             -> [t{-aoh-}]
+             -> [t{-aoj-}]
+         {-# L #-}
+         mappairs_anX =
+             \ f_r3e  :: 
+                   t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+               {-# L #-}
+               f_r3e ds_dx4  :: 
+                         [t{-aoc-}]
+                     {-# L #-}
+                     ds_dx4 ys_r3h  :: 
+                                [t{-aoh-}]
+                            {-# L #-}
+                            ys_r3h ->
+                 case ds_dx4 of {
+                   PrelBase.[]{-5i,p-}{i} ->
+                       PrelBase.[]{-5i,p-}{i}
+                           _@_ t{-aoj-};
+                   PrelBase.:{-55,p-}{i} x_r3l xs_r3m ->
+                       case ys_r3h of {
+                         PrelBase.[]{-5i,p-}{i} ->
+                             let {
+                               f_r3j  :: 
+                                   t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+                               {-# L #-}
+                               f_r3j =
+                                   f_r3e
+                             } in 
+                               PrelBase.[]{-5i,p-}{i}
+                                   _@_ t{-aoj-};
+                         PrelBase.:{-55,p-}{i} y_r3u ys_r3v ->
+                             let {
+                               xs_r3s  :: 
+                                   [t{-aoc-}]
+                               {-# L #-}
+                               xs_r3s =
+                                   xs_r3m } in
+                             let {
+                               x_r3r  :: 
+                                   t{-aoc-}
+                               {-# L #-}
+                               x_r3r =
+                                   x_r3l } in
+                             let {
+                               f_r3p  :: 
+                                   t{-aoc-} -> t{-aoh-} -> t{-aoj-}
+                               {-# L #-}
+                               f_r3p =
+                                   f_r3e } in
+                             let {
+                               ds_dxR  :: 
+                                   t{-aoj-}
+                               {-# L #-}
+                               ds_dxR =
+                                   f_r3p
+                                       x_r3r y_r3u } in
+                             let {
+                               ds_dxV  :: 
+                                   [t{-aoj-}]
+                               {-# L #-}
+                               ds_dxV =
+                                   mappairs_anX
+                                       f_r3p xs_r3s ys_r3v
+                             } in 
+                               PrelBase.:{-55,p-}{i}
+                                   _@_ t{-aoj-} ds_dxR ds_dxV;
+                       };
+                 };
+       } in 
+         mappairs_anX
+end Rec }
index 0db25c8..c6358f3 100644 (file)
@@ -1,19 +1,55 @@
-Desugared:
-Test.v :: for all d. <Num d> -> d
-Test.v =
-    /\ t78 -> \ dict.79 ->
-       let dict.77 = dict.79
-       in 
-         let
-           {- CoRec -}
-           v.75 =
-               let
-                 fail.81 =
-                     (error t78)
-                         "\"ds006.hs\", line 6: pattern-matching failure [function binding]\n"S
-               in 
-                 (+ t78)
-                     dict.77 v.75 ((fromInteger t78) dict.79 (MkInteger! 1##))
-           {- end CoRec -}
-         in  v.75
 
+
+================================================================================
+Desugared:
+Rec {
+d.Num_aHu  :: 
+    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+{-# L #-}
+d.Num_aHu =
+    PrelBase.$d3{-rb1,p-}
++_aJy  :: 
+    PrelBase.Int{-3g,p-}
+    -> PrelBase.Int{-3g,p-}
+    -> PrelBase.Int{-3g,p-}
+{-# L #-}
++_aJy =
+    PrelBase.+{-ras,p-}
+       _@_ PrelBase.Int{-3g,p-} d.Num_aHu
+d.Num_aHy  :: 
+    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+{-# L #-}
+d.Num_aHy =
+    d.Num_aHu
+fromInt_aJG  :: 
+    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+{-# L #-}
+fromInt_aJG =
+    PrelBase.fromInt{-8R,p-}
+       _@_ PrelBase.Int{-3g,p-} d.Num_aHy
+lit_aJF  :: 
+    PrelBase.Int{-3g,p-}
+{-# L #-}
+lit_aJF =
+    let {
+      ds_dKi  :: 
+         PrelBase.Int{-3g,p-}
+      {-# L #-}
+      ds_dKi =
+         PrelBase.I#{-5b,p-}{i}
+             1
+    } in 
+      fromInt_aJG
+         ds_dKi
+v_aHa  :: 
+    PrelBase.Int{-3g,p-}
+{-# L #-}
+v_aHa =
+    +_aJy
+       v_aHa lit_aJF
+v{-r1,x-}  :: 
+    PrelBase.Int{-3g,p-}
+{-# L #-}
+v{-r1,x-} =
+    v_aHa
+end Rec }
index fad21b7..32cef47 100644 (file)
@@ -1,7 +1,28 @@
-Desugared:
-ShouldSucceed.w :: for all d. [d]
-ShouldSucceed.w =
-    /\ t84 ->
-       let y.86 = /\ t85 -> Nil! t85 in
-       let a.88 = /\ t87 -> y.86 t87 in  a.88 t84
 
+
+================================================================================
+Desugared:
+w{-r3f,x-}  :: 
+    _forall_ [t{-amV-}] => [t{-amV-}]
+{-# L #-}
+w{-r3f,x-} =
+    _/\_ t{-amV-} ->
+       let {
+         y_r3e  :: 
+             _forall_ [t{-amM-}] => [t{-amM-}]
+         {-# L #-}
+         y_r3e =
+             _/\_ t{-amM-} ->
+                 PrelBase.[]{-5i,p-}{i}
+                     _@_ t{-amM-} } in
+       let {
+         a_r3d  :: 
+             _forall_ [t{-amT-}] => [t{-amT-}]
+         {-# L #-}
+         a_r3d =
+             _/\_ t{-amT-} ->
+                 y_r3e
+                     _@_ t{-amT-}
+       } in 
+         a_r3d
+             _@_ t{-amV-}
index 240c477..7ca5532 100644 (file)
-Desugared:
-Test.f :: for all d, e. d -> [e]
-Test.f = /\ o81 t82 -> \ x.102 -> Nil! t82
-Test.g :: for all d, e, f, g, h. d -> ([e], [f], [g], [h])
-Test.g =
-    /\ o85 t87 t89 t90 t91 -> \ x.103 ->
-       MkTuple4!
-           [t87]
-           [t89]
-           [t90]
-           [t91]
-           (((Test.f [t88]) t87) (Nil! t88))
-           (Nil! t89)
-           (Nil! t90)
-           (Nil! t91)
-Test.h :: for all d, e, f, g, h. d -> ([e], [f], [g], [h])
-Test.h =
-    /\ o94 t96 t97 t98 t99 -> \ x.104 ->
-       (((((Test.g Int) t96) t97) t98) t99)
-           (let dict.105 = dfun.Num.Int in  MkInt! 1#)
 
+
+================================================================================
+Desugared:
+Rec {
+d.Num_aY4  :: 
+    {PrelBase.Num{-2c,p-} PrelBase.Int{-3g,p-}}
+{-# L #-}
+d.Num_aY4 =
+    PrelBase.$d3{-rbb,p-}
+fromInt_a117  :: 
+    PrelBase.Int{-3g,p-} -> PrelBase.Int{-3g,p-}
+{-# L #-}
+fromInt_a117 =
+    PrelBase.fromInt{-8R,p-}
+       _@_ PrelBase.Int{-3g,p-} d.Num_aY4
+lit_a11e  :: 
+    PrelBase.Int{-3g,p-}
+{-# L #-}
+lit_a11e =
+    let {
+      ds_d11D  :: 
+         PrelBase.Int{-3g,p-}
+      {-# L #-}
+      ds_d11D =
+         PrelBase.I#{-5b,p-}{i}
+             1
+    } in 
+      fromInt_a117
+         ds_d11D
+f{-r3m,x-}  :: 
+    _forall_ [t{-aXj-} t{-aXh-}] => t{-aXj-} -> [t{-aXh-}]
+{-# L #-}
+f{-r3m,x-} =
+    _/\_ t{-aXj-} t{-aXh-} -> \ x_r3f  :: 
+                                   t{-aXj-}
+                               {-# L #-}
+                               x_r3f ->
+       PrelBase.[]{-5i,p-}{i}
+           _@_ t{-aXh-}
+g{-r3l,x-}  :: 
+    _forall_
+    [t{-aXD-} t{-aXv-} t{-aXx-} t{-aXz-} t{-aXB-}]
+    =>
+    t{-aXD-} -> ([t{-aXv-}], [t{-aXx-}], [t{-aXz-}], [t{-aXB-}])
+{-# L #-}
+g{-r3l,x-} =
+    _/\_ t{-aXD-} t{-aXv-} t{-aXx-} t{-aXz-} t{-aXB-} -> \ x_r3h  :: 
+                                                              t{-aXD-}
+                                                          {-# L #-}
+                                                          x_r3h ->
+       let { ds_d12o  :: 
+                 [t{-aXv-}]
+             {-# L #-}
+             ds_d12o =
+         let {
+           ds_d12M  :: 
+               [GHC.Void{-3T,p-}]
+           {-# L #-}
+           ds_d12M =
+               PrelBase.[]{-5i,p-}{i}
+                   _@_ GHC.Void{-3T,p-}
+         } in 
+           f{-r3m,x-}
+               _@_ [GHC.Void{-3T,p-}] _@_ t{-aXv-} ds_d12M
+       } in
+       let {
+         ds_d12s  :: 
+             [t{-aXx-}]
+         {-# L #-}
+         ds_d12s =
+             PrelBase.[]{-5i,p-}{i}
+                 _@_ t{-aXx-} } in
+       let {
+         ds_d12w  :: 
+             [t{-aXz-}]
+         {-# L #-}
+         ds_d12w =
+             PrelBase.[]{-5i,p-}{i}
+                 _@_ t{-aXz-} } in
+       let {
+         ds_d12A  :: 
+             [t{-aXB-}]
+         {-# L #-}
+         ds_d12A =
+             PrelBase.[]{-5i,p-}{i}
+                 _@_ t{-aXB-}
+       } in 
+         PrelTup.(,,,){-64,p-}{i}
+             {_@_ [t{-aXv-}]
+              _@_ [t{-aXx-}]
+              _@_ [t{-aXz-}]
+              _@_ [t{-aXB-}]
+              ds_d12o
+              ds_d12s
+              ds_d12w
+              ds_d12A}
+h{-r3k,x-}  :: 
+    _forall_
+    [t{-aY0-} t{-aXS-} t{-aXT-} t{-aXU-} t{-aXV-}]
+    =>
+    t{-aY0-} -> ([t{-aXS-}], [t{-aXT-}], [t{-aXU-}], [t{-aXV-}])
+{-# L #-}
+h{-r3k,x-} =
+    _/\_ t{-aY0-} t{-aXS-} t{-aXT-} t{-aXU-} t{-aXV-} -> \ x_r3j  :: 
+                                                              t{-aY0-}
+                                                          {-# L #-}
+                                                          x_r3j ->
+       g{-r3l,x-}
+           _@_ PrelBase.Int{-3g,p-}
+           _@_ t{-aXS-}
+           _@_ t{-aXT-}
+           _@_ t{-aXU-}
+           _@_ t{-aXV-}
+           lit_a11e
+end Rec }
index a60a3de..22fcc6f 100644 (file)
-Desugared:
-SimpleListComp.f :: for all d. [d] -> [d]
-SimpleListComp.f =
-    /\ t104 -> \ xs.145 ->
-       let
-         {- CoRec -}
-         ds.146 =
-             \ ds.147 ->
-                 case ds.147 of {
-                   Nil -> Nil t104
-                   (:) ds.148 ds.149 ->
-                       let x.150 = ds.148 in  (: t104) x.150 (ds.146 ds.149)
-                 }
-         {- end CoRec -}
-       in  ds.146 xs.145
-SimpleListComp.g :: for all d, e, f. [d] -> [e] -> [f] -> [(d, e, f)]
-SimpleListComp.g =
-    /\ t110 t111 t112 -> \ xs.163 ys.164 zs.165 ->
-       let
-         {- CoRec -}
-         ds.166 =
-             \ ds.167 ->
-                 case ds.167 of {
-                   Nil -> Nil (t110, t111, t112)
-                   (:) ds.168 ds.169 ->
-                       let x.170 = ds.168
-                       in 
-                         let
-                           {- CoRec -}
-                           ds.171 =
-                               \ ds.172 ->
-                                   case ds.172 of {
-                                     Nil -> ds.166 ds.169
-                                     (:) ds.173 ds.174 ->
-                                         let y.175 = ds.173
-                                         in 
-                                           let
-                                             {- CoRec -}
-                                             ds.176 =
-                                                 \ ds.177 ->
-                                                     case ds.177 of {
-                                                       Nil -> ds.171 ds.174
-                                                       (:) ds.178 ds.179 ->
-                                                           let z.180 = ds.178
-                                                           in 
-                                                             (: (t110,
-                                                                 t111,
-                                                                 t112))
-                                                                 (MkTuple3!
-                                                                      t110
-                                                                      t111
-                                                                      t112
-                                                                      x.170
-                                                                      y.175
-                                                                      z.180)
-                                                                 (ds.176 ds.179)
-                                                     }
-                                             {- end CoRec -}
-                                           in  ds.176 zs.165
-                                   }
-                           {- end CoRec -}
-                         in  ds.171 ys.164
-                 }
-         {- end CoRec -}
-       in  ds.166 xs.163
-SimpleListComp.h :: for all d. [d] -> [d] -> [[d]]
-SimpleListComp.h =
-    /\ t118 -> \ xs.189 ys.190 ->
-       let
-         {- CoRec -}
-         ds.191 =
-             \ ds.192 ->
-                 case ds.192 of {
-                   Nil -> Nil [t118]
-                   (:) ds.193 ds.194 ->
-                       let x.195 = ds.193
-                       in 
-                         let
-                           {- CoRec -}
-                           ds.196 =
-                               \ ds.197 ->
-                                   case ds.197 of {
-                                     Nil -> ds.191 ds.194
-                                     (:) ds.198 ds.199 ->
-                                         let y.200 = ds.198 in  ds.196 ds.199
-                                   }
-                           {- end CoRec -}
-                         in  ds.196 ys.190
-                 }
-         {- end CoRec -}
-       in  ds.191 xs.189
-SimpleListComp.i :: for all d, e. <Eq d> -> <Eq e> -> [([e], [d])] -> [[e]]
-SimpleListComp.i =
-    /\ t128 t127 -> \ dict.133 dict.132 ->
-       let dict.130 = (dfun.Eq.List t127) dict.132 in
-       let dict.131 = (dfun.Eq.List t128) dict.133 in
-       let dict.126 = ((dfun.Eq.Tuple2 [t127]) [t128]) dict.130 dict.131 in
-       let
-         i.120 =
-             \ xs.78 ->
-                 let
-                   {- CoRec -}
-                   ds.201 =
-                       \ ds.202 ->
-                           case ds.202 of {
-                             Nil -> Nil [t127]
-                             (:) ds.203 ds.204 ->
-                                 case ds.203 of {
-                                   MkTuple2 x.80 y.81 ->
-                                       let all.79 = ds.203
-                                       in 
-                                         case
-                                             ((== ([t127], [t128]))
-                                                  dict.126
-                                                  all.79
-                                                  (MkTuple2!
-                                                       [t127]
-                                                       [t128]
-                                                       (Nil! t127)
-                                                       (Nil! t128)))
-                                         of {
-                                           True ->
-                                               (: [t127]) x.80 (ds.201 ds.204)
-                                           False -> ds.201 ds.204
-                                         }
-                                 }
-                           }
-                   {- end CoRec -}
-                 in  ds.201 xs.78
-       in  i.120
-SimpleListComp.j :: for all d, e, f, g. [(f, g, d, e)] -> [(f, g)]
-SimpleListComp.j =
-    /\ t139 t140 t137 t138 -> \ xs.210 ->
-       let
-         {- CoRec -}
-         ds.211 =
-             \ ds.212 ->
-                 case ds.212 of {
-                   Nil -> Nil (t137, t138)
-                   (:) ds.213 ds.214 ->
-                       case ds.213 of {
-                         MkTuple4 a.215 b.216 c.217 d.218 ->
-                             (: (t137, t138))
-                                 (MkTuple2! t137 t138 a.215 b.216)
-                                 (ds.211 ds.214)
-                       }
-                 }
-         {- end CoRec -}
-       in  ds.211 xs.210
 
+
+================================================================================
+Desugared:
+j{-r3R,x-}  :: 
+    _forall_
+    [t{-aXD-} t{-aXG-} t{-aXJ-} t{-aXM-} a{-aXO-}]
+    =>
+    {PrelBase.Monad{-28,p-} a{-aXO-}}
+    -> a{-aXO-} (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
+    -> a{-aXO-} (t{-aXD-}, t{-aXG-})
+{-# L #-}
+j{-r3R,x-} =
+    _/\_ t{-aXD-} t{-aXG-} t{-aXJ-} t{-aXM-} a{-aXO-} -> \ d.Monad_aXY  :: 
+                                                              {PrelBase.Monad{-28,p-} a{-aXO-}}
+                                                          {-# L #-}
+                                                          d.Monad_aXY ->
+       let {
+         >>=_a1c0  :: 
+             _forall_
+             [rjI{-a107-} rjJ{-a106-}]
+             =>
+             a{-aXO-} rjI{-a107-}
+             -> (rjI{-a107-} -> a{-aXO-} rjJ{-a106-})
+             -> a{-aXO-} rjJ{-a106-}
+         {-# L #-}
+         >>=_a1c0 =
+             PrelBase.>>={-811,p-}
+                 _@_ a{-aXO-} d.Monad_aXY } in
+       let {
+         d.Monad_aY0  :: 
+             {PrelBase.Monad{-28,p-} a{-aXO-}}
+         {-# L #-}
+         d.Monad_aY0 =
+             d.Monad_aXY } in
+       let {
+         return_a1bZ  :: 
+             _forall_ [rjQ{-a108-}] => rjQ{-a108-} -> a{-aXO-} rjQ{-a108-}
+         {-# L #-}
+         return_a1bZ =
+             PrelBase.return{-816,p-}
+                 _@_ a{-aXO-} d.Monad_aY0
+       } in 
+         \ xs_r3L  :: 
+               a{-aXO-} (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
+           {-# L #-}
+           xs_r3L ->
+             let {
+               ds_d1cw  :: 
+                   (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
+                   -> a{-aXO-} (t{-aXD-}, t{-aXG-})
+               {-# L #-}
+               ds_d1cw =
+                   \ ds_d1cC  :: 
+                         (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
+                     {-# L #-}
+                     ds_d1cC ->
+                       case
+                           ds_d1cC
+                       of {
+                       PrelTup.(,,,){-64,p-}{i} a_r3N b_r3O c_r3P d_r3Q  ->
+                       let {
+                         ds_d1cQ  :: 
+                             (t{-aXD-}, t{-aXG-})
+                         {-# L #-}
+                         ds_d1cQ =
+                             PrelTup.(,){-62,p-}{i}
+                                 {_@_ t{-aXD-} _@_ t{-aXG-} a_r3N b_r3O}
+                       } in 
+                         return_a1bZ
+                             _@_ (t{-aXD-}, t{-aXG-}) ds_d1cQ;}
+             } in 
+               >>=_a1c0
+                   _@_ (t{-aXD-}, t{-aXG-}, t{-aXJ-}, t{-aXM-})
+                   _@_ (t{-aXD-}, t{-aXG-})
+                   xs_r3L
+                   ds_d1cw
+i{-r3S,x-}  :: 
+    _forall_
+    [a{-aYh-} t{-aYm-} t{-aYo-}]
+    =>
+    {PrelBase.Eq{-23,p-} t{-aYm-}}
+    -> {PrelBase.Eq{-23,p-} t{-aYo-}}
+    -> {PrelBase.MonadZero{-29,p-} a{-aYh-}}
+    -> a{-aYh-} ([t{-aYm-}], [t{-aYo-}])
+    -> a{-aYh-} [t{-aYm-}]
+{-# L #-}
+i{-r3S,x-} =
+    _/\_ a{-aYh-} t{-aYm-} t{-aYo-} -> \ d.Eq_aYC  :: 
+                                            {PrelBase.Eq{-23,p-} t{-aYm-}}
+                                        {-# L #-}
+                                        d.Eq_aYC d.Eq_aYF  :: 
+                                                     {PrelBase.Eq{-23,p-} t{-aYo-}}
+                                                 {-# L #-}
+                                                 d.Eq_aYF d.MonadZero_aYL  :: 
+                                                              {PrelBase.MonadZero{-29,p-} a{-aYh-}}
+                                                          {-# L #-}
+                                                          d.MonadZero_aYL ->
+       let {
+         d.Monad_aYH  :: 
+             {PrelBase.Monad{-28,p-} a{-aYh-}}
+         {-# L #-}
+         d.Monad_aYH =
+             PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
+                 _@_ a{-aYh-} d.MonadZero_aYL } in
+       let {
+         d.Eq_aYA  :: 
+             {PrelBase.Eq{-23,p-} [t{-aYm-}]}
+         {-# L #-}
+         d.Eq_aYA =
+             PrelBase.$d27{-rqA,p-}
+                 _@_ t{-aYm-} d.Eq_aYC } in
+       let {
+         d.Eq_aYD  :: 
+             {PrelBase.Eq{-23,p-} [t{-aYo-}]}
+         {-# L #-}
+         d.Eq_aYD =
+             PrelBase.$d27{-rqA,p-}
+                 _@_ t{-aYo-} d.Eq_aYF } in
+       let {
+         d.Eq_aYy  :: 
+             {PrelBase.Eq{-23,p-} ([t{-aYm-}], [t{-aYo-}])}
+         {-# L #-}
+         d.Eq_aYy =
+             PrelTup.$d9{-rq7,p-}
+                 _@_ [t{-aYm-}] _@_ [t{-aYo-}] d.Eq_aYA d.Eq_aYD } in
+       let {
+         ==_a1dH  :: 
+             ([t{-aYm-}], [t{-aYo-}])
+             -> ([t{-aYm-}], [t{-aYo-}])
+             -> PrelBase.Bool{-34,p-}
+         {-# L #-}
+         ==_a1dH =
+             PrelBase.=={-8Y,p-}
+                 _@_ ([t{-aYm-}], [t{-aYo-}]) d.Eq_aYy } in
+       let {
+         >>=_a1dG  :: 
+             _forall_
+             [rjI{-a10a-} rjJ{-a109-}]
+             =>
+             a{-aYh-} rjI{-a10a-}
+             -> (rjI{-a10a-} -> a{-aYh-} rjJ{-a109-})
+             -> a{-aYh-} rjJ{-a109-}
+         {-# L #-}
+         >>=_a1dG =
+             PrelBase.>>={-811,p-}
+                 _@_ a{-aYh-} d.Monad_aYH } in
+       let {
+         d.Monad_aYJ  :: 
+             {PrelBase.Monad{-28,p-} a{-aYh-}}
+         {-# L #-}
+         d.Monad_aYJ =
+             d.Monad_aYH } in
+       let {
+         return_a1dF  :: 
+             _forall_ [rjQ{-a10b-}] => rjQ{-a10b-} -> a{-aYh-} rjQ{-a10b-}
+         {-# L #-}
+         return_a1dF =
+             PrelBase.return{-816,p-}
+                 _@_ a{-aYh-} d.Monad_aYJ } in
+       let {
+         zero_a1dE  :: 
+             _forall_ [rjD{-a10c-}] => a{-aYh-} rjD{-a10c-}
+         {-# L #-}
+         zero_a1dE =
+             PrelBase.zero{-810,p-}
+                 _@_ a{-aYh-} d.MonadZero_aYL
+       } in 
+         \ xs_r3F  :: 
+               a{-aYh-} ([t{-aYm-}], [t{-aYo-}])
+           {-# L #-}
+           xs_r3F ->
+             let {
+               ds_d1f5  :: 
+                   ([t{-aYm-}], [t{-aYo-}]) -> a{-aYh-} [t{-aYm-}]
+               {-# L #-}
+               ds_d1f5 =
+                   \ all_r3H  :: 
+                         ([t{-aYm-}], [t{-aYo-}])
+                     {-# L #-}
+                     all_r3H ->
+                       case all_r3H of { PrelTup.(,){-62,p-}{i} x_r3I y_r3J  ->
+                       case
+                           let { ds_d1fr  :: 
+                                     ([t{-aYm-}], [t{-aYo-}])
+                                 {-# L #-}
+                                 ds_d1fr =
+                             let {
+                               ds_d1fE  :: 
+                                   [t{-aYm-}]
+                               {-# L #-}
+                               ds_d1fE =
+                                   PrelBase.[]{-5i,p-}{i}
+                                       _@_ t{-aYm-} } in
+                             let {
+                               ds_d1fI  :: 
+                                   [t{-aYo-}]
+                               {-# L #-}
+                               ds_d1fI =
+                                   PrelBase.[]{-5i,p-}{i}
+                                       _@_ t{-aYo-}
+                             } in 
+                               PrelTup.(,){-62,p-}{i}
+                                   {_@_ [t{-aYm-}] _@_ [t{-aYo-}] ds_d1fE ds_d1fI}
+                           } in
+                           ==_a1dH
+                               all_r3H ds_d1fr
+                       of {
+                         PrelBase.True{-5E,p-}{i} ->
+                             return_a1dF
+                                 _@_ [t{-aYm-}] x_r3I;
+                         PrelBase.False{-58,p-}{i} ->
+                             zero_a1dE
+                                 _@_ [t{-aYm-}];
+                       };}
+             } in 
+               >>=_a1dG
+                   _@_ ([t{-aYm-}], [t{-aYo-}]) _@_ [t{-aYm-}] xs_r3F ds_d1f5
+h{-r3T,x-}  :: 
+    _forall_
+    [a{-aYU-} t{-aYZ-}]
+    =>
+    {PrelBase.MonadZero{-29,p-} a{-aYU-}}
+    -> a{-aYU-} t{-aYZ-}
+    -> a{-aYU-} t{-aYZ-}
+    -> a{-aYU-} [t{-aYZ-}]
+{-# L #-}
+h{-r3T,x-} =
+    _/\_ a{-aYU-} t{-aYZ-} -> \ d.MonadZero_aZd  :: 
+                                   {PrelBase.MonadZero{-29,p-} a{-aYU-}}
+                               {-# L #-}
+                               d.MonadZero_aZd ->
+       let {
+         d.Monad_aZ9  :: 
+             {PrelBase.Monad{-28,p-} a{-aYU-}}
+         {-# L #-}
+         d.Monad_aZ9 =
+             PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
+                 _@_ a{-aYU-} d.MonadZero_aZd } in
+       let {
+         >>=_a1gH  :: 
+             _forall_
+             [rjI{-a10e-} rjJ{-a10d-}]
+             =>
+             a{-aYU-} rjI{-a10e-}
+             -> (rjI{-a10e-} -> a{-aYU-} rjJ{-a10d-})
+             -> a{-aYU-} rjJ{-a10d-}
+         {-# L #-}
+         >>=_a1gH =
+             PrelBase.>>={-811,p-}
+                 _@_ a{-aYU-} d.Monad_aZ9 } in
+       let {
+         d.Monad_aZb  :: 
+             {PrelBase.Monad{-28,p-} a{-aYU-}}
+         {-# L #-}
+         d.Monad_aZb =
+             d.Monad_aZ9 } in
+       let {
+         return_a1gG  :: 
+             _forall_ [rjQ{-a10f-}] => rjQ{-a10f-} -> a{-aYU-} rjQ{-a10f-}
+         {-# L #-}
+         return_a1gG =
+             PrelBase.return{-816,p-}
+                 _@_ a{-aYU-} d.Monad_aZb } in
+       let {
+         zero_a1gF  :: 
+             _forall_ [rjD{-a10g-}] => a{-aYU-} rjD{-a10g-}
+         {-# L #-}
+         zero_a1gF =
+             PrelBase.zero{-810,p-}
+                 _@_ a{-aYU-} d.MonadZero_aZd
+       } in 
+         \ xs_r3x  :: 
+               a{-aYU-} t{-aYZ-}
+           {-# L #-}
+           xs_r3x ys_r3z  :: 
+                      a{-aYU-} t{-aYZ-}
+                  {-# L #-}
+                  ys_r3z ->
+             let {
+               ds_d1hu  :: 
+                   t{-aYZ-} -> a{-aYU-} [t{-aYZ-}]
+               {-# L #-}
+               ds_d1hu =
+                   \ x_r3B  :: 
+                         t{-aYZ-}
+                     {-# L #-}
+                     x_r3B ->
+                       let {
+                         ds_d1hK  :: 
+                             t{-aYZ-} -> a{-aYU-} [t{-aYZ-}]
+                         {-# L #-}
+                         ds_d1hK =
+                             \ y_r3D  :: 
+                                   t{-aYZ-}
+                               {-# L #-}
+                               y_r3D ->
+                                 zero_a1gF
+                                     _@_ [t{-aYZ-}]
+                       } in 
+                         >>=_a1gH
+                             _@_ t{-aYZ-} _@_ [t{-aYZ-}] ys_r3z ds_d1hK
+             } in 
+               >>=_a1gH
+                   _@_ t{-aYZ-} _@_ [t{-aYZ-}] xs_r3x ds_d1hu
+g{-r3U,x-}  :: 
+    _forall_
+    [a{-aZn-} t{-aZp-} t{-aZs-} t{-aZv-}]
+    =>
+    {PrelBase.MonadZero{-29,p-} a{-aZn-}}
+    -> a{-aZn-} t{-aZp-}
+    -> a{-aZn-} t{-aZs-}
+    -> a{-aZn-} t{-aZv-}
+    -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+{-# L #-}
+g{-r3U,x-} =
+    _/\_ a{-aZn-} t{-aZp-} t{-aZs-} t{-aZv-} -> \ d.MonadZero_aZJ  :: 
+                                                     {PrelBase.MonadZero{-29,p-} a{-aZn-}}
+                                                 {-# L #-}
+                                                 d.MonadZero_aZJ ->
+       let {
+         d.Monad_aZF  :: 
+             {PrelBase.Monad{-28,p-} a{-aZn-}}
+         {-# L #-}
+         d.Monad_aZF =
+             PrelBase.scsel_MonadZeroPrelBaseMonad{-a1dR,p-}
+                 _@_ a{-aZn-} d.MonadZero_aZJ } in
+       let {
+         >>=_a1im  :: 
+             _forall_
+             [rjI{-a10i-} rjJ{-a10h-}]
+             =>
+             a{-aZn-} rjI{-a10i-}
+             -> (rjI{-a10i-} -> a{-aZn-} rjJ{-a10h-})
+             -> a{-aZn-} rjJ{-a10h-}
+         {-# L #-}
+         >>=_a1im =
+             PrelBase.>>={-811,p-}
+                 _@_ a{-aZn-} d.Monad_aZF } in
+       let {
+         d.Monad_aZH  :: 
+             {PrelBase.Monad{-28,p-} a{-aZn-}}
+         {-# L #-}
+         d.Monad_aZH =
+             d.Monad_aZF } in
+       let {
+         return_a1il  :: 
+             _forall_ [rjQ{-a10j-}] => rjQ{-a10j-} -> a{-aZn-} rjQ{-a10j-}
+         {-# L #-}
+         return_a1il =
+             PrelBase.return{-816,p-}
+                 _@_ a{-aZn-} d.Monad_aZH } in
+       let {
+         zero_a1ik  :: 
+             _forall_ [rjD{-a10k-}] => a{-aZn-} rjD{-a10k-}
+         {-# L #-}
+         zero_a1ik =
+             PrelBase.zero{-810,p-}
+                 _@_ a{-aZn-} d.MonadZero_aZJ
+       } in 
+         \ xs_r3l  :: 
+               a{-aZn-} t{-aZp-}
+           {-# L #-}
+           xs_r3l ys_r3n  :: 
+                      a{-aZn-} t{-aZs-}
+                  {-# L #-}
+                  ys_r3n zs_r3p  :: 
+                             a{-aZn-} t{-aZv-}
+                         {-# L #-}
+                         zs_r3p ->
+             let {
+               ds_d1ja  :: 
+                   t{-aZp-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+               {-# L #-}
+               ds_d1ja =
+                   \ x_r3r  :: 
+                         t{-aZp-}
+                     {-# L #-}
+                     x_r3r ->
+                       let {
+                         ds_d1jq  :: 
+                             t{-aZs-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+                         {-# L #-}
+                         ds_d1jq =
+                             \ y_r3t  :: 
+                                   t{-aZs-}
+                               {-# L #-}
+                               y_r3t ->
+                                 let {
+                                   ds_d1jG  :: 
+                                       t{-aZv-} -> a{-aZn-} (t{-aZp-}, t{-aZs-}, t{-aZv-})
+                                   {-# L #-}
+                                   ds_d1jG =
+                                       \ z_r3v  :: 
+                                             t{-aZv-}
+                                         {-# L #-}
+                                         z_r3v ->
+                                           let {
+                                             ds_d1jR  :: 
+                                                 (t{-aZp-}, t{-aZs-}, t{-aZv-})
+                                             {-# L #-}
+                                             ds_d1jR =
+                                                 PrelTup.(,,){-63,p-}{i}
+                                                     {_@_ t{-aZp-}
+                                                      _@_ t{-aZs-}
+                                                      _@_ t{-aZv-}
+                                                      x_r3r
+                                                      y_r3t
+                                                      z_r3v}
+                                           } in 
+                                             return_a1il
+                                                 _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) ds_d1jR
+                                 } in 
+                                   >>=_a1im
+                                       _@_ t{-aZv-}
+                                       _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-})
+                                       zs_r3p
+                                       ds_d1jG
+                       } in 
+                         >>=_a1im
+                             _@_ t{-aZs-} _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) ys_r3n ds_d1jq
+             } in 
+               >>=_a1im
+                   _@_ t{-aZp-} _@_ (t{-aZp-}, t{-aZs-}, t{-aZv-}) xs_r3l ds_d1ja
+f{-r3V,x-}  :: 
+    _forall_
+    [a{-aZR-} t{-aZT-}]
+    =>
+    {PrelBase.Monad{-28,p-} a{-aZR-}}
+    -> a{-aZR-} t{-aZT-}
+    -> a{-aZR-} t{-aZT-}
+{-# L #-}
+f{-r3V,x-} =
+    _/\_ a{-aZR-} t{-aZT-} -> \ d.Monad_a103  :: 
+                                   {PrelBase.Monad{-28,p-} a{-aZR-}}
+                               {-# L #-}
+                               d.Monad_a103 ->
+       let {
+         >>=_a1ky  :: 
+             _forall_
+             [rjI{-a10m-} rjJ{-a10l-}]
+             =>
+             a{-aZR-} rjI{-a10m-}
+             -> (rjI{-a10m-} -> a{-aZR-} rjJ{-a10l-})
+             -> a{-aZR-} rjJ{-a10l-}
+         {-# L #-}
+         >>=_a1ky =
+             PrelBase.>>={-811,p-}
+                 _@_ a{-aZR-} d.Monad_a103 } in
+       let {
+         d.Monad_a105  :: 
+             {PrelBase.Monad{-28,p-} a{-aZR-}}
+         {-# L #-}
+         d.Monad_a105 =
+             d.Monad_a103 } in
+       let {
+         return_a1kx  :: 
+             _forall_ [rjQ{-a10n-}] => rjQ{-a10n-} -> a{-aZR-} rjQ{-a10n-}
+         {-# L #-}
+         return_a1kx =
+             PrelBase.return{-816,p-}
+                 _@_ a{-aZR-} d.Monad_a105
+       } in 
+         \ xs_r3h  :: 
+               a{-aZR-} t{-aZT-}
+           {-# L #-}
+           xs_r3h ->
+             let {
+               ds_d1l4  :: 
+                   t{-aZT-} -> a{-aZR-} t{-aZT-}
+               {-# L #-}
+               ds_d1l4 =
+                   \ x_r3j  :: 
+                         t{-aZT-}
+                     {-# L #-}
+                     x_r3j ->
+                       return_a1kx
+                           _@_ t{-aZT-} x_r3j
+             } in 
+               >>=_a1ky
+                   _@_ t{-aZT-} _@_ t{-aZT-} xs_r3h ds_d1l4
index cfc1cae..35eedef 100644 (file)
+
+
+================================================================================
 Desugared:
-Test.z :: [(Char, Char, Char, Char, Char, Char, Char, Char, Char, Char)]
-Test.z =
-    let
-      {- CoRec -}
-      ds.136 =
-         \ ds.137 ->
-             case ds.137 of {
-               Nil ->
-                   Nil (Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char,
-                        Char)
-               (:) ds.138 ds.139 ->
-                   let a.140 = ds.138
-                   in 
-                     let
-                       {- CoRec -}
-                       ds.141 =
-                           \ ds.142 ->
-                               case ds.142 of {
-                                 Nil -> ds.136 ds.139
-                                 (:) ds.143 ds.144 ->
-                                     let b.145 = ds.143
-                                     in 
-                                       let
-                                         {- CoRec -}
-                                         ds.146 =
-                                             \ ds.147 ->
-                                                 case ds.147 of {
-                                                   Nil -> ds.141 ds.144
-                                                   (:) ds.148 ds.149 ->
-                                                       let c.150 = ds.148
-                                                       in 
-                                                         let
-                                                           {- CoRec -}
-                                                           ds.151 =
-                                                               \ ds.152 ->
-                                                                   case
-                                                                       ds.152
-                                                                   of {
-                                                                     Nil ->
-                                                                         ds.146
-                                                                             ds.149
-                                                                     (:) ds.153
-                                                                         ds.154 ->
-                                                                         let
-                                                                           d.155 =
-                                                                               ds.153
-                                                                         in 
-                                                                           let
-                                                                             {- CoRec -}
-                                                                             ds.156 =
-                                                                                 \ ds.157 ->
-                                                                                     case
-                                                                                         ds.157
-                                                                                     of {
-                                                                                       Nil ->
-                                                                                           ds.151
-                                                                                               ds.154
-                                                                                       (:) ds.158
-                                                                                           ds.159 ->
-                                                                                           let
-                                                                                             e.160 =
-                                                                                                 ds.158
-                                                                                           in 
-                                                                                             let
-                                                                                               {- CoRec -}
-                                                                                               ds.161 =
-                                                                                                   \ ds.162 ->
-                                                                                                       case
-                                                                                                           ds.162
-                                                                                                       of {
-                                                                                                         Nil ->
-                                                                                                             ds.156
-                                                                                                                 ds.159
-                                                                                                         (:) ds.163
-                                                                                                             ds.164 ->
-                                                                                                             let
-                                                                                                               f.165 =
-                                                                                                                   ds.163
-                                                                                                             in 
-                                                                                                               let
-                                                                                                                 {- CoRec -}
-                                                                                                                 ds.166 =
-                                                                                                                     \ ds.167 ->
-                                                                                                                         case
-                                                                                                                             ds.167
-                                                                                                                         of {
-                                                                                                                           Nil ->
-                                                                                                                               ds.161
-                                                                                                                                   ds.164
-                                                                                                                           (:) ds.168
-                                                                                                                               ds.169 ->
-                                                                                                                               let
-                                                                                                                                 g.170 =
-                                                                                                                                     ds.168
-                                                                                                                               in 
-                                                                                                                                 let
-                                                                                                                                   {- CoRec -}
-                                                                                                                                   ds.171 =
-                                                                                                                                       \ ds.172 ->
-                                                                                                                                           case
-                                                                                                                                               ds.172
-                                                                                                                                           of {
-                                                                                                                                             Nil ->
-                                                                                                                                                 ds.166
-                                                                                                                                                     ds.169
-                                                                                                                                             (:) ds.173
-                                                                                                                                                 ds.174 ->
-                                                                                                                                                 let
-                                                                                                                                                   h.175 =
-                                                                                                                                                       ds.173
-                                                                                                                                                 in 
-                                                                                                                                                   let
-                                                                                                                                                     {- CoRec -}
-                                                                                                                                                     ds.176 =
-                                                                                                                                                         \ ds.177 ->
+Rec {
+d.Monad_aWF  :: 
+    {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,p-}}
+{-# L #-}
+d.Monad_aWF =
+    PrelBase.$d24{-rq8,p-}
+>>=_a11I  :: 
+    _forall_
+    [rjI{-aWJ-} rjJ{-aWK-}]
+    =>
+    [rjI{-aWJ-}] -> (rjI{-aWJ-} -> [rjJ{-aWK-}]) -> [rjJ{-aWK-}]
+{-# L #-}
+>>=_a11I =
+    PrelBase.>>={-811,p-}
+       _@_ PrelBase.[]{-3j,p-} d.Monad_aWF
+d.Monad_aWI  :: 
+    {PrelBase.Monad{-28,p-} PrelBase.[]{-3j,p-}}
+{-# L #-}
+d.Monad_aWI =
+    d.Monad_aWF
+return_a11P  :: 
+    _forall_ [rjQ{-aWL-}] => rjQ{-aWL-} -> [rjQ{-aWL-}]
+{-# L #-}
+return_a11P =
+    PrelBase.return{-816,p-}
+       _@_ PrelBase.[]{-3j,p-} d.Monad_aWI
+z_aW0  :: 
+    [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+{-# L #-}
+z_aW0 =
+    _letrec_ {
+      ds_d12r  :: 
+         [PrelBase.Char{-38,p-}]
+         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+      {-# L #-}
+      ds_d12r =
+         \ ds_d12w  :: 
+               [PrelBase.Char{-38,p-}]
+           {-# L #-}
+           ds_d12w ->
+             case ds_d12w of {
+               PrelBase.[]{-5i,p-}{i} ->
+                   PrelBase.[]{-5i,p-}{i}
+                       {_@_ (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})};
+               PrelBase.:{-55,p-}{i} ds_d12I ds_d12R ->
+                   let {
+                     a_r3d  :: 
+                         PrelBase.Char{-38,p-}
+                     {-# L #-}
+                     a_r3d =
+                         ds_d12I } in
+                   _letrec_ {
+                     ds_d12X  :: 
+                         [PrelBase.Char{-38,p-}]
+                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                     {-# L #-}
+                     ds_d12X =
+                         \ ds_d132  :: 
+                               [PrelBase.Char{-38,p-}]
+                           {-# L #-}
+                           ds_d132 ->
+                             case ds_d132 of {
+                               PrelBase.[]{-5i,p-}{i} ->
+                                   ds_d12r
+                                       ds_d12R;
+                               PrelBase.:{-55,p-}{i} ds_d13h ds_d13q ->
+                                   let {
+                                     b_r3f  :: 
+                                         PrelBase.Char{-38,p-}
+                                     {-# L #-}
+                                     b_r3f =
+                                         ds_d13h } in
+                                   _letrec_ {
+                                     ds_d13w  :: 
+                                         [PrelBase.Char{-38,p-}]
+                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                     {-# L #-}
+                                     ds_d13w =
+                                         \ ds_d13B  :: 
+                                               [PrelBase.Char{-38,p-}]
+                                           {-# L #-}
+                                           ds_d13B ->
+                                             case ds_d13B of {
+                                               PrelBase.[]{-5i,p-}{i} ->
+                                                   ds_d12X
+                                                       ds_d13q;
+                                               PrelBase.:{-55,p-}{i} ds_d13Q ds_d13Z ->
+                                                   let {
+                                                     c_r3h  :: 
+                                                         PrelBase.Char{-38,p-}
+                                                     {-# L #-}
+                                                     c_r3h =
+                                                         ds_d13Q } in
+                                                   _letrec_ {
+                                                     ds_d145  :: 
+                                                         [PrelBase.Char{-38,p-}]
+                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                     {-# L #-}
+                                                     ds_d145 =
+                                                         \ ds_d14a  :: 
+                                                               [PrelBase.Char{-38,p-}]
+                                                           {-# L #-}
+                                                           ds_d14a ->
+                                                             case ds_d14a of {
+                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                   ds_d13w
+                                                                       ds_d13Z;
+                                                               PrelBase.:{-55,p-}{i} ds_d14p ds_d14y ->
+                                                                   let {
+                                                                     d_r3j  :: 
+                                                                         PrelBase.Char{-38,p-}
+                                                                     {-# L #-}
+                                                                     d_r3j =
+                                                                         ds_d14p } in
+                                                                   _letrec_ {
+                                                                     ds_d14E  :: 
+                                                                         [PrelBase.Char{-38,p-}]
+                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                     {-# L #-}
+                                                                     ds_d14E =
+                                                                         \ ds_d14J  :: 
+                                                                               [PrelBase.Char{-38,p-}]
+                                                                           {-# L #-}
+                                                                           ds_d14J ->
+                                                                             case ds_d14J of {
+                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                   ds_d145
+                                                                                       ds_d14y;
+                                                                               PrelBase.:{-55,p-}{i} ds_d14Y ds_d157 ->
+                                                                                   let {
+                                                                                     e_r3l  :: 
+                                                                                         PrelBase.Char{-38,p-}
+                                                                                     {-# L #-}
+                                                                                     e_r3l =
+                                                                                         ds_d14Y } in
+                                                                                   _letrec_ {
+                                                                                     ds_d15d  :: 
+                                                                                         [PrelBase.Char{-38,p-}]
+                                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                                     {-# L #-}
+                                                                                     ds_d15d =
+                                                                                         \ ds_d15i  :: 
+                                                                                               [PrelBase.Char{-38,p-}]
+                                                                                           {-# L #-}
+                                                                                           ds_d15i ->
+                                                                                             case
+                                                                                                 ds_d15i
+                                                                                             of {
+                                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                                   ds_d14E
+                                                                                                       ds_d157;
+                                                                                               PrelBase.:{-55,p-}{i} ds_d15x ds_d15G ->
+                                                                                                   let {
+                                                                                                     f_r3n  :: 
+                                                                                                         PrelBase.Char{-38,p-}
+                                                                                                     {-# L #-}
+                                                                                                     f_r3n =
+                                                                                                         ds_d15x } in
+                                                                                                   _letrec_ {
+                                                                                                     ds_d15M  :: 
+                                                                                                         [PrelBase.Char{-38,p-}]
+                                                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                                                     {-# L #-}
+                                                                                                     ds_d15M =
+                                                                                                         \ ds_d15R  :: 
+                                                                                                               [PrelBase.Char{-38,p-}]
+                                                                                                           {-# L #-}
+                                                                                                           ds_d15R ->
+                                                                                                             case
+                                                                                                                 ds_d15R
+                                                                                                             of {
+                                                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                                                   ds_d15d
+                                                                                                                       ds_d15G;
+                                                                                                               PrelBase.:{-55,p-}{i} ds_d166 ds_d16f ->
+                                                                                                                   let {
+                                                                                                                     g_r3p  :: 
+                                                                                                                         PrelBase.Char{-38,p-}
+                                                                                                                     {-# L #-}
+                                                                                                                     g_r3p =
+                                                                                                                         ds_d166 } in
+                                                                                                                   _letrec_ {
+                                                                                                                     ds_d16l  :: 
+                                                                                                                         [PrelBase.Char{-38,p-}]
+                                                                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                                                                     {-# L #-}
+                                                                                                                     ds_d16l =
+                                                                                                                         \ ds_d16q  :: 
+                                                                                                                               [PrelBase.Char{-38,p-}]
+                                                                                                                           {-# L #-}
+                                                                                                                           ds_d16q ->
+                                                                                                                             case
+                                                                                                                                 ds_d16q
+                                                                                                                             of {
+                                                                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                                                                   ds_d15M
+                                                                                                                                       ds_d16f;
+                                                                                                                               PrelBase.:{-55,p-}{i} ds_d16F ds_d16O ->
+                                                                                                                                   let {
+                                                                                                                                     h_r3r  :: 
+                                                                                                                                         PrelBase.Char{-38,p-}
+                                                                                                                                     {-# L #-}
+                                                                                                                                     h_r3r =
+                                                                                                                                         ds_d16F } in
+                                                                                                                                   _letrec_ {
+                                                                                                                                     ds_d16U  :: 
+                                                                                                                                         [PrelBase.Char{-38,p-}]
+                                                                                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                                                                                     {-# L #-}
+                                                                                                                                     ds_d16U =
+                                                                                                                                         \ ds_d16Z  :: 
+                                                                                                                                               [PrelBase.Char{-38,p-}]
+                                                                                                                                           {-# L #-}
+                                                                                                                                           ds_d16Z ->
+                                                                                                                                             case
+                                                                                                                                                 ds_d16Z
+                                                                                                                                             of {
+                                                                                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                                                                                   ds_d16l
+                                                                                                                                                       ds_d16O;
+                                                                                                                                               PrelBase.:{-55,p-}{i} ds_d17e ds_d17n ->
+                                                                                                                                                   let {
+                                                                                                                                                     i_r3t  :: 
+                                                                                                                                                         PrelBase.Char{-38,p-}
+                                                                                                                                                     {-# L #-}
+                                                                                                                                                     i_r3t =
+                                                                                                                                                         ds_d17e } in
+                                                                                                                                                   _letrec_ {
+                                                                                                                                                     ds_d17t  :: 
+                                                                                                                                                         [PrelBase.Char{-38,p-}]
+                                                                                                                                                         -> [(PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})]
+                                                                                                                                                     {-# L #-}
+                                                                                                                                                     ds_d17t =
+                                                                                                                                                         \ ds_d17y  :: 
+                                                                                                                                                               [PrelBase.Char{-38,p-}]
+                                                                                                                                                           {-# L #-}
+                                                                                                                                                           ds_d17y ->
                                                                                                                                                              case
-                                                                                                                                                                 ds.177
+                                                                                                                                                                 ds_d17y
                                                                                                                                                              of {
-                                                                                                                                                               Nil ->
-                                                                                                                                                                   ds.171
-                                                                                                                                                                       ds.174
-                                                                                                                                                               (:) ds.178
-                                                                                                                                                                   ds.179 ->
-                                                                                                                                                                   let
-                                                                                                                                                                     i.180 =
-                                                                                                                                                                         ds.178
-                                                                                                                                                                   in 
-                                                                                                                                                                     let
-                                                                                                                                                                       {- CoRec -}
-                                                                                                                                                                       ds.181 =
-                                                                                                                                                                           \ ds.182 ->
-                                                                                                                                                                               case
-                                                                                                                                                                                   ds.182
-                                                                                                                                                                               of {
-                                                                                                                                                                                 Nil ->
-                                                                                                                                                                                     ds.176
-                                                                                                                                                                                         ds.179
-                                                                                                                                                                                 (:) ds.183
-                                                                                                                                                                                     ds.184 ->
-                                                                                                                                                                                     let
-                                                                                                                                                                                       j.185 =
-                                                                                                                                                                                           ds.183
-                                                                                                                                                                                     in 
-                                                                                                                                                                                       (: (Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char,
-                                                                                                                                                                                           Char))
-                                                                                                                                                                                           (MkTuple10!
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                Char
-                                                                                                                                                                                                a.140
-                                                                                                                                                                                                b.145
-                                                                                                                                                                                                c.150
-                                                                                                                                                                                                d.155
-                                                                                                                                                                                                e.160
-                                                                                                                                                                                                f.165
-                                                                                                                                                                                                g.170
-                                                                                                                                                                                                h.175
-                                                                                                                                                                                                i.180
-                                                                                                                                                                                                j.185)
-                                                                                                                                                                                           (ds.181
-                                                                                                                                                                                                ds.184)
-                                                                                                                                                                               }
-                                                                                                                                                                       {- end CoRec -}
-                                                                                                                                                                     in 
-                                                                                                                                                                       ds.181
-                                                                                                                                                                           "12"S
-                                                                                                                                                             }
-                                                                                                                                                     {- end CoRec -}
-                                                                                                                                                   in 
-                                                                                                                                                     ds.176
-                                                                                                                                                         "12"S
-                                                                                                                                           }
-                                                                                                                                   {- end CoRec -}
-                                                                                                                                 in 
-                                                                                                                                   ds.171
-                                                                                                                                       "12"S
-                                                                                                                         }
-                                                                                                                 {- end CoRec -}
-                                                                                                               in 
-                                                                                                                 ds.166
-                                                                                                                     "12"S
-                                                                                                       }
-                                                                                               {- end CoRec -}
-                                                                                             in 
-                                                                                               ds.161
-                                                                                                   "12"S
-                                                                                     }
-                                                                             {- end CoRec -}
-                                                                           in 
-                                                                             ds.156
-                                                                                 "12"S
-                                                                   }
-                                                           {- end CoRec -}
-                                                         in  ds.151 "12"S
-                                                 }
-                                         {- end CoRec -}
-                                       in  ds.146 "12"S
-                               }
-                       {- end CoRec -}
-                     in  ds.141 "12"S
-             }
-      {- end CoRec -}
-    in  ds.136 "12"S
-
+                                                                                                                                                               PrelBase.[]{-5i,p-}{i} ->
+                                                                                                                                                                   ds_d16U
+                                                                                                                                                                       ds_d17n;
+                                                                                                                                                               PrelBase.:{-55,p-}{i} ds_d17N ds_d186 ->
+                                                                                                                                                                   let {
+                                                                                                                                                                     j_r3v  :: 
+                                                                                                                                                                         PrelBase.Char{-38,p-}
+                                                                                                                                                                     {-# L #-}
+                                                                                                                                                                     j_r3v =
+                                                                                                                                                                         ds_d17N } in
+                                                                                                                                                                   let {
+                                                                                                                                                                     ds_d17Z  :: 
+                                                                                                                                                                         (PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-}, PrelBase.Char{-38,p-})
+                                                                                                                                                                     {-# L #-}
+                                                                                                                                                                     ds_d17Z =
+                                                                                                                                                                         PrelTup.(,,,,,,,,,){-6a,p-}{i}
+                                                                                                                                                                             {_@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+                                                                                                                                                                              _@_ PrelBase.Char{-38,p-}
+