[project @ 1999-06-09 09:35:54 by simonpj]
authorsimonpj <unknown>
Wed, 9 Jun 1999 09:36:25 +0000 (09:36 +0000)
committersimonpj <unknown>
Wed, 9 Jun 1999 09:36:25 +0000 (09:36 +0000)
Lots of small fixes to ghc/tests

154 files changed:
ghc/tests/ccall/should_fail/cc001.stderr
ghc/tests/ccall/should_fail/cc002.stderr
ghc/tests/ccall/should_fail/cc004.stderr
ghc/tests/deSugar/should_compile/ds020.stderr
ghc/tests/deriving/should_fail/drvfail004.stderr
ghc/tests/deriving/should_fail/drvfail007.stderr
ghc/tests/lib/should_run/Makefile
ghc/tests/lib/should_run/enum01.stdout
ghc/tests/lib/should_run/stableptr001.hs
ghc/tests/lib/should_run/stableptr002.hs
ghc/tests/lib/should_run/stableptr003.hs
ghc/tests/lib/should_run/text001.hs [new file with mode: 0644]
ghc/tests/lib/should_run/text001.stdout [new file with mode: 0644]
ghc/tests/numeric/should_run/arith011.hs
ghc/tests/numeric/should_run/arith011.stdout
ghc/tests/programs/Makefile
ghc/tests/programs/barton-mangler-bug/Basic.hs
ghc/tests/programs/fast2haskell/Word.hs
ghc/tests/programs/fun_insts/Main.hs
ghc/tests/programs/jeff-bug/AQ.hs
ghc/tests/programs/jeff-bug/BoundedSet.hs
ghc/tests/programs/jeff-bug/Devices.hs
ghc/tests/programs/jeff-bug/PreludeSig.hs
ghc/tests/programs/jeff-bug/ROB_retire.hs
ghc/tests/programs/jeff-bug/STEx.hs
ghc/tests/programs/jeff-bug/Signal.hs
ghc/tests/programs/jeff-bug/Trans.hs
ghc/tests/programs/life_space_leak/Makefile
ghc/tests/programs/north_lias/Main.lhs
ghc/tests/programs/okeefe_neural/Main.hs
ghc/tests/reader/should_compile/MyList.hi
ghc/tests/reader/should_compile/read012.stderr
ghc/tests/reader/should_fail/expr001.hs
ghc/tests/reader/should_fail/expr001.stderr
ghc/tests/rename/should_fail/rnfail001.stderr
ghc/tests/rename/should_fail/rnfail002.stderr
ghc/tests/rename/should_fail/rnfail003.stderr
ghc/tests/rename/should_fail/rnfail004.stderr
ghc/tests/rename/should_fail/rnfail007.stderr
ghc/tests/rename/should_fail/rnfail008.stderr
ghc/tests/rename/should_fail/rnfail009.stderr
ghc/tests/rename/should_fail/rnfail010.stderr
ghc/tests/rename/should_fail/rnfail011.stderr
ghc/tests/rename/should_fail/rnfail012.stderr
ghc/tests/rename/should_fail/rnfail013.stderr
ghc/tests/rename/should_fail/rnfail014.stderr
ghc/tests/rename/should_fail/rnfail015.stderr
ghc/tests/typecheck/should_compile/tc001.stderr
ghc/tests/typecheck/should_compile/tc005.stderr
ghc/tests/typecheck/should_compile/tc008.stderr
ghc/tests/typecheck/should_compile/tc009.stderr
ghc/tests/typecheck/should_compile/tc034.stderr
ghc/tests/typecheck/should_compile/tc038.stderr
ghc/tests/typecheck/should_compile/tc048.stderr
ghc/tests/typecheck/should_compile/tc049.stderr
ghc/tests/typecheck/should_compile/tc050.stderr
ghc/tests/typecheck/should_compile/tc052.stderr
ghc/tests/typecheck/should_compile/tc053.stderr
ghc/tests/typecheck/should_compile/tc054.stderr
ghc/tests/typecheck/should_compile/tc056.stderr
ghc/tests/typecheck/should_compile/tc058.stderr
ghc/tests/typecheck/should_compile/tc059.stderr
ghc/tests/typecheck/should_compile/tc063.stderr
ghc/tests/typecheck/should_compile/tc065.hs
ghc/tests/typecheck/should_compile/tc068.stderr
ghc/tests/typecheck/should_compile/tc074.stderr
ghc/tests/typecheck/should_compile/tc077.stderr
ghc/tests/typecheck/should_compile/tc081.stderr
ghc/tests/typecheck/should_compile/tc084.stderr
ghc/tests/typecheck/should_compile/tc087.stderr
ghc/tests/typecheck/should_compile/tc088.hs
ghc/tests/typecheck/should_compile/tc088.stderr
ghc/tests/typecheck/should_compile/tc093.stderr
ghc/tests/typecheck/should_compile/tc095.stderr
ghc/tests/typecheck/should_compile/tc098.stderr
ghc/tests/typecheck/should_compile/tc100.stderr
ghc/tests/typecheck/should_fail/Digraph.stderr
ghc/tests/typecheck/should_fail/tcfail001.stderr
ghc/tests/typecheck/should_fail/tcfail002.stderr
ghc/tests/typecheck/should_fail/tcfail003.stderr
ghc/tests/typecheck/should_fail/tcfail004.stderr
ghc/tests/typecheck/should_fail/tcfail005.stderr
ghc/tests/typecheck/should_fail/tcfail006.stderr
ghc/tests/typecheck/should_fail/tcfail007.stderr
ghc/tests/typecheck/should_fail/tcfail008.stderr
ghc/tests/typecheck/should_fail/tcfail009.stderr
ghc/tests/typecheck/should_fail/tcfail010.stderr
ghc/tests/typecheck/should_fail/tcfail011.stderr
ghc/tests/typecheck/should_fail/tcfail012.stderr
ghc/tests/typecheck/should_fail/tcfail013.stderr
ghc/tests/typecheck/should_fail/tcfail014.stderr
ghc/tests/typecheck/should_fail/tcfail015.stderr
ghc/tests/typecheck/should_fail/tcfail016.stderr
ghc/tests/typecheck/should_fail/tcfail017.stderr
ghc/tests/typecheck/should_fail/tcfail018.stderr
ghc/tests/typecheck/should_fail/tcfail019.stderr
ghc/tests/typecheck/should_fail/tcfail020.stderr
ghc/tests/typecheck/should_fail/tcfail021.stderr
ghc/tests/typecheck/should_fail/tcfail023.stderr
ghc/tests/typecheck/should_fail/tcfail027.hs
ghc/tests/typecheck/should_fail/tcfail027.stderr
ghc/tests/typecheck/should_fail/tcfail028.hs
ghc/tests/typecheck/should_fail/tcfail028.stderr
ghc/tests/typecheck/should_fail/tcfail029.stderr
ghc/tests/typecheck/should_fail/tcfail030.hs
ghc/tests/typecheck/should_fail/tcfail030.stderr
ghc/tests/typecheck/should_fail/tcfail031.stderr
ghc/tests/typecheck/should_fail/tcfail032.stderr
ghc/tests/typecheck/should_fail/tcfail033.stderr
ghc/tests/typecheck/should_fail/tcfail034.stderr
ghc/tests/typecheck/should_fail/tcfail035.stderr
ghc/tests/typecheck/should_fail/tcfail036.stderr
ghc/tests/typecheck/should_fail/tcfail037.stderr
ghc/tests/typecheck/should_fail/tcfail038.stderr
ghc/tests/typecheck/should_fail/tcfail039.stderr
ghc/tests/typecheck/should_fail/tcfail040.stderr
ghc/tests/typecheck/should_fail/tcfail042.stderr
ghc/tests/typecheck/should_fail/tcfail043.hs
ghc/tests/typecheck/should_fail/tcfail043.stderr
ghc/tests/typecheck/should_fail/tcfail044.hs
ghc/tests/typecheck/should_fail/tcfail044.stderr
ghc/tests/typecheck/should_fail/tcfail045.stderr
ghc/tests/typecheck/should_fail/tcfail046.stderr
ghc/tests/typecheck/should_fail/tcfail047.stderr
ghc/tests/typecheck/should_fail/tcfail048.stderr
ghc/tests/typecheck/should_fail/tcfail049.stderr
ghc/tests/typecheck/should_fail/tcfail050.stderr
ghc/tests/typecheck/should_fail/tcfail051.stderr
ghc/tests/typecheck/should_fail/tcfail052.stderr
ghc/tests/typecheck/should_fail/tcfail053.hs
ghc/tests/typecheck/should_fail/tcfail053.stderr
ghc/tests/typecheck/should_fail/tcfail054.stderr
ghc/tests/typecheck/should_fail/tcfail055.stderr
ghc/tests/typecheck/should_fail/tcfail056.stderr
ghc/tests/typecheck/should_fail/tcfail057.stderr
ghc/tests/typecheck/should_fail/tcfail058.stderr
ghc/tests/typecheck/should_fail/tcfail061.stderr
ghc/tests/typecheck/should_fail/tcfail062.stderr
ghc/tests/typecheck/should_fail/tcfail065.stderr
ghc/tests/typecheck/should_fail/tcfail067.stderr
ghc/tests/typecheck/should_fail/tcfail068.stderr
ghc/tests/typecheck/should_fail/tcfail069.stderr
ghc/tests/typecheck/should_fail/tcfail070.hs
ghc/tests/typecheck/should_fail/tcfail070.stderr
ghc/tests/typecheck/should_fail/tcfail071.stderr
ghc/tests/typecheck/should_fail/tcfail072.stderr
ghc/tests/typecheck/should_fail/tcfail073.stderr
ghc/tests/typecheck/should_fail/tcfail074.stderr
ghc/tests/typecheck/should_fail/tcfail076.stderr
ghc/tests/typecheck/should_fail/tcfail077.stderr
ghc/tests/typecheck/should_fail/tcfail078.stderr
ghc/tests/typecheck/should_fail/tcfail079.stderr
ghc/tests/typecheck/should_fail/tcfail080.stderr
ghc/tests/typecheck/should_fail/tcfail081.stderr

index e959631..4388fc9 100644 (file)
@@ -1,7 +1,7 @@
 
 cc001.hs:5:
     Ambiguous type variable(s) `t'
-       in the constraint `PrelGHC.CCallable t'
+       in the constraint `CCallable t'
        arising from an argument in the _ccall_ to `foo', namely `(undefined ())' at cc001.hs:5
 
 Compilation had errors
index d41df55..26bc5d0 100644 (file)
@@ -1,6 +1,6 @@
 
 cc002.hs:10:
-    No instance for `PrelGHC.CReturnable ForeignObj'
+    No instance for `CReturnable ForeignObj'
        arising from the result of the _ccall_ to `a' at cc002.hs:10
 
 Compilation had errors
index 1b02c46..11f5d85 100644 (file)
@@ -1,11 +1,11 @@
 
 cc004.hs:2:
     Cannot generalise these overloadings (in a _ccall_):
-       `PrelGHC.CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:15
+       `CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:15
 
 cc004.hs:2:
     Cannot generalise these overloadings (in a _ccall_):
-       `PrelGHC.CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:8
+       `CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:8
 
 Compilation had errors
 
index 87ecde2..719bd5e 100644 (file)
@@ -11,4 +11,3 @@ ds020.hs:13: Pattern match(es) are overlapped in the definition of function `d':
 
 ds020.hs:19: Pattern match(es) are overlapped in the definition of function `f':
            f (x@~[]) = ...
-NOTE: Simplifier still going after 4 iterations; bailing out.
index 81978e9..3657e58 100644 (file)
@@ -9,3 +9,4 @@ drvfail004.hs:5:
     When checking the superclasses of an instance declaration
 
 Compilation had errors
+
index d8ee804..ae4b9bf 100644 (file)
@@ -4,3 +4,4 @@ drvfail007.hs:2:
     When deriving classes for `Foo'
 
 Compilation had errors
+
index ffb1f61..b65b4d9 100644 (file)
@@ -1,5 +1,5 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.11 1999/02/26 12:42:06 simonm Exp $
+# $Id: Makefile,v 1.12 1999/06/09 09:35:58 simonpj Exp $
 
 TOP = ../..
 include $(TOP)/mk/boilerplate.mk
@@ -11,6 +11,7 @@ packedstring001_HC_OPTS = -syslib misc
 
 exceptions001_HC_OPTS   = -fglasgow-exts -fno-warn-missing-methods
 stableptr002_HC_OPTS    = -fglasgow-exts
+stableptr003_HC_OPTS    = -fglasgow-exts
 list001_HC_OPTS         = -fglasgow-exts
 
 enum01_HC_OPTS         = -cpp -fglasgow-exts -H12m
index 6b4538e..436fa69 100644 (file)
@@ -60,12 +60,12 @@ Testing Enum Integer:
 Testing Enum Char: 
     (succ 'a') = 'b'
     (succ (minBound::Char)) = '\SOH'
-    (succ (maxBound::Char)) = error "Prelude.Enum.succ{Char}: tried to take `succ' of maxBound"
+    (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
     (pred 'b') = 'a'
     pred (maxBound::Char) = '\254'
-    pred (minBound::Char) = error "Prelude.Enum.pred{Char}: tried to to take `pred' of minBound"
+    pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
     (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\255"
-    (toEnum::Int->Char) (minBound::Int) = error "Prelude.Enum.toEnum{Char}: out of range: -2147483648"
+    (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument"
     (map fromEnum ['X',minBound,maxBound]) = [88,0,255]
     (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
     (take 7 ['\250' .. ]) = "\250\251\252\253\254\255"
@@ -93,14 +93,14 @@ Testing Enum Char:
     (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255"
     (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
 Testing Enum (): 
-    (succ ()) = error "Prelude.Enum.succ{()}: not possible"
-    (succ (minBound::())) = error "Prelude.Enum.succ{()}: not possible"
-    (succ (maxBound::())) = error "Prelude.Enum.succ{()}: not possible"
-    (pred ()) = error "Prelude.Enum.pred{()}: not possible"
-    (pred (minBound::())) = error "Prelude.Enum.pred{()}: not possible"
-    (pred (maxBound::())) = error "Prelude.Enum.pred{()}: not possible"
+    (succ ()) = error "Prelude.Enum.().succ: bad argment"
+    (succ (minBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (pred ()) = error "Prelude.Enum.().pred: bad argument"
+    (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
+    (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
     (toEnum 0)::() = ()
-    (toEnum 1)::() = error "Prelude.Enum.toEnum{()}: argument not 0"
+    (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
     (fromEnum ()) = 0
     ([()..]) = [()]
     ([(),()..]) = [()]
@@ -109,12 +109,12 @@ Testing Enum ():
 Testing Enum Ordering (derived): 
     (succ LT) = EQ
     (succ (minBound::Ordering)) = EQ
-    (succ (maxBound::Ordering)) = error "succ{Ordering}: tried to take `succ' of last tag in enumeration"
+    (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argment"
     (pred GT) = EQ
     (pred (maxBound::Ordering)) = EQ
-    (pred (minBound::Ordering)) = error "pred{Ordering}: tried to take `pred' of first tag in enumeration"
+    (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argment"
     (toEnum 0)::Ordering = LT
-    (toEnum 5)::Ordering = error "toEnum{Ordering}: tag (5) is outside of enumeration's range (0,2)"
+    (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argment"
     (fromEnum LT) = 0
     (fromEnum EQ) = 1
     (fromEnum GT) = 2
@@ -146,12 +146,12 @@ Testing Enum Ordering (derived):
 Testing Enum Bool: 
     (succ False) = True
     (succ (minBound::Bool)) = True
-    (succ (maxBound::Bool)) = error "succ{Bool}: tried to take `succ' of last tag in enumeration"
+    (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argment"
     (pred True) = False
     (pred (maxBound::Bool)) = False
-    (pred (minBound::Bool)) = error "pred{Bool}: tried to take `pred' of first tag in enumeration"
+    (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argment"
     (toEnum 0)::Bool = False
-    (toEnum 5)::Bool = error "toEnum{Bool}: tag (5) is outside of enumeration's range (0,1)"
+    (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argment"
     (fromEnum False) = 0
     (fromEnum True) = 1
     ([False ..]) = [False,True]
index 42ee1fe..98180b5 100644 (file)
@@ -3,6 +3,7 @@
 module Main where
 
 import Foreign
+import Stable
 
 -- simple test for building/dereferencing stable ptrs
 
index 3edcc6c..3cd3673 100644 (file)
@@ -1,6 +1,6 @@
 module Main where
 
-import PrelStable
+import Stable
 
 -- Testing callbacks: the initial haskell thread calls out to C with
 -- the address of a Haskell callback.  The C function runs the callback
index 81f12a5..ec3cfa8 100644 (file)
@@ -1,6 +1,6 @@
 module Main where
 
-import PrelStable
+import Stable
 
 main = do
   stable_list1 <- mapM makeStableName list
diff --git a/ghc/tests/lib/should_run/text001.hs b/ghc/tests/lib/should_run/text001.hs
new file mode 100644 (file)
index 0000000..18aab82
--- /dev/null
@@ -0,0 +1,15 @@
+{-     Bug report 28 May 99
+
+When compiled with ghc-4.02, everything's fine, it outputs "Value 7" as
+expected. But compiled with ghc-pre-4.03 it yields this error message.
+
+   Fail: Prelude.read: no parse
+-}
+
+module Main where
+
+data Msg = Value Int | Inc   deriving (Show, Read)
+  
+main = do let v = read "Value 7"::Msg
+          print v
+
diff --git a/ghc/tests/lib/should_run/text001.stdout b/ghc/tests/lib/should_run/text001.stdout
new file mode 100644 (file)
index 0000000..a0c7822
--- /dev/null
@@ -0,0 +1 @@
+Value 7
index b931228..903bc25 100644 (file)
@@ -10,6 +10,7 @@ main = test
 
 test :: IO ()
 test = do
+   testIntlikeNoBits "Int"    (0::Int)     
    testIntlike "Int8"   (0::Int8)     
    testIntlike "Int16"  (0::Int16)    
    testIntlike "Int32"  (0::Int32)    
@@ -17,8 +18,8 @@ test = do
    testIntlike "Word16" (0::Word16)   
    testIntlike "Word32" (0::Word32)   
 
-testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO ()
-testIntlike name zero = do
+testIntlikeNoBits :: (Bounded a, Integral a, Ix a, Read a) => String -> a -> IO ()
+testIntlikeNoBits name zero = do
   putStrLn $ "--------------------------------"
   putStrLn $ "--Testing " ++ name
   putStrLn $ "--------------------------------"
@@ -30,8 +31,13 @@ testIntlike name zero = do
   testNum      zero
   testReal     zero
   testIntegral zero
+
+
+testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO ()
+testIntlike name zero = do
+  testIntlikeNoBits name zero
   testBits     zero
-  putStrLn $ "--------------------------------"
+
 
 -- In all these tests, zero is a dummy element used to get
 -- the overloading to work
index 6b382ce..2ca8409 100644 (file)
@@ -1,4 +1,909 @@
 --------------------------------
+--Testing Int
+--------------------------------
+testBounded
+(2147483647,-2147483648,-2147483647)
+(2147483646,2147483647,-2147483648)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = -3 % 1
+toRational -2 = -2 % 1
+toRational -1 = -1 % 1
+toRational 0 = 0 % 1
+toRational 1 = 1 % 1
+toRational 2 = 2 % 1
+toRational 3 = 3 % 1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+#
+--------------------------------
 --Testing Int8
 --------------------------------
 testBounded
@@ -1357,7 +2262,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Int16
 --------------------------------
 testBounded
@@ -2716,7 +3620,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Int32
 --------------------------------
 testBounded
@@ -4075,7 +4978,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Word8
 --------------------------------
 testBounded
@@ -5434,7 +6336,6 @@ isSigned 2 = False
 isSigned 3 = False
 #
 --------------------------------
---------------------------------
 --Testing Word16
 --------------------------------
 testBounded
@@ -6793,7 +7694,6 @@ isSigned 2 = False
 isSigned 3 = False
 #
 --------------------------------
---------------------------------
 --Testing Word32
 --------------------------------
 testBounded
@@ -8151,4 +9051,3 @@ isSigned 1 = False
 isSigned 2 = False
 isSigned 3 = False
 #
---------------------------------
index 617e589..9844376 100644 (file)
@@ -1,7 +1,7 @@
 TOP = .
 include $(TOP)/mk/boilerplate.mk
 
-NOT_THESE = CVS mk Makefile \
+NOT_THESE = CVS mk Makefile
 
 NOT_THESE += hill_stk_oflow
 #      Correctly fails to terminate
@@ -9,7 +9,12 @@ NOT_THESE += hill_stk_oflow
 NOT_THESE += ipoole_spec_class
 #      Dialogue style IO
 
-#      areid_pass
+NOT_THESE += areid_pass
+#      Old-style I/O
+
+NOT_THESE += north_lias
+#      Deliberately causes divide by zero, and
+#      we can't catch that yet
 
 SUBDIRS = $(filter-out $(NOT_THESE), $(wildcard *))
 
index ad240f8..5b3d054 100644 (file)
@@ -18,7 +18,13 @@ instance Signal (->) where
 data {- (Physical a, Physical b) => -} SignalRep a b =
    FunctionRep (a -> b) |
    PieceContRep (PieceCont a b)
-   deriving (Eq, Show)
+
+instance Eq (SignalRep a b) where
+  (==) a b = error "No equality for SignalRep"
+
+instance Show (SignalRep a b) where
+  show sr = error "No show for SignalRep"
+
 instance Signal SignalRep where
   mapSignal (FunctionRep f) = mapSignal f
   mapSignal (PieceContRep f) = mapSignal f
@@ -64,7 +70,12 @@ data Event =
   TimeEvent Float | 
   FunctionEvent (Float -> Bool) |
   BurstEvent Int Event
-  deriving (Show)
+
+instance Show Event where
+  show (TimeEvent f) = "TimeEvent " ++ show f
+  show (FunctionEvent _) = "FunctionEvent"
+  show (BurstEvent i e)  = "BurstEvent " ++ show i ++ " " ++ show e
+
 instance Eq Event where
   (TimeEvent x) == (TimeEvent y) = x == y
   (BurstEvent i e) == (BurstEvent i' e') = (i' == i) && (e' == e)
index 4c7091c..9161622 100644 (file)
@@ -50,8 +50,8 @@ instance Num Word where
        Word x - Word y = case (w2i x) -# (w2i y) of z -> Word (i2w z)
        Word x * Word y = case (w2i x) *# (w2i y) of z -> Word (i2w z)
        negate (Word x) = case negateInt# (w2i x)  of z -> Word (i2w z)
-       fromInteger (J# a# s# d#)
-         = case integer2Int# a# s# d# of { z# ->
+       fromInteger i
+         = case fromInteger i of { I# z# ->
            Word (i2w z#) }
 
 instance Show Word where
index 286154c..fece8c9 100644 (file)
@@ -5,6 +5,9 @@ module Main where
 instance (Eq a, Eq b) => Eq (a->b)
  
 
+instance Show (a->b) where
+  show f = "<<function>>"
+
 instance (Num a, Num b) => Num (a->b) where
     f + g    = \x -> f x + g x
     negate f = \x -> - (f x)
index 397f96c..ec86a67 100644 (file)
@@ -150,7 +150,7 @@ iterateQueue q f
 
 update q n f 
   = do { x <- getQVal q n
-       ; setQVal q n $ map f x
+       ; setQVal q n $ fmap f x
        }
 
 -------------------------------------------------------------------------
index 0583ba6..b8e8caf 100644 (file)
@@ -14,7 +14,7 @@ module BoundedSet
 
 import LazyST
 import Prelude hiding (read)
-import List
+import List    hiding (insert)
 
 
 new        :: Int -> ST s (BoundedSet s a)
index 96a2940..fd3366c 100644 (file)
@@ -16,6 +16,7 @@ import LazyST
 import Instruction 
 
 import Array
+import Monad
 import StateArray
 import Ix
 
@@ -109,8 +110,8 @@ fetch (k,f,lim,memory@(range,_)) pc n
   buildPCs :: (Word w, Cell c, Register r, Instruction i) =>
             w -> (w,w) -> Trans i (c r w) -> Int -> [Trans i (c r w)]
   buildPCs k range pctrans n
-    = do p <- map getReg $ T.getDstPC pctrans
-         pc <- map getVal $ T.getDstPC pctrans
+    = do p <- fmap getReg $ T.getDstPC pctrans
+         pc <- fmap getVal $ T.getDstPC pctrans
          let pcs = filter (inRange range) $ take n [pc,pc+k .. ]
          return $ map (mkPC range) pcs
       `catchEx` []
@@ -138,7 +139,7 @@ instrsFetch n convert initContents pcs
              let x = getVal reg 
              guard $ ispc p
              return x
-           `catchEx` (error "ugh" ) --$ "getpc " ++ show t)
+           `catchEx` (error "ugh" ) -- $ "getpc " ++ show t)
       insertPCs pcs l = lift2 addPCs pcs l   
       addPCs x y = zipWith addPC x y
       addPC pc (Trans d o s l) = Trans d o s (loc pc:l)
@@ -290,7 +291,7 @@ pairRegFile bounds initVals writePorts readPorts
 
 -- I THINK THAT THIS ONE SHOULD GO...
 registers src1 src2 p
-  = unbundle2 $ map getContents arrResps
+  = unbundle2 $ fmap getContents arrResps
     where
       (writebackContents,writebackReg) = unbundle2 p
       arrResps = stateArray ((minBound,maxBound),[(minBound,maxBound,0)])
index f2cd610..b54bbbe 100644 (file)
@@ -1,8 +1,9 @@
 module PreludeSig where
 
-import Prelude(Ord,Bool,MonadZero,Int,($),(.))
+import Prelude(Ord,Bool,Int,($),(.))
 import qualified Prelude as P
 import qualified List
+import Monad
 import Signal
 
 -- Begin Signature ----------------------------------------------------
@@ -20,7 +21,7 @@ max :: Ord a => Signal a -> Signal a -> Signal a
 min :: Ord a => Signal a -> Signal a -> Signal a
 maximum :: Ord a => Signal [a] -> Signal a
 minimum :: Ord a => Signal [a] -> Signal a
-filter :: MonadZero c => (a -> Bool) -> Signal (c a) -> Signal (c a)
+filter :: MonadPlus c => (a -> Bool) -> Signal (c a) -> Signal (c a)
 partition :: (a -> Bool) -> Signal [a] -> (Signal [a],Signal [a])
 fst :: Signal (a,b) -> Signal a
 snd :: Signal (a,b) -> Signal b
@@ -44,7 +45,10 @@ maximum = lift1 P.maximum
 
 minimum = lift1 P.minimum
 
-filter x y = lift1 (P.filter x) y
+filter p y = lift1 filt y
+          where
+            filt m = do { x <- m;
+                          if p x then mzero else return x }
 
 partition x y = unbundle2 (lift1 (List.partition x) y )
 
index 0080259..b00c78d 100644 (file)
@@ -12,6 +12,7 @@ import AQ(AQ)
 import RAT(RAT)
 
 import DLX
+import Monad
 import Utils
 
 
index cb77722..76ed6fb 100644 (file)
@@ -1,5 +1,6 @@
 module STEx where
 import LazyST
+import Monad
 
 infixl 1 `handle`
 
@@ -13,7 +14,6 @@ infixl 1 `handle`
 {-data STEx s a-}
 
 {-instance Monad (STEx s)-}
-{-instance MonadZero (STEx s)-}
 {-instance MonadPlus (STEx s)-}
 
 -- c `handle` x, return x if c raises an exception
@@ -49,13 +49,11 @@ instance Monad (STEx s) where
                                       in z'
                             Nothing -> return Nothing
 
-instance MonadZero (STEx s) where
-       zero = liftEx zero
-
 instance MonadPlus (STEx s) where
-       (STEx x) ++ (STEx y) = STEx $ do x' <- x
-                                         y' <- y
-                                         return $ x' ++ y'
+       mzero = liftEx mzero
+       (STEx x) `mplus` (STEx y) = STEx $ do x' <- x
+                                             y' <- y
+                                             return $ mplus x' y'
 liftST x = STEx $ do {z <- x ; return $ return z}
 
 liftEx x = STEx $ return x
index 5498a26..c4b2040 100644 (file)
@@ -1,4 +1,5 @@
 module Signal where
+import Monad
 import LazyST
 import List
 import Random
@@ -212,7 +213,7 @@ instance Integral a => Integral (Signal a) where
 (*>=) = lift2 (>=)
 (*&&) = lift2 (&&)
 (*||) = lift2 (||)
-(*++) = lift2 (++)
+(*++) = lift2 mplus
 (*:)  = lift2 (:)
 
 data Then = Then
@@ -241,7 +242,7 @@ newtype Signal a = List [a]
         deriving Show
 
 instance Functor Signal where
-  map f ~(List as) = List (map f as)
+  fmap f ~(List as) = List (map f as)
 
 
 at ~(List l) n = l!!n
@@ -290,9 +291,11 @@ superscalar f (List input) = List (chop lens output)
 ------------------------------------------------------------------------
 -- Non-determinism
 
-integers = List . unsafePerformIO . randomIO 
+-- integers :: (Integer,Integer) -> Signal Integer
+integers rng = List (unsafePerformIO (do { g <- newStdGen ;
+                                          return (randomRs rng g) }))
 
-ints = map toInt . integers . toIntegers
+ints = fmap toInt . integers . toIntegers
     where
     toIntegers (x,y) = (toInteger x,toInteger y)
 
index 29c96c6..62cb987 100644 (file)
@@ -312,7 +312,7 @@ rawHazard (preceeding,following)
 filterDst f (Trans d _ _ _) = filter f d
 
 --added 19 Nov
-filterOut f = map (filter $ not . f)
+filterOut f = fmap (filter $ not . f)
 
 fillInCells cells bypassCells
   = repCells (\x y -> (not $ isAss y) && cellHazard x y) cells bypassCells
index cc14abc..00783e5 100644 (file)
@@ -1,7 +1,7 @@
 TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
-SRC_RUNTEST_OPTS += -prescript ./life.test
+SRC_RUNTEST_OPTS += -prescript "./life.test
 
 all :: runtest
 
index 3f4a437..46c2387 100644 (file)
@@ -17,7 +17,9 @@ used in expressions, but does not determine the characteristics.
 
 > maxInt, minInt :: Int
 > maxInt = maxBound
-> minInt = minBound
+> minInt = minBound + 1                -- NOTA BENE: this program does (minInt `rem` (-1)), and
+>                              -- that gives an exception if minInt = minBound,
+>                              -- because the result of the division is too big to fit
 
 > main  =  (initial_checks flp_parms . main_identities flp_parms .
 >           notification_checks flp_parms) (return ())
@@ -102,20 +104,20 @@ AN element has the form
 >     | i /= j  =  showits "Integer operation check number " .
 >                  showit test_number . showits " fails with " .
 >                  showit i . showits " ". showit j . new_line
->     | True    =  id
+>     | True    =  showits "Integer operation check number " . showit test_number . showits " ok " . new_line
 
 > equal_flp :: (RealFloat a) => (a, a, Int) -> Cont -> Cont
 > equal_flp (x, y, test_number)
 >     | x /= y  =  showits "Floating point operation check number " .
 >                  showit test_number . showits " fails" . new_line .
 >                  showit x . showits " " . showit y . new_line
->     | True    =  id
+>     | True    =  showits "Floating operation check number " . showit test_number . showits " ok " . new_line
 
 > test_true :: (Bool, Int) -> Cont -> Cont
 > test_true (b, test_number)
 >     | not b  =  showits "Predicate number " . showit test_number .
 >                 showits " fails " .  showit b . new_line
->     | True    =  id
+>     | True   =  showits "Predicate number " . showit test_number . showits " ok " . new_line
 
 > -- This procedure checks that sqrt(y*y) = y when y*y is exact 
 > check_exact_squares :: (RealFloat a) => FloatParms a -> Cont -> Cont
index 5c6cffa..35c5c82 100644 (file)
@@ -121,7 +121,7 @@ train pats i_h_wt i_h_ch h_o_wt h_o_ch epochs s =
           out_err = vscale (vsub out_pat out_act) out_act
           hid_err = vscale (vmmul out_err h_o_wt) hid_act
 
-main = ans
+main = putStrLn (show ans)
     where (in1,out1)   = head patterns
           nin          = length in1
           nhid         = nin
index b92cd0f..07777f3 100644 (file)
@@ -1,6 +1,5 @@
 __interface MyList 1 0 where
+__export MyList MyList{Empty ZCZCZC};
 import PrelBase 16 :: addr2Integer 1 foldr 1 int2Integer 1 integer_0 1 integer_1 1 integer_2 1 integer_m1 1;
 import PrelPack 15 :: packCStringzh 1 unpackAppendCStringzh 1 unpackCStringzh 1 unpackFoldrCStringzh 1 unpackNByteszh 1;
-__instimport IO ; __instimport PrelAddr ; __instimport PrelArr ; __instimport PrelBounded ; __instimport PrelCCall ; __instimport PrelConc ; __instimport PrelForeign ; __instimport PrelIOBase ; __instimport PrelNum ; __instimport PrelNumExtra ; __instimport PrelStable ; __instimport PrelTup ;
-__export MyList MyList{Empty ZCZCZC};
 2 data MyList a = Empty |  ZCZCZC (MyList a) (MyList a) ;
index e375ede..591ad12 100644 (file)
@@ -1 +1 @@
-ghc: module version changed to 1; reason: no old .hi file
+ghc: module version unchanged at 1
index 49853a7..03b34d9 100644 (file)
@@ -6,6 +6,7 @@ Date: Wed, 9 Oct 91 17:31:46 BST
 
 OK, I've fixed that little problem by disallowing,
 -}
+module Test where
 
 f x = x + if c then 1 else 2
 f x = x + 1::Int
index 8b8731c..53883ac 100644 (file)
@@ -1,13 +1,13 @@
 
 ==================== Reader ====================
-module Main where
+module Test where
 {- rec -}
 f x = x zp (if c then 1 else 2)
 f x = x zp 1 :: Int
 
 
 
-expr001.hs:10: Variable not in scope: `c'
+expr001.hs:11: Variable not in scope: `c'
 
 Compilation had errors
 
index 5f6ddc5..1b68fe4 100644 (file)
@@ -1,8 +1,7 @@
 
 rnfail001.hs:3:
     Conflicting definitions for `x'
-    in a pattern
-
+    in a pattern type-signature
 
 Compilation had errors
 
index 75ba87b..58f13b7 100644 (file)
@@ -4,6 +4,5 @@ rnfail002.hs:4:
        defined at rnfail002.hs:5
        defined at rnfail002.hs:6
 
-
 Compilation had errors
 
index 61ffb25..04fffdb 100644 (file)
@@ -4,6 +4,5 @@ rnfail003.hs:2:
        defined at rnfail003.hs:2
        defined at rnfail003.hs:4
 
-
 Compilation had errors
 
index 5a256e7..5019773 100644 (file)
@@ -7,6 +7,5 @@ rnfail004.hs:7:
     Conflicting definitions for `b'
     in a binding group
 
-
 Compilation had errors
 
index d3c6a49..4a25ef3 100644 (file)
@@ -1,6 +1,5 @@
 
-rnfail007.hs:3: Module `Main' must include a definition for `main'
-
+rnfail007.hs:3: Variable not in scope: `Main.main'
 
 Compilation had errors
 
index 044582f..deaaaaa 100644 (file)
@@ -1,6 +1,5 @@
 
 rnfail008.hs:18: Variable not in scope: `op3'
 
-
 Compilation had errors
 
index 066aaef..dd67a9f 100644 (file)
@@ -4,6 +4,5 @@ rnfail009.hs:1:
        defined at rnfail009.hs:3
        defined at rnfail009.hs:5
 
-
 Compilation had errors
 
index 2137a44..12e987c 100644 (file)
@@ -4,6 +4,5 @@ rnfail010.hs:2:
        defined at rnfail010.hs:2
        defined at rnfail010.hs:6
 
-
 Compilation had errors
 
index 5bae760..3b6fe95 100644 (file)
@@ -4,6 +4,5 @@ rnfail011.hs:2:
        defined at rnfail011.hs:2
        defined at rnfail011.hs:6
 
-
 Compilation had errors
 
index 0f5e86f..cd668c8 100644 (file)
@@ -4,6 +4,5 @@ rnfail012.hs:2:
        defined at rnfail012.hs:3
        defined at rnfail012.hs:9
 
-
 Compilation had errors
 
index 2e7f52a..f3079f5 100644 (file)
@@ -4,6 +4,5 @@ rnfail013.hs:3:
        defined at rnfail013.hs:7
        defined at rnfail013.hs:9
 
-
 Compilation had errors
 
index ed49f1d..30d68e9 100644 (file)
@@ -1,34 +1,18 @@
 
 rnfail014.hs:9:
-    The constraint `Eq a' does not mention any of
-       the universally quantified type variables {}
-       of the type `Eq Bool'
-    In the type signature for an instance decl
-
-rnfail014.hs:9:
-    The constraint `Eq a'
-       mentions type variables that do not appear in the type
-       `Eq Bool'
+    None of the type variable(s) in the constraint `Eq a'
+       appears in the type `Eq Bool'
     In the type signature for an instance decl
 
 rnfail014.hs:12:
-    The constraint `Eq a' does not mention any of
-       the universally quantified type variables {}
-       of the type `Int -> Int'
-    In the type signature for `f'
-
-rnfail014.hs:12:
-    The constraint `Eq a'
-       mentions type variables that do not appear in the type
-       `Int -> Int'
+    None of the type variable(s) in the constraint `Eq a'
+       appears in the type `Int -> Int'
     In the type signature for `f'
 
 rnfail014.hs:17:
-    The constraint `Eq a' does not mention any of
-       the universally quantified type variables {}
-       of the type `a -> a'
+    None of the type variable(s) in the constraint `Eq a'
+       appears in the type `a -> a'
     In the type signature for `op'
 
-
 Compilation had errors
 
index 184c750..1cb559f 100644 (file)
@@ -3,6 +3,5 @@ rnfail015.hs:9:
     Conflicting definitions for `TokLiteral'
     in the data type declaration for `Token'
 
-
 Compilation had errors
 
index 8763364..037caa1 100644 (file)
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed a;
-1 a :: __forall [a] => {PrelBase.Num a} -> a -> a ;
+1 a :: __forall [a] => {PrelNum.Num a} -> a -> a ;
index e18dd0f..1e957b8 100644 (file)
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed g;
-1 g :: __forall [t t1] => {PrelBase.Num t1} -> ([t1], t) -> t1 ;
+1 g :: __forall [t t1] => {PrelNum.Num t1} -> ([t1], t) -> t1 ;
index e2c095d..246a667 100644 (file)
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed n;
-1 n :: __forall [t] => {PrelBase.Num t} -> PrelBase.Bool -> t ;
+1 n :: __forall [t] => {PrelNum.Num t} -> PrelBase.Bool -> t ;
index 2b9b120..2ce12af 100644 (file)
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed o;
-1 o :: __forall [a] => {PrelBase.Num a} -> (PrelBase.Bool, a) -> a ;
+1 o :: __forall [a] => {PrelNum.Num a} -> (PrelBase.Bool, a) -> a ;
index 1fddd61..ff8612f 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed AList{ANull ANode} IntList g;
 1 data AList a = ANull |  ANode a (AList a) ;
-1 g :: __forall [t] => {PrelBase.Num t} -> AList PrelBase.Bool -> t ;
+1 g :: __forall [t] => {PrelNum.Num t} -> AList PrelBase.Bool -> t ;
 1 type IntList = AList PrelBase.Int ;
index e8da6c2..3eccaf2 100644 (file)
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f;
-1 f :: __forall [a] => {PrelBase.Num a} -> {PrelBase.Eq a} -> [a] -> [a] ;
+1 f :: __forall [a] => {PrelNum.Num a} -> {PrelBase.Eq a} -> [a] -> [a] ;
index 4a33211..c3f5a8d 100644 (file)
@@ -1,9 +1,9 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed AFE{MkAFE} FG{MkFG} OL{MkOL} mAp ranAFE ranOAL sNd;
-1 data AFE n a b = MkAFE (OL (n, FG a b)) ;
-1 data FG a b = MkFG (OL (a, b)) ;
+1 data AFE n a b = MkAFE (OL  (n, FG  a b)) ;
+1 data FG a b = MkFG (OL  (a, b)) ;
 1 data OL a = MkOL [a] ;
 1 mAp :: __forall [t t1] => (t -> t1) -> [t] -> [t1] ;
-1 ranAFE :: __forall [n a b] => AFE n a b -> [FG a b] ;
-1 ranOAL :: __forall [a v] => OL (a, v) -> [v] ;
+1 ranAFE :: __forall [n a b] => AFE n a b -> [FG  a b] ;
+1 ranOAL :: __forall [a v] => OL  (a, v) -> [v] ;
 1 sNd :: __forall [t t1] => (t, t1) -> t1 ;
index dc06f59..1cb829d 100644 (file)
@@ -1,6 +1,6 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed fib main1 main2 main3 mem mem1 mem2 mem3 mem4 oR oR1;
-1 fib :: __forall [a] => {PrelBase.Num a} -> {PrelBase.Ord a} -> a -> a ;
+1 fib :: __forall [a] => {PrelNum.Num a} -> {PrelBase.Ord a} -> a -> a ;
 1 main1 :: PrelBase.Bool ;
 1 main2 :: PrelBase.Bool ;
 1 main3 :: PrelBase.Bool ;
index 3d24f91..391ae0f 100644 (file)
@@ -4,6 +4,6 @@ instance {Foo PrelBase.Bool} = zdfFooBool;
 instance {Foo PrelBase.Int} = zdfFooInt;
 1 class Foo a where {o_and :: a -> a -> a} ;
 1 f :: __forall [t] => PrelBase.Bool -> t -> PrelBase.Bool ;
-1 g :: __forall [t a] => {PrelBase.Num a} -> {Foo a} -> a -> t -> a ;
+1 g :: __forall [t a] => {PrelNum.Num a} -> {Foo a} -> a -> t -> a ;
 1 zdfFooBool :: {Foo PrelBase.Bool} ;
 1 zdfFooInt :: {Foo PrelBase.Int} ;
index fb1ffea..6c5d6fc 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed A B C;
-1 type A a = B a ;
+1 type A a = B   a ;
 1 type B c = C ;
 1 type C = PrelBase.Int ;
index 8618c30..6fe0163 100644 (file)
@@ -3,6 +3,6 @@ __export ShouldSucceed Eqzq{deq} f;
 instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance __forall [a] => {Eqzq a} -> {Eqzq [a]} = zdfEqzqZMZN;
 1 class Eqzq a where {deq :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t] => {PrelBase.Num t} -> {Eqzq [t]} -> [t] -> PrelBase.Bool ;
+1 f :: __forall [t] => {PrelNum.Num t} -> {Eqzq [t]} -> [t] -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfEqzqZMZN :: __forall [a] => {Eqzq a} -> {Eqzq [a]} ;
index a889e1c..ee2f112 100644 (file)
@@ -4,6 +4,6 @@ instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance {Ordzq PrelBase.Int} = zdfOrdzqInt;
 1 class Eqzq a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eqzq a}  => Ordzq a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t a] => {PrelBase.Num a} -> {Ordzq a} -> a -> t -> PrelBase.Bool ;
+1 f :: __forall [t a] => {PrelNum.Num a} -> {Ordzq a} -> a -> t -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfOrdzqInt :: {Ordzq PrelBase.Int} ;
index 61998cc..40c1108 100644 (file)
@@ -8,6 +8,6 @@ instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance __forall [a] => {Eqzq a} -> {Eqzq a} -> {Eqzq [a]} = zdfEqzqZMZN;
 1 class Eqzq a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eqzq a}  => Ordzq a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t t1] => {PrelBase.Num t1} -> {Eqzq [t1]} -> [t1] -> t -> PrelBase.Bool ;
+1 f :: __forall [t t1] => {PrelNum.Num t1} -> {Eqzq [t1]} -> [t1] -> t -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfEqzqZMZN :: __forall [a] => {Eqzq a} -> {Eqzq [a]} ;
index 74a990a..6ab1040 100644 (file)
@@ -5,7 +5,7 @@ instance __forall [a] => {Eq2 a} -> {Ord2 a} -> {Eq2 [a]} = zdfEq2ZMZN;
 instance {Ord2 PrelBase.Int} = zdfOrd2Int;
 1 class Eq2 a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eq2 a}  => Ord2 a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t t1] => {PrelBase.Num t1} -> {Eq2 [t1]} -> [t1] -> t -> PrelBase.Bool ;
+1 f :: __forall [t t1] => {PrelNum.Num t1} -> {Eq2 [t1]} -> [t1] -> t -> PrelBase.Bool ;
 1 zdfEq2Int :: {Eq2 PrelBase.Int} ;
 1 zdfEq2ZMZN :: __forall [a] => {Eq2 a} -> {Ord2 a} -> {Eq2 [a]} ;
 1 zdfOrd2Int :: {Ord2 PrelBase.Int} ;
index acab588..5372979 100644 (file)
@@ -3,6 +3,6 @@ __export ShouldSucceed Eq2{foo deq} f;
 instance {Eq2 PrelBase.Int} = zdfEq2Int;
 instance __forall [a] => {Eq2 a} -> {Eq2 [a]} = zdfEq2ZMZN;
 1 class Eq2 a where {foo :: a -> a; deq :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t] => {PrelBase.Num t} -> {Eq2 [t]} -> [t] -> PrelBase.Bool ;
+1 f :: __forall [t] => {PrelNum.Num t} -> {Eq2 [t]} -> [t] -> PrelBase.Bool ;
 1 zdfEq2Int :: {Eq2 PrelBase.Int} ;
 1 zdfEq2ZMZN :: __forall [a] => {Eq2 a} -> {Eq2 [a]} ;
index 6ef53ae..db2cef5 100644 (file)
@@ -1,9 +1,9 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed Reps{f} X{Tag} g;
 instance {Reps PrelBase.Bool} = zdfRepsBool;
-instance __forall [q] => {Reps (X q)} = zdfRepsX;
+instance __forall [q] => {Reps (X   q)} = zdfRepsX;
 1 class Reps r where {f :: r -> r -> r} ;
 1 data X a = Tag a ;
 1 g :: __forall [r] => {Reps r} -> r -> r ;
 1 zdfRepsBool :: {Reps PrelBase.Bool} ;
-1 zdfRepsX :: __forall [q] => {Reps (X q)} ;
+1 zdfRepsX :: __forall [q] => {Reps (X   q)} ;
index 1cc308e..8ea71ee 100644 (file)
@@ -1,6 +1,6 @@
 module ShouldSucceed where
 
-import TheUtils
+-- import TheUtils
 import Set
 import List (partition )
 
index 080ebff..235416f 100644 (file)
@@ -1,8 +1,8 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed B{X Y} T{D C};
-instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} = zdfEqB;
-instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} = zdfEqT;
+instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} = zdfEqB;
+instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} = zdfEqT;
 1 data B b = X |  Y b ;
-1 data T a = D (B a) |  C ;
-1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} ;
-1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} ;
+1 data T a = D (B   a) |  C ;
+1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} ;
+1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} ;
index 080ebff..235416f 100644 (file)
@@ -1,8 +1,8 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed B{X Y} T{D C};
-instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} = zdfEqB;
-instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} = zdfEqT;
+instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} = zdfEqB;
+instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} = zdfEqT;
 1 data B b = X |  Y b ;
-1 data T a = D (B a) |  C ;
-1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} ;
-1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} ;
+1 data T a = D (B   a) |  C ;
+1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} ;
+1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} ;
index 54d30b4..a889edf 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed EQ{zezeze} NUM{ONE TWO} ORD;
-1 class {ORD a, PrelBase.Show a}  => EQ a where {zezeze :: a -> a -> PrelBase.Bool} ;
-1 class {PrelBase.Num a}  => ORD a ;
+1 class {ORD a, PrelShow.Show a}  => EQ a where {zezeze :: a -> a -> PrelBase.Bool} ;
+1 class {PrelNum.Num a}  => ORD a ;
 1 data NUM = ONE |  TWO ;
index 4831739..99f69aa 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f f2 f3;
-1 f :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
-1 f2 :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
-1 f3 :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f2 :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f3 :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
index 1a659a3..93226ea 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f g h;
 1 f :: __forall [b] => PrelBase.Int -> b -> PrelBase.Int ;
-1 g :: __forall [a b] => {PrelBase.Num a} -> PrelBase.Bool -> a -> b -> a ;
+1 g :: __forall [a b] => {PrelNum.Num a} -> PrelBase.Bool -> a -> b -> a ;
 1 h :: __forall [b] => b -> PrelBase.Int -> PrelBase.Int ;
index cc7e6a9..09f4679 100644 (file)
@@ -3,8 +3,8 @@ __export ShouldSucceed PriorityQueue{splitMin meld insert single empty} SeqView{
 1 check :: __forall [q :: (* -> *)] => {PriorityQueue q} -> (__forall [a] => {PrelBase.Ord a} -> q a) -> PrelIOBase.IO PrelBase.Z0T ;
 1 class PriorityQueue q :: (* -> *) where {splitMin :: __forall [a] => {PrelBase.Ord a} -> q a -> SeqView q a; meld :: __forall [a] => {PrelBase.Ord a} -> q a -> q a -> q a; insert = :: __forall [a] => {PrelBase.Ord a} -> a -> q a -> q a; single :: __forall [a] => {PrelBase.Ord a} -> a -> q a; empty :: __forall [a] => {PrelBase.Ord a} -> q a} ;
 1 data SeqView t :: (* -> *) a = Null |  Cons a (t a) ;
-1 insertMany :: __forall [a q :: (* -> *)] => {PrelBase.Ord a} -> {PriorityQueue q} -> [a] -> q a -> q a ;
-1 out :: __forall [a] => {PrelBase.Num a} -> [a] -> PrelIOBase.IO PrelBase.Z0T ;
+1 insertMany :: __forall [q :: (* -> *) a] => {PrelBase.Ord a} -> {PriorityQueue q} -> [a] -> q a -> q a ;
+1 out :: __forall [a] => {PrelNum.Num a} -> [a] -> PrelIOBase.IO PrelBase.Z0T ;
 1 pqSort :: __forall [a t :: (* -> *)] => {PriorityQueue t} -> {PrelBase.Ord a} -> t a -> [a] -> [a] ;
 1 toOrderedList :: __forall [t :: (* -> *) a] => {PrelBase.Ord a} -> {PriorityQueue t} -> t a -> [a] ;
 1 zddminsert :: __forall [q :: (* -> *)] => {PriorityQueue q} -> (__forall [a] => {PrelBase.Ord a} -> a -> q a -> q a) ;
index 5423200..ce4b6be 100644 (file)
@@ -2,6 +2,8 @@
 
 module ShouldSucceed where
 
+instance Show (a->b)
+
 instance (Eq b) => Eq (a -> b) where
        (==) f g = error "attempt to compare functions"
 
index cfbee79..0a2be51 100644 (file)
@@ -1,5 +1,7 @@
 ghc: module version changed to 1; reason: no old .hi file
 instance __forall [a b] => {PrelBase.Eq b} -> {PrelBase.Eq (a -> b)} = zdfEqZLzmzgZR;
-instance __forall [a b] => {PrelBase.Num b} -> {PrelBase.Num (a -> b)} = zdfNumZLzmzgZR;
+instance __forall [a b] => {PrelNum.Num b} -> {PrelNum.Num (a -> b)} = zdfNumZLzmzgZR;
+instance __forall [a b] => {PrelShow.Show (a -> b)} = zdfShowZLzmzgZR;
 1 zdfEqZLzmzgZR :: __forall [a b] => {PrelBase.Eq b} -> {PrelBase.Eq (a -> b)} ;
-1 zdfNumZLzmzgZR :: __forall [a b] => {PrelBase.Num b} -> {PrelBase.Eq (a -> b)} -> {PrelBase.Show (a -> b)} -> {PrelBase.Num (a -> b)} ;
+1 zdfNumZLzmzgZR :: __forall [a b] => {PrelNum.Num b} -> {PrelBase.Eq (a -> b)} -> {PrelShow.Show (a -> b)} -> {PrelNum.Num (a -> b)} ;
+1 zdfShowZLzmzgZR :: __forall [a b] => {PrelShow.Show (a -> b)} ;
index 8f5cf27..e888d1a 100644 (file)
@@ -2,14 +2,14 @@ ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed St State{State} TS{TS vs} bindState foo unState unitState;
 instance {PrelBase.Eq TS} = zdfEqTS;
 instance __forall [c] => {PrelBase.Eq c} -> {PrelBase.Monad (State c)} = zdfMonadState;
-instance {PrelBase.Show TS} = zdfShowTS;
+instance {PrelShow.Show TS} = zdfShowTS;
 1 bindState :: __forall [c a b] => State c a -> (a -> State c b) -> State c b ;
 1 data State c a = State (c -> (a, c)) ;
 1 data TS = TS {vs :: PrelBase.Int} ;
-1 foo :: PrelBase.Int -> St PrelBase.Int ;
+1 foo :: PrelBase.Int -> St  PrelBase.Int ;
 1 type St a = State TS a ;
 1 unState :: __forall [c a] => State c a -> c -> (a, c) ;
 1 unitState :: __forall [a c] => a -> State c a ;
 1 zdfEqTS :: {PrelBase.Eq TS} ;
 1 zdfMonadState :: __forall [c] => {PrelBase.Eq c} -> {PrelBase.Monad (State c)} ;
-1 zdfShowTS :: {PrelBase.Show TS} ;
+1 zdfShowTS :: {PrelShow.Show TS} ;
index 68bcaa5..db90d1a 100644 (file)
@@ -1,12 +1,12 @@
 NOTE: Simplifier still going after 4 iterations; bailing out.
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed HappyAbsSyn{HappyTerminal HappyErrorToken HappyAbsSyn1 HappyAbsSyn2 HappyAbsSyn3} HappyState{HappyState} Token{TokenInt TokenVar TokenEq} action_0 action_1 action_2 action_3 action_4 action_5 action_6 happyAccept happyError happyFail happyGoto happyMonadReduce happyNewToken happyParse happyReduce happyReduce_1 happyReduce_2 happyReduce_3 happyReturn happyShift happySpecReduce_0 happySpecReduce_1 happySpecReduce_2 happySpecReduce_3 happyThen main myparser notHappyAtAll;
-instance {PrelBase.Show Token} = zdfShowToken;
-1 action_0 :: __forall [t t1] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double) -> [HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double)] -> [HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double ;
-1 action_1 :: __forall [t t1 t2 t3 b] => {PrelBase.Num t} -> t -> PrelBase.Int -> b -> HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1) -> [HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t1 ;
+instance {PrelShow.Show Token} = zdfShowToken;
+1 action_0 :: __forall [t t1] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double) -> [HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double)] -> [HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double ;
+1 action_1 :: __forall [t t1 t2 t3 b] => {PrelNum.Num t} -> t -> PrelBase.Int -> b -> HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1) -> [HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t1 ;
 1 action_2 :: __forall [t t1 b t2 t3 t4 t5 t31] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn (t3 -> PrelBase.Double) [(t4, t3 -> t5)] t31] -> t1)] -> [HappyAbsSyn (t3 -> PrelBase.Double) [(t4, t3 -> t5)] t31] -> t1 ;
-1 action_3 :: __forall [t t1 t11 a] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
-1 action_4 :: __forall [t t1 t11 a] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
+1 action_3 :: __forall [t t1 t11 a] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
+1 action_4 :: __forall [t t1 t11 a] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
 1 action_5 :: __forall [t t1 b t2 t11 t3] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t1)] -> [HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t1 ;
 1 action_6 :: __forall [t t1 b t2 t11 t21 t3] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn t11 t21 (t3 -> PrelBase.Int)] -> t1)] -> [HappyAbsSyn t11 t21 (t3 -> PrelBase.Int)] -> t1 ;
 1 data HappyAbsSyn t1 t2 t3 = HappyTerminal Token |  HappyErrorToken PrelBase.Int |  HappyAbsSyn1 t1 |  HappyAbsSyn2 t2 |  HappyAbsSyn3 t3 ;
@@ -24,7 +24,7 @@ instance {PrelBase.Show Token} = zdfShowToken;
 1 happyReduce_2 :: __forall [t b t1 t11 t3] => PrelBase.Int -> b -> t1 -> [HappyState b ([HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t)] -> [HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t ;
 1 happyReduce_3 :: __forall [t b t1 t11 t2 t21] => PrelBase.Int -> b -> t1 -> [HappyState b ([HappyAbsSyn t11 t2 (t21 -> PrelBase.Int)] -> t)] -> [HappyAbsSyn t11 t2 (t21 -> PrelBase.Int)] -> t ;
 1 happyReturn :: __forall [t t1] => t -> t1 -> t ;
-1 happyShift :: __forall [t t1 t2 t3 t11] => {PrelBase.Num t} -> (PrelBase.Int -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> t -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11 ;
+1 happyShift :: __forall [t t1 t2 t3 t11] => {PrelNum.Num t} -> (PrelBase.Int -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> t -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11 ;
 1 happySpecReduce_0 :: __forall [t a b] => PrelBase.Int -> t -> PrelBase.Int -> b -> HappyState b ([t] -> [Token] -> a) -> [HappyState b ([t] -> [Token] -> a)] -> [t] -> [Token] -> a ;
 1 happySpecReduce_1 :: __forall [t b t1 t2] => PrelBase.Int -> (t1 -> t1) -> PrelBase.Int -> b -> t -> [HappyState b ([t1] -> t2)] -> [t1] -> t2 ;
 1 happySpecReduce_2 :: __forall [t b t1 t2] => PrelBase.Int -> (t1 -> t1 -> t1) -> PrelBase.Int -> b -> t -> [HappyState b ([t1] -> t2)] -> [t1] -> t2 ;
@@ -33,4 +33,4 @@ instance {PrelBase.Show Token} = zdfShowToken;
 1 main :: PrelIOBase.IO PrelBase.Z0T ;
 1 myparser :: __forall [t] => [Token] -> t -> PrelBase.Double ;
 1 notHappyAtAll :: __forall [t] => t ;
-1 zdfShowToken :: {PrelBase.Show Token} ;
+1 zdfShowToken :: {PrelShow.Show Token} ;
index 5859c9a..2633b80 100644 (file)
@@ -1,6 +1,6 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed Cp cpPairs m mp;
-1 cpPairs :: __forall [j a] => Cp [j] -> (a, [j]) -> (a, [j]) -> PrelBase.Ordering ;
-1 m :: __forall [a] => {PrelBase.Eq a} -> Cp a -> [a] -> a ;
-1 mp :: __forall [j i] => {PrelBase.Eq i} -> {PrelBase.Eq j} -> Cp [j] -> [(i, [j])] -> (i, [j]) ;
+1 cpPairs :: __forall [j a] => Cp  [j] -> (a, [j]) -> (a, [j]) -> PrelBase.Ordering ;
+1 m :: __forall [a] => {PrelBase.Eq a} -> Cp  a -> [a] -> a ;
+1 mp :: __forall [j i] => {PrelBase.Eq i} -> {PrelBase.Eq j} -> Cp  [j] -> [(i, [j])] -> (i, [j]) ;
 1 type Cp a = a -> a -> PrelBase.Ordering ;
index 38fcf81..46f80b1 100644 (file)
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldCompile C D{DD} D_;
-1 newtype D a = DD (D_ a) ;
-1 type C a = D a -> a ;
-1 type D_ a = C (PrelMaybe.Maybe a) ;
+1 newtype D a = DD (D_  a) ;
+1 type C a = D   a -> a ;
+1 type D_ a = C   (PrelMaybe.Maybe a) ;
index 4c217ae..e9b7774 100644 (file)
@@ -2,12 +2,12 @@
 Digraph.hs:19:
     Inferred type is less polymorphic than expected
        Quantified type variable `v' escapes
-       It unifies with `vertex', which is mentioned in the environment
-       The following variables in the environment mention `vertex'
-           es :: [Edge vertex]
-           vs :: [vertex]
+       It is mentioned in the environment
+       The following variables in the environment mention `v'
+           es :: [Edge v]
+           vs :: [v]
     When checking the type signature
-       reversed_edges :: forall v1. {Eq v1} => [Edge v1]
+       reversed_edges :: forall v1. (Eq v1) => [Edge v1]
     In an equation for function `stronglyConnComp':
        stronglyConnComp es vs
                           = snd (span_tree (new_range reversed_edges)
@@ -30,7 +30,5 @@ Digraph.hs:19:
                               reversed_edges :: forall v. (Eq v) => [Edge v]
                               reversed_edges = map swap es
 
-
-
 Compilation had errors
 
index 376d3a0..46a704b 100644 (file)
@@ -3,8 +3,6 @@ tcfail001.hs:9:
     Warning: Duplicate class assertion `A a' in the context:
                 (A a, A a) => ...
 
-
-
 tcfail001.hs:9:
     Couldn't match `[a]' against `t -> t1'
        Expected type: [a]
@@ -12,7 +10,5 @@ tcfail001.hs:9:
     In an equation for function `op': op [] = []
     In the definition for method `op'
 
-
-
 Compilation had errors
 
index 410a1ad..9dc37d1 100644 (file)
@@ -5,7 +5,5 @@ tcfail002.hs:4:
        Inferred type: [t]
     In the right-hand side of an equation for `c': z
 
-
-
 Compilation had errors
 
index 7650b3b..811e275 100644 (file)
@@ -3,7 +3,5 @@ tcfail003.hs:3:
     No instance for `Num Char'
        arising from the literal `1' at tcfail003.hs:3
 
-
-
 Compilation had errors
 
index 66feb42..459b08c 100644 (file)
@@ -5,7 +5,5 @@ tcfail004.hs:3:
        Inferred type: (t2, t3, t4)
     In the right-hand side of a pattern binding: (1, 2, 3)
 
-
-
 Compilation had errors
 
index 7ed8275..258e41d 100644 (file)
@@ -5,7 +5,5 @@ tcfail005.hs:3:
        Inferred type: (t1, t2)
     In the right-hand side of a pattern binding: (1, 'a')
 
-
-
 Compilation had errors
 
index 9815c5a..71f7155 100644 (file)
@@ -3,7 +3,5 @@ tcfail006.hs:4:
     No instance for `Num Bool'
        arising from the literal `1' at tcfail006.hs:4
 
-
-
 Compilation had errors
 
index b823d9a..0dd2348 100644 (file)
@@ -3,7 +3,5 @@ tcfail007.hs:3:
     No instance for `Num Bool'
        arising from use of `+' at tcfail007.hs:3
 
-
-
 Compilation had errors
 
index 9b2dee0..974fa4a 100644 (file)
@@ -9,7 +9,5 @@ tcfail008.hs:3:
        in the constraint `Num t'
        arising from the literal `1' at tcfail008.hs:3
 
-
-
 Compilation had errors
 
index dd3c85e..a91cbbb 100644 (file)
@@ -5,7 +5,5 @@ tcfail009.hs:3:
        Inferred type: Int
     In an expression with a type signature: 2 :: Integer
 
-
-
 Compilation had errors
 
index affb03e..25fb03f 100644 (file)
@@ -4,7 +4,5 @@ tcfail010.hs:3:
        in the constraint `Num [t]'
        arising from use of `+' at tcfail010.hs:3
 
-
-
 Compilation had errors
 
index d86d2c9..348dcb2 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail011.hs:3: Variable not in scope: `y'
 
-
-
 Compilation had errors
 
index 1bd5c89..ea50af1 100644 (file)
@@ -5,7 +5,5 @@ tcfail012.hs:3:
        Inferred type: [t]
     In the right-hand side of a pattern binding: []
 
-
-
 Compilation had errors
 
index 429fefc..cc92015 100644 (file)
@@ -6,7 +6,5 @@ tcfail013.hs:4:
     In the pattern: True
     In an equation for function `f': f True = 2
 
-
-
 Compilation had errors
 
index 5812e98..08b902e 100644 (file)
@@ -6,7 +6,5 @@ tcfail014.hs:5:
     In the first argument of `z', namely `z'
     In the right-hand side of an equation for `h': z z
 
-
-
 Compilation had errors
 
index ab90aa6..c088740 100644 (file)
@@ -3,7 +3,5 @@ tcfail015.hs:7:
     No instance for `Num Bool'
        arising from the literal `2' at tcfail015.hs:7
 
-
-
 Compilation had errors
 
index af0d5f2..799b9ed 100644 (file)
@@ -6,7 +6,5 @@ tcfail016.hs:9:
     In the first argument of `g', namely `e1'
     In the first argument of `++', namely `(g e1)'
 
-
-
 Compilation had errors
 
index 3ebb93c..7ab93fd 100644 (file)
@@ -7,7 +7,5 @@ tcfail017.hs:11:
                    or missing instance declaration for `C [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
index 565d1e9..6dcb28e 100644 (file)
@@ -4,7 +4,5 @@ tcfail018.hs:5:
        in the constraint `Num [t]'
        arising from the literal `1' at tcfail018.hs:5
 
-
-
 Compilation had errors
 
index 9eda575..00a227f 100644 (file)
@@ -15,7 +15,5 @@ tcfail019.hs:19:
                    or missing instance declaration for `B [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
index 78405f7..c009750 100644 (file)
@@ -7,7 +7,5 @@ tcfail020.hs:11:
                    or missing instance declaration for `A [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
index 0d6371c..ffe4544 100644 (file)
@@ -3,7 +3,5 @@ tcfail021.hs:8:
     Can't handle multiple methods defined by one pattern binding
        (==, /=) = (\ x -> \ y -> ..., \ x -> \ y -> ...)
 
-
-
 Compilation had errors
 
index 47f1cba..3e1dc47 100644 (file)
@@ -15,7 +15,5 @@ tcfail023.hs:14:
        Inferred type: Bool
     In the right-hand side of an equation for `op': True
 
-
-
 Compilation had errors
 
index b847c06..e01f696 100644 (file)
@@ -1,4 +1,5 @@
 -- !!! tests for CycleErr in classes
+module TcFail where
 
 class (B a) => A a where
  op1 :: a -> a
index 806100b..cc1e5b1 100644 (file)
@@ -1,10 +1,8 @@
 
-tcfail027.hs:3:
+tcfail027.hs:2:
     Cycle in class declarations:
-       `B' at tcfail027.hs:7
-       `A' at tcfail027.hs:4
-
-
+       `B' at tcfail027.hs:8
+       `A' at tcfail027.hs:5
 
 Compilation had errors
 
index 3fb22ff..5f9b32c 100644 (file)
@@ -1,3 +1,4 @@
 -- !!! tests for ArityErr
+module TcFail where
 
 data A a b = B (A a)
index dbede23..6393495 100644 (file)
@@ -1,12 +1,10 @@
 
-tcfail028.hs:4:
+tcfail028.hs:5:
     Couldn't match `Type t' against `k -> *'
        Expected kind: Type t
        Inferred kind: k -> *
     When checking that `A a' is a type
     In the newtype declaration for `A'
 
-
-
 Compilation had errors
 
index 3c2874d..7e83c6d 100644 (file)
@@ -2,7 +2,5 @@
 tcfail029.hs:6:
     No instance for `Ord Foo' arising from use of `>' at tcfail029.hs:6
 
-
-
 Compilation had errors
 
index 88a651b..f49ad59 100644 (file)
@@ -1,7 +1,5 @@
 
-tcfail030.hs:0: Module `Main' must include a definition for `main'
-
-
+tcfail030.hs:0: Variable not in scope: `Main.main'
 
 Compilation had errors
 
index a8d9781..c1795e5 100644 (file)
@@ -6,7 +6,5 @@ tcfail031.hs:3:
     In the predicate expression: 'a'
     In the right-hand side of an equation for `f': if 'a' then 1 else 2
 
-
-
 Compilation had errors
 
index d828793..0586efe 100644 (file)
@@ -5,13 +5,10 @@ tcfail032.hs:14:
        It is mentioned in the environment
        The following variables in the environment mention `a'
            x :: a -> Int
-    In an expression with expected type: forall a1.
-                                        {Eq a1} =>
-                                        a1 -> Int
+    In an expression with expected type:
+       forall a1. (Eq a1) => a1 -> Int
     In an expression with a type signature:
          x :: forall a. (Eq a) => a -> Int
 
-
-
 Compilation had errors
 
index 3bc5fa5..e4ed3e6 100644 (file)
@@ -5,7 +5,5 @@ tcfail033.hs:4:
        Inferred type: t
     In a list-comprehension qualifier: return x
 
-
-
 Compilation had errors
 
index 42ed8bf..8915021 100644 (file)
@@ -6,7 +6,5 @@ tcfail034.hs:17:
     Probable cause: missing `Integral a' in type signature for `test'
     When checking the type signature(s) for `test'
 
-
-
 Compilation had errors
 
index ed219a5..0e090bd 100644 (file)
@@ -39,13 +39,9 @@ tcfail035.hs:7:
     Warning: No explicit method nor default method for `+'
             in an instance declaration for `Num'
 
-
-
 tcfail035.hs:3:
     Duplicate or overlapping instance declarations
        for `Num NUM' at tcfail035.hs:6 and tcfail035.hs:7
 
-
-
 Compilation had errors
 
index 441b9ff..91b23df 100644 (file)
@@ -35,8 +35,6 @@ tcfail036.hs:8:
     Warning: No explicit method nor default method for `+'
             in an instance declaration for `Num'
 
-
-
 tcfail036.hs:3:
     Duplicate or overlapping instance declarations
        for `Num NUM' at tcfail036.hs:7 and tcfail036.hs:8
@@ -53,7 +51,5 @@ tcfail036.hs:9:
     Class used as a type constructor: Num
     When checking kinds in `Eq Num'
 
-
-
 Compilation had errors
 
index ab51ba6..d130a2e 100644 (file)
@@ -4,7 +4,5 @@ tcfail037.hs:7:
     It could refer to either `+', defined at tcfail037.hs:10
                          or `Prelude.+', imported from Prelude at tcfail037.hs:3
 
-
-
 Compilation had errors
 
index d1ca6fd..b31ade5 100644 (file)
@@ -7,7 +7,5 @@ tcfail038.hs:8:
     Conflicting definitions for `/='
     in the bindings in an instance declaration
 
-
-
 Compilation had errors
 
index 35e23de..97514c6 100644 (file)
@@ -4,7 +4,5 @@ tcfail039.hs:11:
     It could refer to either `==', defined at tcfail039.hs:7
                          or `Prelude.==', imported from Prelude at tcfail039.hs:3
 
-
-
 Compilation had errors
 
index dfcdd4c..eb774c9 100644 (file)
@@ -4,7 +4,5 @@ tcfail040.hs:19:
        in the constraint `ORD a'
        arising from use of `<<' at tcfail040.hs:19
 
-
-
 Compilation had errors
 
index 7e746cc..da5c6b1 100644 (file)
@@ -6,7 +6,5 @@ tcfail042.hs:18:
     Probable cause: missing `Num a' in instance declaration context
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
index cc1983b..184a4e2 100644 (file)
@@ -12,6 +12,7 @@
 --     class "Eq_", type "a" (at a use of an overloaded identifier: eq)
 
 
+module TcFail where
 
 class Eq_ a where
  eq :: a -> a -> Bool
@@ -25,7 +26,7 @@ instance (Eq_ a) => Eq_ [a] where
         then (null ys)
         else if (null ys) 
                 then False
-                else and (eq (hd xs) (hd ys)) (eq (tl xs) (tl ys))
+                else (&&) (eq (hd xs) (hd ys)) (eq (tl xs) (tl ys))
 
 class (Eq_ a) => Ord_ a where
  gt :: a -> a -> Bool
@@ -38,8 +39,6 @@ search
                 then False 
                 else if eq a (hd bs) then True else search a (tl bs)
 
-and :: Bool -> Bool -> Bool
-and True True = True
 
 hd :: [a] -> a
 hd (a:as) = a
@@ -53,8 +52,6 @@ ordIntGt 2 3 = True
 eqIntEq :: Int -> Int -> Bool
 eqIntEq  2 3 = True
 
-null :: [a] -> Bool
-null [] = True
 
 
 
index ac63226..1c54047 100644 (file)
@@ -1,35 +1,8 @@
 
-tcfail043.hs:24:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-                         or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:24:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-                         or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:26:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-                         or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:26:
-    Ambiguous occurrence `and'
-    It could refer to either `and', defined at tcfail043.hs:42
-                         or `Prelude.and', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:41:
-    Ambiguous occurrence `and'
-    It could refer to either `and', defined at tcfail043.hs:42
-                         or `Prelude.and', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:56:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-                         or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-
+tcfail043.hs:38:
+    Ambiguous type variable(s) `a'
+       in the constraint `Ord_ a'
+       arising from use of `gt' at tcfail043.hs:38
 
 Compilation had errors
 
index a013dd4..b271d0f 100644 (file)
@@ -3,7 +3,7 @@
 module ShouldFail where
 
 instance (Eq a) => Eq (a->a)
+instance Show (a->b)
 
 instance (Num a) => Num (a->a) where
     f + g    = \x -> f x + g x
index f30e605..0fe6b34 100644 (file)
@@ -7,8 +7,6 @@ tcfail044.hs:12:
     Warning: No explicit method nor default method for `abs'
             in an instance declaration for `Num'
 
-
-
 tcfail044.hs:5:
     Illegal instance declaration for `Eq (a -> a)'
        (the instance type must be of form (T a b c)
@@ -19,7 +17,5 @@ tcfail044.hs:12:
        (the instance type must be of form (T a b c)
         where T is not a synonym, and a,b,c are distinct type variables)
 
-
-
 Compilation had errors
 
index 236911e..10b2367 100644 (file)
@@ -3,7 +3,5 @@ tcfail045.hs:10:
     Unacceptable instance type for ccall-ish class
        class CCallable type Socket
 
-
-
 Compilation had errors
 
index 2f5fe27..9d5307d 100644 (file)
@@ -3,7 +3,5 @@ tcfail046.hs:4:
     No instance for `Eq (Process a)'
     When deriving classes for `Message'
 
-
-
 Compilation had errors
 
index 4eb3cca..d9b4692 100644 (file)
@@ -4,7 +4,5 @@ tcfail047.hs:7:
        (the instance type must be of form (T a b c)
         where T is not a synonym, and a,b,c are distinct type variables)
 
-
-
 Compilation had errors
 
index 5b26924..11f833d 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail048.hs:4: Type constructor or class not in scope: `B'
 
-
-
 Compilation had errors
 
index e2e5992..1c7f82a 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail049.hs:3: Variable not in scope: `g'
 
-
-
 Compilation had errors
 
index f21fbf4..6f4c224 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail050.hs:3: Data constructor not in scope: `B'
 
-
-
 Compilation had errors
 
index ead1fa1..668c158 100644 (file)
@@ -3,7 +3,5 @@ tcfail051.hs:4: Type constructor or class not in scope: `B'
 
 tcfail051.hs:4: Variable not in scope: `op1'
 
-
-
 Compilation had errors
 
index 397abcd..cf01d15 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail052.hs:4: Type variable not in scope: `c'
 
-
-
 Compilation had errors
 
index baa28f5..327beef 100644 (file)
@@ -1,7 +1,5 @@
 
-tcfail053.hs:3: Type constructor or class not in scope: `A'
-
-
+tcfail053.hs:4: Type constructor or class not in scope: `A'
 
 Compilation had errors
 
index 6547756..277623e 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail054.hs:3: Data constructor not in scope: `B'
 
-
-
 Compilation had errors
 
index 834f656..0c18a15 100644 (file)
@@ -5,7 +5,5 @@ tcfail055.hs:3:
        Inferred type: Float
     In an expression with a type signature: x + 1 :: Int
 
-
-
 Compilation had errors
 
index 1ac2936..457aed5 100644 (file)
@@ -5,7 +5,5 @@ tcfail056.hs:1:
 
 tcfail056.hs:10: Class `Eq' does not have a method `<='
 
-
-
 Compilation had errors
 
index 15966fa..163df53 100644 (file)
@@ -3,7 +3,5 @@ tcfail057.hs:5:
     Class used as a type constructor: RealFrac
     When checking kinds in `RealFrac a'
 
-
-
 Compilation had errors
 
index bab93a7..69e4de1 100644 (file)
@@ -3,7 +3,5 @@ tcfail058.hs:6:
     Type constructor used as a class: Array
     When checking kinds in `Array a'
 
-
-
 Compilation had errors
 
index 362e7a5..faa0dca 100644 (file)
@@ -7,7 +7,5 @@ tcfail061.hs:11: Type variable not in scope: `b'
 
 tcfail061.hs:11: Type variable not in scope: `b'
 
-
-
 Compilation had errors
 
index 2887b6b..f0d6c1c 100644 (file)
@@ -5,7 +5,5 @@ tcfail062.hs:33:
 tcfail062.hs:33:
     Type variable not in scope: `behaviouralExpression'
 
-
-
 Compilation had errors
 
index 191e08e..2b7b343 100644 (file)
@@ -2,13 +2,13 @@
 tcfail065.hs:29:
     Inferred type is less polymorphic than expected
        Quantified type variable `x' escapes
-       It is mentioned in the environment
-       The following variables in the environment mention `x'
+       It unifies with `x1', which is mentioned in the environment
+** SLPJ: I HATE THE 'unifies with' PART **
+       The following variables in the environment mention `x1'
+** AND NOTHING MENTIONED! **
     When checking the type signature
        setX :: forall x2. x2 -> X x1 -> X x1
     In the definition for method `setX'
 
-
-
 Compilation had errors
 
index fca214a..8cfe0b1 100644 (file)
@@ -7,19 +7,22 @@ tcfail067.hs:65:
     Warning: No explicit method nor default method for `abs'
             in an instance declaration for `Num'
 
-
-
 tcfail067.hs:65:
     Could not deduce `Ord a'
        (arising from use of `SubRange' at tcfail067.hs:65)
-       from the context: (Num (SubRange a1), Num a1, Eq (SubRange a1), Show (SubRange a1), Eq (SubRange a1), Show (SubRange a1))
+       from the context: (Num (SubRange a),
+                          Num a,
+                          Eq (SubRange a),
+                          Show (SubRange a),
+                          Eq (SubRange a),
+                          Show (SubRange a))
     Probable cause: missing `Ord a' in instance declaration context
     When checking the methods of an instance declaration
 
 tcfail067.hs:65:
     Could not deduce `Show (SubRange a)'
        (arising from an instance declaration at tcfail067.hs:65)
-       from the context: (Num a1)
+       from the context: (Num a)
     Probable cause: missing `Show (SubRange a)'
                    in instance declaration context
                    or missing instance declaration for `Show (SubRange a)'
@@ -33,7 +36,5 @@ tcfail067.hs:74:
                    in type signature for `numSubRangeBinOp'
     When checking the type signature(s) for `numSubRangeBinOp'
 
-
-
 Compilation had errors
 
index 4fea13f..ccd2fab 100644 (file)
@@ -49,7 +49,5 @@ tcfail068.hs:36:
     In the right-hand side of an equation for `itrapstate':
        runST (itrapstate' i k s)
 
-
-
 Compilation had errors
 
index 3ca0c5f..a3c950d 100644 (file)
@@ -6,7 +6,5 @@ tcfail069.hs:20:
     In the scrutinee of a case expression: (list1, list2)
     In the case expression: case (list1, list2) of [] -> error "foo"
 
-
-
 Compilation had errors
 
index d6cd3d7..6cd2a28 100644 (file)
@@ -10,5 +10,7 @@ panic! (the `impossible' happened):
        tlist
 -}
 
+module TcFail where
+
 type State = ([Int] Bool)
 
index e0736b8..6a5d4af 100644 (file)
@@ -1,12 +1,10 @@
 
-tcfail070.hs:13:
+tcfail070.hs:15:
     Couldn't match `*' against `* -> k'
        Expected kind: *
        Inferred kind: * -> k
     When checking kinds in `[Int] Bool'
     In the type synonym declaration for `State'
 
-
-
 Compilation had errors
 
index 018379f..3f711e9 100644 (file)
@@ -1,10 +1,16 @@
 
 tcfail071.hs:8:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `c' is unified with `a -> [t] -> [t]'
-    When checking the type signature g :: forall c1. c1 -> c1
-
+    Mismatched contexts
+    When matching the contexts of the signatures for `f' and `g'
+       (the signature contexts in a mutually recursive group should all be identical)
 
+tcfail071.hs:10:
+    Cannot unify the type-signature variable `c'
+       with the type `a -> b -> b'
+       Expected type: a -> b -> b
+       Inferred type: c
+    In the first argument of `f', namely `c'
+    In the first argument of `foldr', namely `(f c)'
 
 Compilation had errors
 
index ea214e1..a54ff98 100644 (file)
@@ -9,7 +9,5 @@ tcfail072.hs:23:
        in the constraint `Ord q'
        arising from use of `g' at tcfail072.hs:23
 
-
-
 Compilation had errors
 
index a519785..90c9b23 100644 (file)
@@ -1,7 +1,7 @@
 
 tcfail073.hs:3:
     Duplicate or overlapping instance declarations
-       for `Eq (a, b)' at PrelTup.hi:10 and tcfail073.hs:8
+       for `Eq (a, b)' at PrelTup.hi:5 and tcfail073.hs:8
 
 tcfail073.hs:8:
     Could not deduce `Eq a'
@@ -10,7 +10,5 @@ tcfail073.hs:8:
     Probable cause: missing `Eq a' in instance declaration context
     When checking the methods of an instance declaration
 
-
-
 Compilation had errors
 
index 9e85e92..7101937 100644 (file)
@@ -4,7 +4,5 @@ tcfail074.hs:7:
        defined at tcfail074.hs:7
        defined at tcfail074.hs:8
 
-
-
 Compilation had errors
 
index c715384..fa1ea95 100644 (file)
@@ -2,16 +2,14 @@
 tcfail076.hs:18:
     Inferred type is less polymorphic than expected
        Quantified type variable `res' escapes
-       It unifies with `res1', which is mentioned in the environment
-       The following variables in the environment mention `res1'
-           cont :: a -> m res1
-    In an expression with expected type: forall res2.
-                                        (a1 -> m res2) -> m res2
+       It is mentioned in the environment
+       The following variables in the environment mention `res'
+           cont :: a -> m res
+    In an expression with expected type:
+       forall res1. (a1 -> m1 res1) -> m1 res1
     In the first argument of `KContT', namely `(\ cont' -> cont a)'
     In the right-hand side of a lambda abstraction:
        KContT (\ cont' -> cont a)
 
-
-
 Compilation had errors
 
index 376d1bf..9626bb4 100644 (file)
@@ -1,7 +1,5 @@
 
 tcfail077.hs:8: Variable not in scope: `op2'
 
-
-
 Compilation had errors
 
index ffae1f0..8002caa 100644 (file)
@@ -3,7 +3,5 @@ tcfail078.hs:5:
     Type constructor used as a class: Integer
     When checking kinds in `Integer i'
 
-
-
 Compilation had errors
 
index bf3afb4..7765b82 100644 (file)
@@ -6,7 +6,5 @@ tcfail079.hs:9:
     When checking that `Int#' is a type
     In the data type declaration for `Unboxed'
 
-
-
 Compilation had errors
 
index e4d8be9..dd2eaf2 100644 (file)
@@ -4,7 +4,5 @@ tcfail080.hs:11:
        in the constraint `Collection c a'
        arising from use of `isempty' at tcfail080.hs:11
 
-
-
 Compilation had errors
 
index c0bbc90..f66b5ec 100644 (file)
@@ -1,10 +1,9 @@
 
-tcfail081.hs:4:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `a' is unified with `IO t'
-    When checking the type signature main :: forall a1. a1
-
-
+tcfail081.hs:2:
+    Cannot unify the type-signature variable `a' with the type `IO t'
+       Expected type: IO t
+       Inferred type: a
+    When checking that `main' has the required type
 
 Compilation had errors