[project @ 2001-08-22 12:24:41 by simonmar]
authorsimonmar <unknown>
Wed, 22 Aug 2001 12:25:32 +0000 (12:25 +0000)
committersimonmar <unknown>
Wed, 22 Aug 2001 12:25:32 +0000 (12:25 +0000)
Remove old test suite (subsumed by fptools/testsuite).

1451 files changed:
ghc/tests/array/Makefile [deleted file]
ghc/tests/array/should_run/Makefile [deleted file]
ghc/tests/array/should_run/arr001.hs [deleted file]
ghc/tests/array/should_run/arr001.stdout [deleted file]
ghc/tests/array/should_run/arr002.hs [deleted file]
ghc/tests/array/should_run/arr002.stdout [deleted file]
ghc/tests/array/should_run/arr003.hs [deleted file]
ghc/tests/array/should_run/arr003.stderr [deleted file]
ghc/tests/array/should_run/arr004.hs [deleted file]
ghc/tests/array/should_run/arr004.stderr [deleted file]
ghc/tests/array/should_run/arr005.hs [deleted file]
ghc/tests/array/should_run/arr005.stdout [deleted file]
ghc/tests/array/should_run/arr006.hs [deleted file]
ghc/tests/array/should_run/arr006.stdout [deleted file]
ghc/tests/array/should_run/arr007.hs [deleted file]
ghc/tests/array/should_run/arr007.stderr [deleted file]
ghc/tests/array/should_run/arr008.hs [deleted file]
ghc/tests/array/should_run/arr008.stderr [deleted file]
ghc/tests/array/should_run/arr008.stdout [deleted file]
ghc/tests/array/should_run/arr009.hs [deleted file]
ghc/tests/array/should_run/arr009.stdout [deleted file]
ghc/tests/array/should_run/arr010.hs [deleted file]
ghc/tests/array/should_run/arr010.stdout [deleted file]
ghc/tests/array/should_run/arr011.hs [deleted file]
ghc/tests/array/should_run/arr011.stdout [deleted file]
ghc/tests/array/should_run/arr012.hs [deleted file]
ghc/tests/array/should_run/arr012.stdout [deleted file]
ghc/tests/array/should_run/arr013.hs [deleted file]
ghc/tests/array/should_run/arr013.stdout [deleted file]
ghc/tests/array/should_run/arr014.hs [deleted file]
ghc/tests/array/should_run/arr014.stdout [deleted file]
ghc/tests/array/should_run/arr015.hs [deleted file]
ghc/tests/array/should_run/arr015.stdout [deleted file]
ghc/tests/array/should_run/arr016.hs [deleted file]
ghc/tests/array/should_run/arr016.stdout [deleted file]
ghc/tests/ccall/Makefile [deleted file]
ghc/tests/ccall/should_compile/Makefile [deleted file]
ghc/tests/ccall/should_compile/cc001.hs [deleted file]
ghc/tests/ccall/should_compile/cc001.stderr [deleted file]
ghc/tests/ccall/should_compile/cc002.hs [deleted file]
ghc/tests/ccall/should_compile/cc003.hs [deleted file]
ghc/tests/ccall/should_compile/cc003.stderr [deleted file]
ghc/tests/ccall/should_compile/cc004.hs [deleted file]
ghc/tests/ccall/should_compile/cc005.hs [deleted file]
ghc/tests/ccall/should_compile/cc006.hs [deleted file]
ghc/tests/ccall/should_compile/cc006.stderr [deleted file]
ghc/tests/ccall/should_compile/cc007.hs [deleted file]
ghc/tests/ccall/should_compile/cc008.hs [deleted file]
ghc/tests/ccall/should_compile/cc009.hs [deleted file]
ghc/tests/ccall/should_compile/cc010.hs [deleted file]
ghc/tests/ccall/should_fail/Makefile [deleted file]
ghc/tests/ccall/should_fail/cc001.hs [deleted file]
ghc/tests/ccall/should_fail/cc001.stderr [deleted file]
ghc/tests/ccall/should_fail/cc002.hs [deleted file]
ghc/tests/ccall/should_fail/cc002.stderr [deleted file]
ghc/tests/ccall/should_fail/cc004.hs [deleted file]
ghc/tests/ccall/should_fail/cc004.stderr [deleted file]
ghc/tests/ccall/should_fail/cc005.hs [deleted file]
ghc/tests/ccall/should_fail/cc005.stderr [deleted file]
ghc/tests/ccall/should_run/Makefile [deleted file]
ghc/tests/ccall/should_run/callback.hs [deleted file]
ghc/tests/ccall/should_run/callback.stdout [deleted file]
ghc/tests/ccall/should_run/fed001.hs [deleted file]
ghc/tests/ccall/should_run/fed001.stdout [deleted file]
ghc/tests/ccall/should_run/ffi001.hs [deleted file]
ghc/tests/ccall/should_run/ffi001.stdout [deleted file]
ghc/tests/codeGen/Makefile [deleted file]
ghc/tests/codeGen/should_compile/Makefile [deleted file]
ghc/tests/codeGen/should_compile/cg001.hs [deleted file]
ghc/tests/codeGen/should_run/Makefile [deleted file]
ghc/tests/codeGen/should_run/cg001.hs [deleted file]
ghc/tests/codeGen/should_run/cg001.stdout [deleted file]
ghc/tests/codeGen/should_run/cg002.hs [deleted file]
ghc/tests/codeGen/should_run/cg002.stdout [deleted file]
ghc/tests/codeGen/should_run/cg003.hs [deleted file]
ghc/tests/codeGen/should_run/cg003.stdout [deleted file]
ghc/tests/codeGen/should_run/cg004.hs [deleted file]
ghc/tests/codeGen/should_run/cg004.stdout [deleted file]
ghc/tests/codeGen/should_run/cg005.hs [deleted file]
ghc/tests/codeGen/should_run/cg005.stdout [deleted file]
ghc/tests/codeGen/should_run/cg006.hs [deleted file]
ghc/tests/codeGen/should_run/cg006.stdout [deleted file]
ghc/tests/codeGen/should_run/cg007.hs [deleted file]
ghc/tests/codeGen/should_run/cg007.stdout [deleted file]
ghc/tests/codeGen/should_run/cg008.hs [deleted file]
ghc/tests/codeGen/should_run/cg008.stdout [deleted file]
ghc/tests/codeGen/should_run/cg009.hs [deleted file]
ghc/tests/codeGen/should_run/cg009.stdout [deleted file]
ghc/tests/codeGen/should_run/cg010.hs [deleted file]
ghc/tests/codeGen/should_run/cg010.stdout [deleted file]
ghc/tests/codeGen/should_run/cg011.hs [deleted file]
ghc/tests/codeGen/should_run/cg011.stdout [deleted file]
ghc/tests/codeGen/should_run/cg012.hs [deleted file]
ghc/tests/codeGen/should_run/cg012.stdout [deleted file]
ghc/tests/codeGen/should_run/cg013.hs [deleted file]
ghc/tests/codeGen/should_run/cg013.stdout [deleted file]
ghc/tests/codeGen/should_run/cg014.hs [deleted file]
ghc/tests/codeGen/should_run/cg014.stdout [deleted file]
ghc/tests/codeGen/should_run/cg015.hs [deleted file]
ghc/tests/codeGen/should_run/cg015.stdout [deleted file]
ghc/tests/codeGen/should_run/cg016.hs [deleted file]
ghc/tests/codeGen/should_run/cg016.stderr [deleted file]
ghc/tests/codeGen/should_run/cg016.stdout [deleted file]
ghc/tests/codeGen/should_run/cg017.hs [deleted file]
ghc/tests/codeGen/should_run/cg017.stdout [deleted file]
ghc/tests/codeGen/should_run/cg018.hs [deleted file]
ghc/tests/codeGen/should_run/cg018.stdout [deleted file]
ghc/tests/codeGen/should_run/cg019.hs [deleted file]
ghc/tests/codeGen/should_run/cg019.stdout [deleted file]
ghc/tests/codeGen/should_run/cg020.hs [deleted file]
ghc/tests/codeGen/should_run/cg020.stdout [deleted file]
ghc/tests/codeGen/should_run/cg021.hs [deleted file]
ghc/tests/codeGen/should_run/cg021.stdout [deleted file]
ghc/tests/codeGen/should_run/cg022.hs [deleted file]
ghc/tests/codeGen/should_run/cg022.stdout [deleted file]
ghc/tests/codeGen/should_run/cg023.stdout [deleted file]
ghc/tests/codeGen/should_run/cg024.hs [deleted file]
ghc/tests/codeGen/should_run/cg024.stdout [deleted file]
ghc/tests/codeGen/should_run/cg025.hs [deleted file]
ghc/tests/codeGen/should_run/cg025.stderr [deleted file]
ghc/tests/codeGen/should_run/cg025.stdout [deleted file]
ghc/tests/codeGen/should_run/cg026.hs [deleted file]
ghc/tests/codeGen/should_run/cg026.stdout [deleted file]
ghc/tests/codeGen/should_run/cg027.hs [deleted file]
ghc/tests/codeGen/should_run/cg027.stdout [deleted file]
ghc/tests/codeGen/should_run/cg028.hs [deleted file]
ghc/tests/codeGen/should_run/cg028.stdout [deleted file]
ghc/tests/codeGen/should_run/cg029.hs [deleted file]
ghc/tests/codeGen/should_run/cg029.stdout [deleted file]
ghc/tests/codeGen/should_run/cg030.hs [deleted file]
ghc/tests/codeGen/should_run/cg030.stdout [deleted file]
ghc/tests/codeGen/should_run/cg031.hs [deleted file]
ghc/tests/codeGen/should_run/cg031.stdout [deleted file]
ghc/tests/codeGen/should_run/cg032.hs [deleted file]
ghc/tests/codeGen/should_run/cg032.stdout [deleted file]
ghc/tests/codeGen/should_run/cg033.hs [deleted file]
ghc/tests/codeGen/should_run/cg033.stdout [deleted file]
ghc/tests/codeGen/should_run/cg034.hs [deleted file]
ghc/tests/codeGen/should_run/cg034.stdout [deleted file]
ghc/tests/codeGen/should_run/cg035.hs [deleted file]
ghc/tests/codeGen/should_run/cg035.stdout [deleted file]
ghc/tests/codeGen/should_run/cg036.hs [deleted file]
ghc/tests/codeGen/should_run/cg036.stdout [deleted file]
ghc/tests/codeGen/should_run/cg037.hs [deleted file]
ghc/tests/codeGen/should_run/cg037.stdout [deleted file]
ghc/tests/codeGen/should_run/cg038.hs [deleted file]
ghc/tests/codeGen/should_run/cg038.stdout [deleted file]
ghc/tests/codeGen/should_run/cg039.hs [deleted file]
ghc/tests/codeGen/should_run/cg039.stdout [deleted file]
ghc/tests/codeGen/should_run/cg040.hs [deleted file]
ghc/tests/codeGen/should_run/cg040.stdout [deleted file]
ghc/tests/codeGen/should_run/cg042.hs [deleted file]
ghc/tests/codeGen/should_run/cg042.stdout [deleted file]
ghc/tests/codeGen/should_run/cg043.hs [deleted file]
ghc/tests/codeGen/should_run/cg044.hs [deleted file]
ghc/tests/codeGen/should_run/cg044.stdout [deleted file]
ghc/tests/codeGen/should_run/cg045.hs [deleted file]
ghc/tests/codeGen/should_run/cg045.stderr [deleted file]
ghc/tests/codeGen/should_run/cg046.hs [deleted file]
ghc/tests/codeGen/should_run/cg046.stdout [deleted file]
ghc/tests/codeGen/should_run/cg047.hs [deleted file]
ghc/tests/codeGen/should_run/cg047.stdout [deleted file]
ghc/tests/codeGen/should_run/cg048.hs [deleted file]
ghc/tests/codeGen/should_run/cg048.stdout [deleted file]
ghc/tests/codeGen/should_run/cg049.hs [deleted file]
ghc/tests/codeGen/should_run/cg049.stdout [deleted file]
ghc/tests/codeGen/should_run/cg050.hs [deleted file]
ghc/tests/codeGen/should_run/cg050.stdout [deleted file]
ghc/tests/concurrent/Makefile [deleted file]
ghc/tests/concurrent/should_run/Makefile [deleted file]
ghc/tests/concurrent/should_run/conc001.hs [deleted file]
ghc/tests/concurrent/should_run/conc001.stdout [deleted file]
ghc/tests/concurrent/should_run/conc002.hs [deleted file]
ghc/tests/concurrent/should_run/conc002.stdout [deleted file]
ghc/tests/concurrent/should_run/conc003.hs [deleted file]
ghc/tests/concurrent/should_run/conc003.stdout [deleted file]
ghc/tests/concurrent/should_run/conc004.hs [deleted file]
ghc/tests/concurrent/should_run/conc004.stdout [deleted file]
ghc/tests/concurrent/should_run/conc005.hs [deleted file]
ghc/tests/concurrent/should_run/conc005.stdout [deleted file]
ghc/tests/concurrent/should_run/conc006.hs [deleted file]
ghc/tests/concurrent/should_run/conc006.stdout [deleted file]
ghc/tests/concurrent/should_run/conc007.hs [deleted file]
ghc/tests/concurrent/should_run/conc007.stdout [deleted file]
ghc/tests/concurrent/should_run/conc008.hs [deleted file]
ghc/tests/concurrent/should_run/conc008.stdout [deleted file]
ghc/tests/concurrent/should_run/conc009.hs [deleted file]
ghc/tests/concurrent/should_run/conc009.stderr [deleted file]
ghc/tests/concurrent/should_run/conc010.hs [deleted file]
ghc/tests/concurrent/should_run/conc010.stdout [deleted file]
ghc/tests/concurrent/should_run/conc012.hs [deleted file]
ghc/tests/concurrent/should_run/conc012.stdout [deleted file]
ghc/tests/concurrent/should_run/conc013.hs [deleted file]
ghc/tests/concurrent/should_run/conc013.stdout [deleted file]
ghc/tests/concurrent/should_run/conc014.hs [deleted file]
ghc/tests/concurrent/should_run/conc014.stdout [deleted file]
ghc/tests/concurrent/should_run/conc015.hs [deleted file]
ghc/tests/concurrent/should_run/conc015.stdout [deleted file]
ghc/tests/concurrent/should_run/conc016.hs [deleted file]
ghc/tests/concurrent/should_run/conc016.stdout [deleted file]
ghc/tests/concurrent/should_run/conc017.hs [deleted file]
ghc/tests/concurrent/should_run/conc017.stdout [deleted file]
ghc/tests/concurrent/should_run/conc018.hs [deleted file]
ghc/tests/concurrent/should_run/conc018.stdout [deleted file]
ghc/tests/concurrent/should_run/conc019.hs [deleted file]
ghc/tests/concurrent/should_run/conc019.stdout [deleted file]
ghc/tests/concurrent/should_run/conc020.hs [deleted file]
ghc/tests/concurrent/should_run/conc020.stderr [deleted file]
ghc/tests/concurrent/should_run/conc021.hs [deleted file]
ghc/tests/concurrent/should_run/conc021.stderr [deleted file]
ghc/tests/concurrent/should_run/conc021.stderr-mingw [deleted file]
ghc/tests/concurrent/should_run/conc022.hs [deleted file]
ghc/tests/concurrent/should_run/conc022.stdout [deleted file]
ghc/tests/concurrent/should_run/conc023.hs [deleted file]
ghc/tests/concurrent/should_run/conc024.hs [deleted file]
ghc/tests/concurrent/should_run/conc024.stdout [deleted file]
ghc/tests/concurrent/should_run/conc025.hs [deleted file]
ghc/tests/concurrent/should_run/conc025.stdout [deleted file]
ghc/tests/concurrent/should_run/conc026.hs [deleted file]
ghc/tests/concurrent/should_run/conc027.hs [deleted file]
ghc/tests/concurrent/should_run/conc028.hs [deleted file]
ghc/tests/concurrent/should_run/conc028.stdout [deleted file]
ghc/tests/concurrent/should_run/conc029.hs [deleted file]
ghc/tests/concurrent/should_run/conc029.stdout [deleted file]
ghc/tests/concurrent/should_run/conc030.hs [deleted file]
ghc/tests/concurrent/should_run/conc030.stdout [deleted file]
ghc/tests/concurrent/should_run/conc031.hs [deleted file]
ghc/tests/concurrent/should_run/conc031.stdout [deleted file]
ghc/tests/concurrent/should_run/conc032.hs [deleted file]
ghc/tests/concurrent/should_run/conc032.stdout [deleted file]
ghc/tests/cpranal/Makefile [deleted file]
ghc/tests/cpranal/should_compile/Cpr001.hs [deleted file]
ghc/tests/cpranal/should_compile/Cpr001_imp.hs [deleted file]
ghc/tests/cpranal/should_compile/Makefile [deleted file]
ghc/tests/deSugar/Makefile [deleted file]
ghc/tests/deSugar/should_compile/Makefile [deleted file]
ghc/tests/deSugar/should_compile/cvh-ds-unboxed/Life2.lhs [deleted file]
ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UCopy.hi [deleted file]
ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UTypes.hi [deleted file]
ghc/tests/deSugar/should_compile/cvh-ds-unboxed/cvh-unbox1.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds-wildcard.hs [deleted file]
ghc/tests/deSugar/should_compile/ds-wildcard.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds001.hs [deleted file]
ghc/tests/deSugar/should_compile/ds001.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds002.hs [deleted file]
ghc/tests/deSugar/should_compile/ds002.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds003.hs [deleted file]
ghc/tests/deSugar/should_compile/ds003.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds004.hs [deleted file]
ghc/tests/deSugar/should_compile/ds004.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds005.hs [deleted file]
ghc/tests/deSugar/should_compile/ds005.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds006.hs [deleted file]
ghc/tests/deSugar/should_compile/ds006.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds007.hs [deleted file]
ghc/tests/deSugar/should_compile/ds007.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds008.hs [deleted file]
ghc/tests/deSugar/should_compile/ds008.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds009.hs [deleted file]
ghc/tests/deSugar/should_compile/ds009.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds010.hs [deleted file]
ghc/tests/deSugar/should_compile/ds010.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds011.hs [deleted file]
ghc/tests/deSugar/should_compile/ds011.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds012.hs [deleted file]
ghc/tests/deSugar/should_compile/ds012.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds013.hs [deleted file]
ghc/tests/deSugar/should_compile/ds013.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds014.hs [deleted file]
ghc/tests/deSugar/should_compile/ds014.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds015.hs [deleted file]
ghc/tests/deSugar/should_compile/ds015.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds016.hs [deleted file]
ghc/tests/deSugar/should_compile/ds016.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds017.hs [deleted file]
ghc/tests/deSugar/should_compile/ds017.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds018.hs [deleted file]
ghc/tests/deSugar/should_compile/ds018.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds019.hs [deleted file]
ghc/tests/deSugar/should_compile/ds019.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds020.hs [deleted file]
ghc/tests/deSugar/should_compile/ds020.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds021.hs [deleted file]
ghc/tests/deSugar/should_compile/ds021.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds022.hs [deleted file]
ghc/tests/deSugar/should_compile/ds022.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds023.hs [deleted file]
ghc/tests/deSugar/should_compile/ds023.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds024.hs [deleted file]
ghc/tests/deSugar/should_compile/ds024.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds025.hs [deleted file]
ghc/tests/deSugar/should_compile/ds025.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds026.hs [deleted file]
ghc/tests/deSugar/should_compile/ds026.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds027.hs [deleted file]
ghc/tests/deSugar/should_compile/ds027.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds028.hs [deleted file]
ghc/tests/deSugar/should_compile/ds028.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds029.hs [deleted file]
ghc/tests/deSugar/should_compile/ds029.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds030.hs [deleted file]
ghc/tests/deSugar/should_compile/ds030.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds031.hs [deleted file]
ghc/tests/deSugar/should_compile/ds031.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds032.hs [deleted file]
ghc/tests/deSugar/should_compile/ds032.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds033.hs [deleted file]
ghc/tests/deSugar/should_compile/ds033.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds034.hs [deleted file]
ghc/tests/deSugar/should_compile/ds034.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds035.hs [deleted file]
ghc/tests/deSugar/should_compile/ds035.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds036.hs [deleted file]
ghc/tests/deSugar/should_compile/ds036.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds037.hs [deleted file]
ghc/tests/deSugar/should_compile/ds037.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds038.hs [deleted file]
ghc/tests/deSugar/should_compile/ds038.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds039.hs [deleted file]
ghc/tests/deSugar/should_compile/ds039.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds040.hs [deleted file]
ghc/tests/deSugar/should_compile/ds040.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds041.hs [deleted file]
ghc/tests/deSugar/should_compile/ds041.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds042.hs [deleted file]
ghc/tests/deSugar/should_compile/ds043.hs [deleted file]
ghc/tests/deSugar/should_compile/ds043.stderr [deleted file]
ghc/tests/deSugar/should_compile/ds044.hs [deleted file]
ghc/tests/deSugar/should_compile/ds045.hs [deleted file]
ghc/tests/deSugar/should_compile/ds046.hs [deleted file]
ghc/tests/deSugar/should_compile/ds047.hs [deleted file]
ghc/tests/deSugar/should_compile/ds048.hs [deleted file]
ghc/tests/deSugar/should_compile/ds049.hs [deleted file]
ghc/tests/deSugar/should_compile/ds050.hs [deleted file]
ghc/tests/deSugar/should_compile/ds051.hs [deleted file]
ghc/tests/deSugar/should_compile/ds051.stderr [deleted file]
ghc/tests/deSugar/should_run/Makefile [deleted file]
ghc/tests/deSugar/should_run/dsrun001.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun001.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun002.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun002.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun003.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun003.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun004.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun004.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun005.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun005.stderr [deleted file]
ghc/tests/deSugar/should_run/dsrun005.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun006.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun006.stdout [deleted file]
ghc/tests/deSugar/should_run/dsrun007.hs [deleted file]
ghc/tests/deSugar/should_run/dsrun007.stderr [deleted file]
ghc/tests/deriving/Makefile [deleted file]
ghc/tests/deriving/should_compile/Makefile [deleted file]
ghc/tests/deriving/should_compile/drv001.hs [deleted file]
ghc/tests/deriving/should_compile/drv001.stderr [deleted file]
ghc/tests/deriving/should_compile/drv002.hs [deleted file]
ghc/tests/deriving/should_compile/drv002.stderr [deleted file]
ghc/tests/deriving/should_compile/drv003.hs [deleted file]
ghc/tests/deriving/should_compile/drv003.stderr [deleted file]
ghc/tests/deriving/should_compile/drv004.hs [deleted file]
ghc/tests/deriving/should_compile/drv004.stderr [deleted file]
ghc/tests/deriving/should_compile/drv005.hs [deleted file]
ghc/tests/deriving/should_compile/drv005.stderr [deleted file]
ghc/tests/deriving/should_compile/drv006.hs [deleted file]
ghc/tests/deriving/should_compile/drv006.stderr [deleted file]
ghc/tests/deriving/should_compile/drv007.hs [deleted file]
ghc/tests/deriving/should_compile/drv007.stderr [deleted file]
ghc/tests/deriving/should_compile/drv008.hs [deleted file]
ghc/tests/deriving/should_compile/drv008.stderr [deleted file]
ghc/tests/deriving/should_compile/drv009.hs [deleted file]
ghc/tests/deriving/should_compile/drv009.stderr [deleted file]
ghc/tests/deriving/should_compile/drv010.hs [deleted file]
ghc/tests/deriving/should_compile/drv010.stderr [deleted file]
ghc/tests/deriving/should_compile/drv011.hs [deleted file]
ghc/tests/deriving/should_fail/Makefile [deleted file]
ghc/tests/deriving/should_fail/drvfail001.hs [deleted file]
ghc/tests/deriving/should_fail/drvfail001.stderr [deleted file]
ghc/tests/deriving/should_fail/drvfail004.hs [deleted file]
ghc/tests/deriving/should_fail/drvfail004.stderr [deleted file]
ghc/tests/deriving/should_fail/drvfail007.hs [deleted file]
ghc/tests/deriving/should_fail/drvfail007.stderr [deleted file]
ghc/tests/deriving/should_run/Makefile [deleted file]
ghc/tests/deriving/should_run/drvrun001.hs [deleted file]
ghc/tests/deriving/should_run/drvrun001.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun002.hs [deleted file]
ghc/tests/deriving/should_run/drvrun002.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun003.hs [deleted file]
ghc/tests/deriving/should_run/drvrun003.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun004.hs [deleted file]
ghc/tests/deriving/should_run/drvrun004.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun005.hs [deleted file]
ghc/tests/deriving/should_run/drvrun005.stderr [deleted file]
ghc/tests/deriving/should_run/drvrun005.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun006.hs [deleted file]
ghc/tests/deriving/should_run/drvrun006.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun007.hs [deleted file]
ghc/tests/deriving/should_run/drvrun007.stdout [deleted file]
ghc/tests/deriving/should_run/drvrun008.hs [deleted file]
ghc/tests/deriving/should_run/drvrun008.stdout [deleted file]
ghc/tests/lib/CPUTime/CPUTime001.hs [deleted file]
ghc/tests/lib/CPUTime/CPUTime001.stdout [deleted file]
ghc/tests/lib/CPUTime/Makefile [deleted file]
ghc/tests/lib/Directory/Makefile [deleted file]
ghc/tests/lib/Directory/currentDirectory001.hs [deleted file]
ghc/tests/lib/Directory/currentDirectory001.stdout [deleted file]
ghc/tests/lib/Directory/directory001.hs [deleted file]
ghc/tests/lib/Directory/directory001.stdout [deleted file]
ghc/tests/lib/Directory/getDirectoryContents001.hs [deleted file]
ghc/tests/lib/Directory/getDirectoryContents001.stdout [deleted file]
ghc/tests/lib/Directory/getPermissions001.hs [deleted file]
ghc/tests/lib/Directory/getPermissions001.stdout [deleted file]
ghc/tests/lib/Directory/getPermissions001.stdout-mingw [deleted file]
ghc/tests/lib/IO/IOError001.hs [deleted file]
ghc/tests/lib/IO/IOError001.stdout [deleted file]
ghc/tests/lib/IO/IOError001.stdout-mingw [deleted file]
ghc/tests/lib/IO/Makefile [deleted file]
ghc/tests/lib/IO/finalization001.hs [deleted file]
ghc/tests/lib/IO/finalization001.stdout [deleted file]
ghc/tests/lib/IO/hClose001.hs [deleted file]
ghc/tests/lib/IO/hClose001.stdout [deleted file]
ghc/tests/lib/IO/hFileSize001.hs [deleted file]
ghc/tests/lib/IO/hFileSize001.stdout [deleted file]
ghc/tests/lib/IO/hFileSize001.stdout-mingw [deleted file]
ghc/tests/lib/IO/hFileSize002.hs [deleted file]
ghc/tests/lib/IO/hFileSize002.stdout [deleted file]
ghc/tests/lib/IO/hFlush001.hs [deleted file]
ghc/tests/lib/IO/hFlush001.stdout [deleted file]
ghc/tests/lib/IO/hGetBuffering001.hs [deleted file]
ghc/tests/lib/IO/hGetBuffering001.stdout [deleted file]
ghc/tests/lib/IO/hGetChar001.hs [deleted file]
ghc/tests/lib/IO/hGetChar001.stdin [deleted file]
ghc/tests/lib/IO/hGetChar001.stdout [deleted file]
ghc/tests/lib/IO/hGetLine001.hs [deleted file]
ghc/tests/lib/IO/hGetLine001.stdout [deleted file]
ghc/tests/lib/IO/hGetLine001.stdout-mingw [deleted file]
ghc/tests/lib/IO/hGetPosn001.hs [deleted file]
ghc/tests/lib/IO/hGetPosn001.in [deleted file]
ghc/tests/lib/IO/hGetPosn001.stdout [deleted file]
ghc/tests/lib/IO/hGetPosn001.stdout-mingw [deleted file]
ghc/tests/lib/IO/hIsEOF001.hs [deleted file]
ghc/tests/lib/IO/hIsEOF001.stdout [deleted file]
ghc/tests/lib/IO/hIsEOF002.hs [deleted file]
ghc/tests/lib/IO/hIsEOF002.stdout [deleted file]
ghc/tests/lib/IO/hReady001.hs [deleted file]
ghc/tests/lib/IO/hSeek001.hs [deleted file]
ghc/tests/lib/IO/hSeek001.in [deleted file]
ghc/tests/lib/IO/hSeek001.stdout [deleted file]
ghc/tests/lib/IO/hSeek002.hs [deleted file]
ghc/tests/lib/IO/hSeek002.stdout [deleted file]
ghc/tests/lib/IO/hSeek003.hs [deleted file]
ghc/tests/lib/IO/hSeek003.stdout [deleted file]
ghc/tests/lib/IO/hSeek004.hs [deleted file]
ghc/tests/lib/IO/hSeek004.stdout [deleted file]
ghc/tests/lib/IO/hSeek004.stdout-mingw [deleted file]
ghc/tests/lib/IO/hSetBuffering002.hs [deleted file]
ghc/tests/lib/IO/hSetBuffering002.stdout [deleted file]
ghc/tests/lib/IO/hSetBuffering003.hs [deleted file]
ghc/tests/lib/IO/hSetBuffering003.stderr [deleted file]
ghc/tests/lib/IO/hSetBuffering003.stdout [deleted file]
ghc/tests/lib/IO/ioeGetErrorString001.hs [deleted file]
ghc/tests/lib/IO/ioeGetErrorString001.stdout [deleted file]
ghc/tests/lib/IO/ioeGetFileName001.hs [deleted file]
ghc/tests/lib/IO/ioeGetFileName001.stdout [deleted file]
ghc/tests/lib/IO/ioeGetHandle001.hs [deleted file]
ghc/tests/lib/IO/ioeGetHandle001.stdout [deleted file]
ghc/tests/lib/IO/isEOF001.hs [deleted file]
ghc/tests/lib/IO/isEOF001.stdout [deleted file]
ghc/tests/lib/IO/misc001.hs [deleted file]
ghc/tests/lib/IO/misc001.stdout [deleted file]
ghc/tests/lib/IO/openFile001.hs [deleted file]
ghc/tests/lib/IO/openFile001.stdout [deleted file]
ghc/tests/lib/IO/openFile002.hs [deleted file]
ghc/tests/lib/IO/openFile002.stderr [deleted file]
ghc/tests/lib/IO/openFile003.hs [deleted file]
ghc/tests/lib/IO/openFile003.stdout [deleted file]
ghc/tests/lib/IO/openFile003.stdout-mingw [deleted file]
ghc/tests/lib/IO/openFile004.hs [deleted file]
ghc/tests/lib/IO/openFile004.stdout [deleted file]
ghc/tests/lib/IO/openFile005.hs [deleted file]
ghc/tests/lib/IO/openFile005.stdout [deleted file]
ghc/tests/lib/IO/openFile005.stdout-mingw [deleted file]
ghc/tests/lib/IO/openFile006.hs [deleted file]
ghc/tests/lib/IO/openFile006.stdout [deleted file]
ghc/tests/lib/IO/openFile007.hs [deleted file]
ghc/tests/lib/IO/openFile007.stdout [deleted file]
ghc/tests/lib/IO/putStr001.hs [deleted file]
ghc/tests/lib/IO/putStr001.stdout [deleted file]
ghc/tests/lib/IO/readFile001.hs [deleted file]
ghc/tests/lib/IO/readFile001.stdout [deleted file]
ghc/tests/lib/IO/readwrite001.hs [deleted file]
ghc/tests/lib/IO/readwrite001.stdout [deleted file]
ghc/tests/lib/IO/readwrite002.hs [deleted file]
ghc/tests/lib/IO/readwrite002.stdout [deleted file]
ghc/tests/lib/IOExts/Makefile [deleted file]
ghc/tests/lib/IOExts/echo001.hs [deleted file]
ghc/tests/lib/IOExts/echo001.stdout [deleted file]
ghc/tests/lib/IOExts/hTell001.hs [deleted file]
ghc/tests/lib/IOExts/hTell001.stdout [deleted file]
ghc/tests/lib/IOExts/hTell002.hs [deleted file]
ghc/tests/lib/IOExts/hTell002.stdout [deleted file]
ghc/tests/lib/IOExts/performGC001.hs [deleted file]
ghc/tests/lib/IOExts/performGC001.stdout [deleted file]
ghc/tests/lib/IOExts/trace001.hs [deleted file]
ghc/tests/lib/IOExts/trace001.stderr [deleted file]
ghc/tests/lib/IOExts/trace001.stdout [deleted file]
ghc/tests/lib/IORef/Makefile [deleted file]
ghc/tests/lib/IORef/ioref001.hs [deleted file]
ghc/tests/lib/IORef/ioref001.stdout [deleted file]
ghc/tests/lib/Makefile [deleted file]
ghc/tests/lib/System/Makefile [deleted file]
ghc/tests/lib/System/exitWith001.hs [deleted file]
ghc/tests/lib/System/exitWith001.stdout [deleted file]
ghc/tests/lib/System/getArgs001.hs [deleted file]
ghc/tests/lib/System/getArgs001.stdout [deleted file]
ghc/tests/lib/System/getArgs001.stdout-mingw [deleted file]
ghc/tests/lib/System/getEnv001.hs [deleted file]
ghc/tests/lib/System/getEnv001.stdout [deleted file]
ghc/tests/lib/System/system001.hs [deleted file]
ghc/tests/lib/System/system001.stdout [deleted file]
ghc/tests/lib/Time/Makefile [deleted file]
ghc/tests/lib/Time/time002.hs [deleted file]
ghc/tests/lib/Time/time002.stdout [deleted file]
ghc/tests/lib/Time/time003.hs [deleted file]
ghc/tests/lib/Time/time003.stdout [deleted file]
ghc/tests/lib/Time/time004.hs [deleted file]
ghc/tests/lib/Time/time004.stdout [deleted file]
ghc/tests/lib/TimeExts/Makefile [deleted file]
ghc/tests/lib/TimeExts/timeexts001.hs [deleted file]
ghc/tests/lib/TimeExts/timeexts001.stdout [deleted file]
ghc/tests/lib/net/Makefile [deleted file]
ghc/tests/lib/net/net001.hs [deleted file]
ghc/tests/lib/net/net001.stdout [deleted file]
ghc/tests/lib/posix/Makefile [deleted file]
ghc/tests/lib/posix/posix001.hs [deleted file]
ghc/tests/lib/posix/posix001.stdout [deleted file]
ghc/tests/lib/posix/posix002.hs [deleted file]
ghc/tests/lib/posix/posix002.stdout [deleted file]
ghc/tests/lib/posix/posix003.hs [deleted file]
ghc/tests/lib/posix/posix003.stdout [deleted file]
ghc/tests/lib/posix/posix004.hs [deleted file]
ghc/tests/lib/posix/posix004.stdout [deleted file]
ghc/tests/lib/posix/posix005.hs [deleted file]
ghc/tests/lib/posix/posix005.stdout [deleted file]
ghc/tests/lib/posix/posix006.hs [deleted file]
ghc/tests/lib/posix/posix006.stdout [deleted file]
ghc/tests/lib/posix/posix007.hs [deleted file]
ghc/tests/lib/posix/posix007.stdout [deleted file]
ghc/tests/lib/posix/posix008.hs [deleted file]
ghc/tests/lib/posix/posix008.stdout [deleted file]
ghc/tests/lib/posix/posix009.hs [deleted file]
ghc/tests/lib/posix/posix009.stdout [deleted file]
ghc/tests/lib/posix/posix010.hs [deleted file]
ghc/tests/lib/posix/posix010.stdout [deleted file]
ghc/tests/lib/posix/posix011.hs [deleted file]
ghc/tests/lib/posix/posix011.stdout [deleted file]
ghc/tests/lib/posix/posix012.hs [deleted file]
ghc/tests/lib/posix/posix012.stdout [deleted file]
ghc/tests/lib/posix/posix013.hs [deleted file]
ghc/tests/lib/posix/posix014.hs [deleted file]
ghc/tests/lib/should_run/Makefile [deleted file]
ghc/tests/lib/should_run/addr001.hs [deleted file]
ghc/tests/lib/should_run/addr001.stdout [deleted file]
ghc/tests/lib/should_run/char001.hs [deleted file]
ghc/tests/lib/should_run/char001.stdout [deleted file]
ghc/tests/lib/should_run/dynamic001.hs [deleted file]
ghc/tests/lib/should_run/dynamic001.stdout [deleted file]
ghc/tests/lib/should_run/dynamic002.hs [deleted file]
ghc/tests/lib/should_run/dynamic002.stdout [deleted file]
ghc/tests/lib/should_run/enum01.hs [deleted file]
ghc/tests/lib/should_run/enum01.stdout [deleted file]
ghc/tests/lib/should_run/enum02.hs [deleted file]
ghc/tests/lib/should_run/enum02.stdout [deleted file]
ghc/tests/lib/should_run/enum03.hs [deleted file]
ghc/tests/lib/should_run/enum03.stdout [deleted file]
ghc/tests/lib/should_run/exceptions001.hs [deleted file]
ghc/tests/lib/should_run/exceptions001.stdout [deleted file]
ghc/tests/lib/should_run/list001.hs [deleted file]
ghc/tests/lib/should_run/list001.stdout [deleted file]
ghc/tests/lib/should_run/memo001.hs [deleted file]
ghc/tests/lib/should_run/memo001.stdout [deleted file]
ghc/tests/lib/should_run/memo002.hs [deleted file]
ghc/tests/lib/should_run/memo002.stdout [deleted file]
ghc/tests/lib/should_run/packedstring001.hs [deleted file]
ghc/tests/lib/should_run/packedstring001.stdout [deleted file]
ghc/tests/lib/should_run/rand001.hs [deleted file]
ghc/tests/lib/should_run/rand001.stdout [deleted file]
ghc/tests/lib/should_run/show001.hs [deleted file]
ghc/tests/lib/should_run/show001.stdout [deleted file]
ghc/tests/lib/should_run/stableptr001.hs [deleted file]
ghc/tests/lib/should_run/stableptr001.stdout [deleted file]
ghc/tests/lib/should_run/stableptr003.hs [deleted file]
ghc/tests/lib/should_run/stableptr003.stdout [deleted file]
ghc/tests/lib/should_run/stableptr004.hs [deleted file]
ghc/tests/lib/should_run/stableptr004.stdout [deleted file]
ghc/tests/lib/should_run/text001.hs [deleted file]
ghc/tests/lib/should_run/text001.stdout [deleted file]
ghc/tests/lib/should_run/uri001.hs [deleted file]
ghc/tests/lib/should_run/uri001.stdout [deleted file]
ghc/tests/lib/should_run/weak001.hs [deleted file]
ghc/tests/lib/socket/Makefile [deleted file]
ghc/tests/lib/socket/socket001.hs [deleted file]
ghc/tests/lib/socket/socket001.stdout [deleted file]
ghc/tests/lib/socket/socket002.hs [deleted file]
ghc/tests/lib/socket/socket002.stdout [deleted file]
ghc/tests/lib/socket/socket003.hs [deleted file]
ghc/tests/lib/socket/socket003.stdout [deleted file]
ghc/tests/lib/socket/socket004.hs [deleted file]
ghc/tests/lib/socket/socket004.stdout [deleted file]
ghc/tests/lib/socket/socket005.hs [deleted file]
ghc/tests/lib/socket/socket005.stdout [deleted file]
ghc/tests/lib/socket/socket006.hs [deleted file]
ghc/tests/lib/socket/socket006.stdout [deleted file]
ghc/tests/lib/socket/socket007.hs [deleted file]
ghc/tests/lib/socket/socket007.stdout [deleted file]
ghc/tests/lib/socket/socket008.hs [deleted file]
ghc/tests/lib/socket/socket008.stdout [deleted file]
ghc/tests/lib/socket/socket009.hs [deleted file]
ghc/tests/lib/socket/socket009.stdout [deleted file]
ghc/tests/numeric/Makefile [deleted file]
ghc/tests/numeric/should_run/Makefile [deleted file]
ghc/tests/numeric/should_run/arith001.hs [deleted file]
ghc/tests/numeric/should_run/arith001.stdout [deleted file]
ghc/tests/numeric/should_run/arith002.hs [deleted file]
ghc/tests/numeric/should_run/arith002.stdout [deleted file]
ghc/tests/numeric/should_run/arith003.hs [deleted file]
ghc/tests/numeric/should_run/arith003.stdout [deleted file]
ghc/tests/numeric/should_run/arith004.hs [deleted file]
ghc/tests/numeric/should_run/arith004.stdout [deleted file]
ghc/tests/numeric/should_run/arith005.hs [deleted file]
ghc/tests/numeric/should_run/arith005.stdout [deleted file]
ghc/tests/numeric/should_run/arith006.hs [deleted file]
ghc/tests/numeric/should_run/arith006.stdout [deleted file]
ghc/tests/numeric/should_run/arith007.hs [deleted file]
ghc/tests/numeric/should_run/arith007.stdout [deleted file]
ghc/tests/numeric/should_run/arith008.hs [deleted file]
ghc/tests/numeric/should_run/arith008.stdout [deleted file]
ghc/tests/numeric/should_run/arith009.hs [deleted file]
ghc/tests/numeric/should_run/arith009.stdout [deleted file]
ghc/tests/numeric/should_run/arith010.hs [deleted file]
ghc/tests/numeric/should_run/arith010.stdout [deleted file]
ghc/tests/numeric/should_run/arith011.hs [deleted file]
ghc/tests/numeric/should_run/arith011.stdout [deleted file]
ghc/tests/numeric/should_run/arith012.hs [deleted file]
ghc/tests/numeric/should_run/arith012.stdout [deleted file]
ghc/tests/numeric/should_run/arith013.hs [deleted file]
ghc/tests/numeric/should_run/arith013.stdout [deleted file]
ghc/tests/numeric/should_run/num001.hs [deleted file]
ghc/tests/numeric/should_run/num001.stdout [deleted file]
ghc/tests/numeric/should_run/num002.hs [deleted file]
ghc/tests/numeric/should_run/num002.stdout [deleted file]
ghc/tests/numeric/should_run/num003.hs [deleted file]
ghc/tests/numeric/should_run/num003.stdout [deleted file]
ghc/tests/numeric/should_run/num004.hs [deleted file]
ghc/tests/numeric/should_run/num004.stdout [deleted file]
ghc/tests/numeric/should_run/num005.hs [deleted file]
ghc/tests/numeric/should_run/num005.stdout [deleted file]
ghc/tests/numeric/should_run/num006.hs [deleted file]
ghc/tests/numeric/should_run/num006.stdout [deleted file]
ghc/tests/numeric/should_run/num007.hs [deleted file]
ghc/tests/numeric/should_run/num007.stdout [deleted file]
ghc/tests/numeric/should_run/num008.hs [deleted file]
ghc/tests/numeric/should_run/num008.stdout [deleted file]
ghc/tests/numeric/should_run/num009.hs [deleted file]
ghc/tests/numeric/should_run/num009.stdout [deleted file]
ghc/tests/numeric/should_run/num010.hs [deleted file]
ghc/tests/numeric/should_run/num010.stdout [deleted file]
ghc/tests/numeric/should_run/num011.hs [deleted file]
ghc/tests/numeric/should_run/num011.stdout [deleted file]
ghc/tests/printing/Makefile [deleted file]
ghc/tests/printing/should_compile/Makefile [deleted file]
ghc/tests/printing/should_compile/Print001.hs [deleted file]
ghc/tests/printing/should_compile/Print001.stderr [deleted file]
ghc/tests/printing/should_compile/Print002.hs [deleted file]
ghc/tests/printing/should_compile/Print002.stderr [deleted file]
ghc/tests/printing/should_compile/Print003.hs [deleted file]
ghc/tests/printing/should_compile/Print003.stderr [deleted file]
ghc/tests/printing/should_compile/Print004.hs [deleted file]
ghc/tests/printing/should_compile/Print004.stderr [deleted file]
ghc/tests/programs/10queens/10queens.stdout [deleted file]
ghc/tests/programs/10queens/Main.hs [deleted file]
ghc/tests/programs/10queens/Makefile [deleted file]
ghc/tests/programs/Makefile [deleted file]
ghc/tests/programs/andre_monad/Main.hs [deleted file]
ghc/tests/programs/andre_monad/Makefile [deleted file]
ghc/tests/programs/andre_monad/andre_monad.stdout [deleted file]
ghc/tests/programs/andy_cherry/DataTypes.lhs [deleted file]
ghc/tests/programs/andy_cherry/GenUtils.lhs [deleted file]
ghc/tests/programs/andy_cherry/Interp.lhs [deleted file]
ghc/tests/programs/andy_cherry/InterpUtils.lhs [deleted file]
ghc/tests/programs/andy_cherry/Main.lhs [deleted file]
ghc/tests/programs/andy_cherry/Makefile [deleted file]
ghc/tests/programs/andy_cherry/Parser.lhs [deleted file]
ghc/tests/programs/andy_cherry/PrintTEX.lhs [deleted file]
ghc/tests/programs/andy_cherry/andy_cherry.stdout [deleted file]
ghc/tests/programs/andy_cherry/mygames.pgn [deleted file]
ghc/tests/programs/areid_pass/Main.hs [deleted file]
ghc/tests/programs/areid_pass/Makefile [deleted file]
ghc/tests/programs/areid_pass/areid_pass.stdout [deleted file]
ghc/tests/programs/barton-mangler-bug/Basic.hs [deleted file]
ghc/tests/programs/barton-mangler-bug/Bug.hs [deleted file]
ghc/tests/programs/barton-mangler-bug/Main.hs [deleted file]
ghc/tests/programs/barton-mangler-bug/Makefile [deleted file]
ghc/tests/programs/barton-mangler-bug/Physical.hs [deleted file]
ghc/tests/programs/barton-mangler-bug/Plot.lhs [deleted file]
ghc/tests/programs/barton-mangler-bug/PlotExample.lhs [deleted file]
ghc/tests/programs/barton-mangler-bug/TypesettingTricks.hs [deleted file]
ghc/tests/programs/callback/Main.hs [deleted file]
ghc/tests/programs/callback/Makefile [deleted file]
ghc/tests/programs/callback/callback.stdout [deleted file]
ghc/tests/programs/cholewo-eval/Arr.lhs [deleted file]
ghc/tests/programs/cholewo-eval/Main.lhs [deleted file]
ghc/tests/programs/cholewo-eval/Makefile [deleted file]
ghc/tests/programs/cholewo-eval/cholewo-eval.stdout [deleted file]
ghc/tests/programs/cvh_unboxing/Append.lhs [deleted file]
ghc/tests/programs/cvh_unboxing/Main.lhs [deleted file]
ghc/tests/programs/cvh_unboxing/Makefile [deleted file]
ghc/tests/programs/cvh_unboxing/README [deleted file]
ghc/tests/programs/cvh_unboxing/Types.lhs [deleted file]
ghc/tests/programs/cvh_unboxing/cvh_unboxing.stdout [deleted file]
ghc/tests/programs/dmgob_native1/BugReport [deleted file]
ghc/tests/programs/dmgob_native1/Main.lhs [deleted file]
ghc/tests/programs/dmgob_native1/Makefile [deleted file]
ghc/tests/programs/dmgob_native1/MaybeStateT.lhs [deleted file]
ghc/tests/programs/dmgob_native1/dmgob_native1.stdout [deleted file]
ghc/tests/programs/dmgob_native1/generate_vectors.c [deleted file]
ghc/tests/programs/dmgob_native1/test_data [deleted file]
ghc/tests/programs/dmgob_native2/Bug_report [deleted file]
ghc/tests/programs/dmgob_native2/LPA.lhs [deleted file]
ghc/tests/programs/dmgob_native2/Main.lhs [deleted file]
ghc/tests/programs/dmgob_native2/Makefile [deleted file]
ghc/tests/programs/dmgob_native2/dmgob_native2.stdin [deleted file]
ghc/tests/programs/dmgob_native2/dmgob_native2.stdout [deleted file]
ghc/tests/programs/dmgob_native2/dmgob_native2.stdout2 [deleted file]
ghc/tests/programs/fast2haskell/Fast2haskell.hs [deleted file]
ghc/tests/programs/fast2haskell/Main.hs [deleted file]
ghc/tests/programs/fast2haskell/Makefile [deleted file]
ghc/tests/programs/fast2haskell/Word.hs [deleted file]
ghc/tests/programs/fast2haskell/fast2haskell.stdout [deleted file]
ghc/tests/programs/fexport/For.hs [deleted file]
ghc/tests/programs/fexport/Makefile [deleted file]
ghc/tests/programs/fexport/fexport.stdout [deleted file]
ghc/tests/programs/fexport/test.c [deleted file]
ghc/tests/programs/fun_insts/Main.hs [deleted file]
ghc/tests/programs/fun_insts/Makefile [deleted file]
ghc/tests/programs/fun_insts/fun_insts.stdout [deleted file]
ghc/tests/programs/galois_raytrace/CSG.hs [deleted file]
ghc/tests/programs/galois_raytrace/Construct.hs [deleted file]
ghc/tests/programs/galois_raytrace/Data.hs [deleted file]
ghc/tests/programs/galois_raytrace/Eval.hs [deleted file]
ghc/tests/programs/galois_raytrace/Geometry.hs [deleted file]
ghc/tests/programs/galois_raytrace/Illumination.hs [deleted file]
ghc/tests/programs/galois_raytrace/Intersections.hs [deleted file]
ghc/tests/programs/galois_raytrace/Interval.hs [deleted file]
ghc/tests/programs/galois_raytrace/Main.hs [deleted file]
ghc/tests/programs/galois_raytrace/Makefile [deleted file]
ghc/tests/programs/galois_raytrace/Misc.hs [deleted file]
ghc/tests/programs/galois_raytrace/Parse.hs [deleted file]
ghc/tests/programs/galois_raytrace/Pixmap.hs [deleted file]
ghc/tests/programs/galois_raytrace/Primitives.hs [deleted file]
ghc/tests/programs/galois_raytrace/RayTrace.hs [deleted file]
ghc/tests/programs/galois_raytrace/Surface.hs [deleted file]
ghc/tests/programs/galois_raytrace/galois.gml [deleted file]
ghc/tests/programs/galois_raytrace/galois_raytrace.stdout [deleted file]
ghc/tests/programs/hill_stk_oflow/MAIL [deleted file]
ghc/tests/programs/hill_stk_oflow/Main.hs [deleted file]
ghc/tests/programs/hill_stk_oflow/Makefile [deleted file]
ghc/tests/programs/hill_stk_oflow/hill_stk_oflow.stdout [deleted file]
ghc/tests/programs/ipoole_spec_class/GoferPreludeBits.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/Io.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/JobApp.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/JobImp.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/Lib.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/Lognum.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/Main.lhs [deleted file]
ghc/tests/programs/ipoole_spec_class/Makefile [deleted file]
ghc/tests/programs/ipoole_spec_class/README [deleted file]
ghc/tests/programs/ipoole_spec_class/ipoole_spec_class.stdout [deleted file]
ghc/tests/programs/jeff-bug/AQ.hs [deleted file]
ghc/tests/programs/jeff-bug/Arithmetic.hs [deleted file]
ghc/tests/programs/jeff-bug/BoundedSet.hs [deleted file]
ghc/tests/programs/jeff-bug/Cell.hs [deleted file]
ghc/tests/programs/jeff-bug/DLX.hs [deleted file]
ghc/tests/programs/jeff-bug/DLX_Cell.hs [deleted file]
ghc/tests/programs/jeff-bug/DLX_Op.hs [deleted file]
ghc/tests/programs/jeff-bug/DLX_Reg.hs [deleted file]
ghc/tests/programs/jeff-bug/Devices.hs [deleted file]
ghc/tests/programs/jeff-bug/EUs.hs [deleted file]
ghc/tests/programs/jeff-bug/Hawk.hs [deleted file]
ghc/tests/programs/jeff-bug/HawkIO.hs [deleted file]
ghc/tests/programs/jeff-bug/IFU.hs [deleted file]
ghc/tests/programs/jeff-bug/Init.hs [deleted file]
ghc/tests/programs/jeff-bug/Instruction.hs [deleted file]
ghc/tests/programs/jeff-bug/Main.hs [deleted file]
ghc/tests/programs/jeff-bug/Makefile [deleted file]
ghc/tests/programs/jeff-bug/Memory.hs [deleted file]
ghc/tests/programs/jeff-bug/PipeReg.hs [deleted file]
ghc/tests/programs/jeff-bug/Predict.hs [deleted file]
ghc/tests/programs/jeff-bug/PreludeSig.hs [deleted file]
ghc/tests/programs/jeff-bug/Probe.hs [deleted file]
ghc/tests/programs/jeff-bug/Processor.hs [deleted file]
ghc/tests/programs/jeff-bug/RAT.hs [deleted file]
ghc/tests/programs/jeff-bug/RF.hs [deleted file]
ghc/tests/programs/jeff-bug/ROB.hs [deleted file]
ghc/tests/programs/jeff-bug/ROB_insert.hs [deleted file]
ghc/tests/programs/jeff-bug/ROB_retire.hs [deleted file]
ghc/tests/programs/jeff-bug/RS.hs [deleted file]
ghc/tests/programs/jeff-bug/Register.hs [deleted file]
ghc/tests/programs/jeff-bug/STEx.hs [deleted file]
ghc/tests/programs/jeff-bug/Signal.hs [deleted file]
ghc/tests/programs/jeff-bug/StateArray.hs [deleted file]
ghc/tests/programs/jeff-bug/Trans.hs [deleted file]
ghc/tests/programs/jeff-bug/TransSig.hs [deleted file]
ghc/tests/programs/jeff-bug/Utilities.hs [deleted file]
ghc/tests/programs/jeff-bug/Utils.hs [deleted file]
ghc/tests/programs/jeff-bug/VRegister.hs [deleted file]
ghc/tests/programs/jeff-bug/Words.hs [deleted file]
ghc/tests/programs/jeff-bug/hawk-macros.h [deleted file]
ghc/tests/programs/jl_defaults/Main.hs [deleted file]
ghc/tests/programs/jl_defaults/Makefile [deleted file]
ghc/tests/programs/jl_defaults/jl_defaults.stdin [deleted file]
ghc/tests/programs/jl_defaults/jl_defaults.stdout [deleted file]
ghc/tests/programs/jon_polycase/Foo.lhs [deleted file]
ghc/tests/programs/jon_polycase/Makefile [deleted file]
ghc/tests/programs/jq_readsPrec/Main.hs [deleted file]
ghc/tests/programs/jq_readsPrec/Makefile [deleted file]
ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdin [deleted file]
ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdout [deleted file]
ghc/tests/programs/jtod_circint/Bit.hs [deleted file]
ghc/tests/programs/jtod_circint/LogFun.hs [deleted file]
ghc/tests/programs/jtod_circint/Main.hs [deleted file]
ghc/tests/programs/jtod_circint/Makefile [deleted file]
ghc/tests/programs/jtod_circint/Signal.hs [deleted file]
ghc/tests/programs/jtod_circint/jtod_circint.stdout [deleted file]
ghc/tests/programs/jules_xref/Main.hs [deleted file]
ghc/tests/programs/jules_xref/Makefile [deleted file]
ghc/tests/programs/jules_xref/jules_xref.stdin [deleted file]
ghc/tests/programs/jules_xref/jules_xref.stdout [deleted file]
ghc/tests/programs/jules_xref2/Main.hs [deleted file]
ghc/tests/programs/jules_xref2/Makefile [deleted file]
ghc/tests/programs/jules_xref2/jules_xref2.stdin [deleted file]
ghc/tests/programs/jules_xref2/jules_xref2.stdout [deleted file]
ghc/tests/programs/launchbury/Main.hs [deleted file]
ghc/tests/programs/launchbury/Makefile [deleted file]
ghc/tests/programs/launchbury/launchbury.stdin [deleted file]
ghc/tests/programs/launchbury/launchbury.stdout [deleted file]
ghc/tests/programs/lennart_array/Main.hs [deleted file]
ghc/tests/programs/lennart_array/Makefile [deleted file]
ghc/tests/programs/lennart_array/lennart_array.stdout [deleted file]
ghc/tests/programs/lennart_range/Main.hs [deleted file]
ghc/tests/programs/lennart_range/Makefile [deleted file]
ghc/tests/programs/lennart_range/lennart_range.stdout [deleted file]
ghc/tests/programs/lex/Main.hs [deleted file]
ghc/tests/programs/lex/Makefile [deleted file]
ghc/tests/programs/lex/lex.stdin [deleted file]
ghc/tests/programs/lex/lex.stdout [deleted file]
ghc/tests/programs/life_space_leak/Main.hs [deleted file]
ghc/tests/programs/life_space_leak/Makefile [deleted file]
ghc/tests/programs/life_space_leak/life.test [deleted file]
ghc/tests/programs/life_space_leak/life_space_leak.stdout [deleted file]
ghc/tests/programs/mk/boilerplate.mk [deleted file]
ghc/tests/programs/mk/target.mk [deleted file]
ghc/tests/programs/north_array/Main.hs [deleted file]
ghc/tests/programs/north_array/Makefile [deleted file]
ghc/tests/programs/north_array/north_array.stdout [deleted file]
ghc/tests/programs/north_lias/Bits.lhs [deleted file]
ghc/tests/programs/north_lias/LIAS.lhs [deleted file]
ghc/tests/programs/north_lias/Main.lhs [deleted file]
ghc/tests/programs/north_lias/Makefile [deleted file]
ghc/tests/programs/north_lias/north_lias.stdout [deleted file]
ghc/tests/programs/okeefe_neural/Main.hs [deleted file]
ghc/tests/programs/okeefe_neural/Makefile [deleted file]
ghc/tests/programs/record_upd/Main.hs [deleted file]
ghc/tests/programs/record_upd/Makefile [deleted file]
ghc/tests/programs/record_upd/record_upd.stdout [deleted file]
ghc/tests/programs/rittri/Main.hs [deleted file]
ghc/tests/programs/rittri/Makefile [deleted file]
ghc/tests/programs/rittri/rittri.stdin [deleted file]
ghc/tests/programs/rittri/rittri.stdout [deleted file]
ghc/tests/programs/sanders_array/Main.hs [deleted file]
ghc/tests/programs/sanders_array/Makefile [deleted file]
ghc/tests/programs/sanders_array/sanders_array.stdout [deleted file]
ghc/tests/programs/seward-space-leak/Main.lhs [deleted file]
ghc/tests/programs/seward-space-leak/Makefile [deleted file]
ghc/tests/programs/seward-space-leak/README [deleted file]
ghc/tests/programs/seward-space-leak/cg023.stdout [deleted file]
ghc/tests/programs/seward-space-leak/seward-space-leak.stdout [deleted file]
ghc/tests/programs/strict_anns/Main.hs [deleted file]
ghc/tests/programs/strict_anns/Makefile [deleted file]
ghc/tests/programs/strict_anns/strict_anns.stdout [deleted file]
ghc/tests/programs/zhang_ccall/MAIL [deleted file]
ghc/tests/programs/zhang_ccall/Main.hs [deleted file]
ghc/tests/programs/zhang_ccall/Makefile [deleted file]
ghc/tests/programs/zhang_ccall/ccall.c [deleted file]
ghc/tests/programs/zhang_ccall/ccall.h [deleted file]
ghc/tests/programs/zhang_ccall/zhang_ccall.stdout [deleted file]
ghc/tests/reader/Makefile [deleted file]
ghc/tests/reader/should_compile/Makefile [deleted file]
ghc/tests/reader/should_compile/read001.hs [deleted file]
ghc/tests/reader/should_compile/read002.hs [deleted file]
ghc/tests/reader/should_compile/read002.stderr [deleted file]
ghc/tests/reader/should_compile/read003.hs [deleted file]
ghc/tests/reader/should_compile/read004.hs [deleted file]
ghc/tests/reader/should_compile/read005.hs [deleted file]
ghc/tests/reader/should_compile/read006.hs [deleted file]
ghc/tests/reader/should_compile/read007.hs [deleted file]
ghc/tests/reader/should_compile/read007.stderr [deleted file]
ghc/tests/reader/should_compile/read008.hs [deleted file]
ghc/tests/reader/should_compile/read009.hs [deleted file]
ghc/tests/reader/should_compile/read010.hs [deleted file]
ghc/tests/reader/should_compile/read010.stderr [deleted file]
ghc/tests/reader/should_compile/read011.hs [deleted file]
ghc/tests/reader/should_compile/read012.hs [deleted file]
ghc/tests/reader/should_compile/read013.hs [deleted file]
ghc/tests/reader/should_compile/read014.hs [deleted file]
ghc/tests/reader/should_compile/read014.stderr [deleted file]
ghc/tests/reader/should_compile/read015.hs [deleted file]
ghc/tests/reader/should_compile/read016.hs [deleted file]
ghc/tests/reader/should_compile/read017.hs [deleted file]
ghc/tests/reader/should_compile/read018.hs [deleted file]
ghc/tests/reader/should_compile/read019.hs [deleted file]
ghc/tests/reader/should_compile/read020.hs [deleted file]
ghc/tests/reader/should_compile/read021.hs [deleted file]
ghc/tests/reader/should_compile/read022.hs [deleted file]
ghc/tests/reader/should_compile/read023.hs [deleted file]
ghc/tests/reader/should_compile/read024.hs [deleted file]
ghc/tests/reader/should_compile/read025.hs [deleted file]
ghc/tests/reader/should_compile/read026.hs [deleted file]
ghc/tests/reader/should_compile/read027.hs [deleted file]
ghc/tests/reader/should_compile/read028.hs [deleted file]
ghc/tests/reader/should_compile/read029.hs [deleted file]
ghc/tests/reader/should_compile/read030.hs [deleted file]
ghc/tests/reader/should_fail/Makefile [deleted file]
ghc/tests/reader/should_fail/read001.hs [deleted file]
ghc/tests/reader/should_fail/read001.stderr [deleted file]
ghc/tests/reader/should_fail/read001.stdout [deleted file]
ghc/tests/reader/should_fail/read002.hs [deleted file]
ghc/tests/reader/should_fail/read002.stderr [deleted file]
ghc/tests/reader/should_fail/read003.hs [deleted file]
ghc/tests/reader/should_fail/read003.stderr [deleted file]
ghc/tests/reader/should_fail/read003.stdout [deleted file]
ghc/tests/reader/should_fail/read004.hs [deleted file]
ghc/tests/reader/should_fail/read004.stderr [deleted file]
ghc/tests/reader/should_fail/read005.hs [deleted file]
ghc/tests/reader/should_fail/read005.stderr [deleted file]
ghc/tests/reader/should_fail/read006.hs [deleted file]
ghc/tests/reader/should_fail/read006.stderr [deleted file]
ghc/tests/reader/should_fail/read007.hs [deleted file]
ghc/tests/reader/should_fail/read007.stderr [deleted file]
ghc/tests/reader/should_fail/read007.stdout [deleted file]
ghc/tests/reader/should_fail/read008.hs [deleted file]
ghc/tests/reader/should_fail/read008.stderr [deleted file]
ghc/tests/reader/should_fail/read009.hs [deleted file]
ghc/tests/reader/should_fail/read009.stderr [deleted file]
ghc/tests/reader/should_fail/read009.stdout [deleted file]
ghc/tests/reader/should_fail/read011.hs [deleted file]
ghc/tests/reader/should_fail/read011.stderr [deleted file]
ghc/tests/reader/should_fail/read012.hs [deleted file]
ghc/tests/reader/should_fail/read012.stderr [deleted file]
ghc/tests/reader/should_fail/read013.hs [deleted file]
ghc/tests/reader/should_fail/read013.stderr [deleted file]
ghc/tests/reader/should_fail/read014.hs [deleted file]
ghc/tests/reader/should_fail/read014.stderr [deleted file]
ghc/tests/reader/should_fail/read015.hs [deleted file]
ghc/tests/reader/should_fail/read015.stderr [deleted file]
ghc/tests/reader/should_fail/read016.hs [deleted file]
ghc/tests/reader/should_fail/read016.stderr [deleted file]
ghc/tests/reader/should_fail/read016.stdout [deleted file]
ghc/tests/reader/should_fail/read017.hs [deleted file]
ghc/tests/reader/should_fail/read017.stderr [deleted file]
ghc/tests/rename/Makefile [deleted file]
ghc/tests/rename/should_compile/Int10.hi [deleted file]
ghc/tests/rename/should_compile/Makefile [deleted file]
ghc/tests/rename/should_compile/Rn017.hi [deleted file]
ghc/tests/rename/should_compile/Rn037Help.hs [deleted file]
ghc/tests/rename/should_compile/rn003.hs [deleted file]
ghc/tests/rename/should_compile/rn003.stderr [deleted file]
ghc/tests/rename/should_compile/rn005.hs [deleted file]
ghc/tests/rename/should_compile/rn005.stderr [deleted file]
ghc/tests/rename/should_compile/rn006.hs [deleted file]
ghc/tests/rename/should_compile/rn006.stderr [deleted file]
ghc/tests/rename/should_compile/rn009.hs [deleted file]
ghc/tests/rename/should_compile/rn009.stderr [deleted file]
ghc/tests/rename/should_compile/rn010.hs [deleted file]
ghc/tests/rename/should_compile/rn010.stderr [deleted file]
ghc/tests/rename/should_compile/rn011.hs [deleted file]
ghc/tests/rename/should_compile/rn011.stderr [deleted file]
ghc/tests/rename/should_compile/rn012.hs [deleted file]
ghc/tests/rename/should_compile/rn012.stderr [deleted file]
ghc/tests/rename/should_compile/rn013.hs [deleted file]
ghc/tests/rename/should_compile/rn013.stderr [deleted file]
ghc/tests/rename/should_compile/rn016.stderr [deleted file]
ghc/tests/rename/should_compile/rn017.hs [deleted file]
ghc/tests/rename/should_compile/rn018.stderr [deleted file]
ghc/tests/rename/should_compile/rn019.hs [deleted file]
ghc/tests/rename/should_compile/rn020.hs [deleted file]
ghc/tests/rename/should_compile/rn022.hs [deleted file]
ghc/tests/rename/should_compile/rn022.stderr [deleted file]
ghc/tests/rename/should_compile/rn023.hs [deleted file]
ghc/tests/rename/should_compile/rn024.hs [deleted file]
ghc/tests/rename/should_compile/rn025.hs [deleted file]
ghc/tests/rename/should_compile/rn025.stderr [deleted file]
ghc/tests/rename/should_compile/rn026.hs [deleted file]
ghc/tests/rename/should_compile/rn027.hs [deleted file]
ghc/tests/rename/should_compile/rn028.hs [deleted file]
ghc/tests/rename/should_compile/rn029.hs [deleted file]
ghc/tests/rename/should_compile/rn030.hs [deleted file]
ghc/tests/rename/should_compile/rn031.hs [deleted file]
ghc/tests/rename/should_compile/rn032.hs [deleted file]
ghc/tests/rename/should_compile/rn033.hs [deleted file]
ghc/tests/rename/should_compile/rn034.hs [deleted file]
ghc/tests/rename/should_compile/rn035.hs [deleted file]
ghc/tests/rename/should_compile/rn036.hs [deleted file]
ghc/tests/rename/should_compile/rn037.hs [deleted file]
ghc/tests/rename/should_compile/timing001.hs [deleted file]
ghc/tests/rename/should_compile/timing001.stderr [deleted file]
ghc/tests/rename/should_compile/timing002.hs [deleted file]
ghc/tests/rename/should_compile/timing002.stderr [deleted file]
ghc/tests/rename/should_compile/timing003.hs [deleted file]
ghc/tests/rename/should_compile/timing003.stderr [deleted file]
ghc/tests/rename/should_fail/Makefile [deleted file]
ghc/tests/rename/should_fail/rnfail001.hs [deleted file]
ghc/tests/rename/should_fail/rnfail001.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail002.hs [deleted file]
ghc/tests/rename/should_fail/rnfail002.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail003.hs [deleted file]
ghc/tests/rename/should_fail/rnfail003.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail004.hs [deleted file]
ghc/tests/rename/should_fail/rnfail004.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail005.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail007.hs [deleted file]
ghc/tests/rename/should_fail/rnfail007.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail008.hs [deleted file]
ghc/tests/rename/should_fail/rnfail008.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail009.hs [deleted file]
ghc/tests/rename/should_fail/rnfail009.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail010.hs [deleted file]
ghc/tests/rename/should_fail/rnfail010.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail011.hs [deleted file]
ghc/tests/rename/should_fail/rnfail011.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail012.hs [deleted file]
ghc/tests/rename/should_fail/rnfail012.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail013.hs [deleted file]
ghc/tests/rename/should_fail/rnfail013.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail014.hs [deleted file]
ghc/tests/rename/should_fail/rnfail014.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail015.hs [deleted file]
ghc/tests/rename/should_fail/rnfail015.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail016.hs [deleted file]
ghc/tests/rename/should_fail/rnfail016.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail017.hs [deleted file]
ghc/tests/rename/should_fail/rnfail017.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail018.hs [deleted file]
ghc/tests/rename/should_fail/rnfail018.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail019.hs [deleted file]
ghc/tests/rename/should_fail/rnfail019.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail020.hs [deleted file]
ghc/tests/rename/should_fail/rnfail020.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail021.hs [deleted file]
ghc/tests/rename/should_fail/rnfail021.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail022.hs [deleted file]
ghc/tests/rename/should_fail/rnfail022.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail023.hs [deleted file]
ghc/tests/rename/should_fail/rnfail023.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail024.hs [deleted file]
ghc/tests/rename/should_fail/rnfail024.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail025.hs [deleted file]
ghc/tests/rename/should_fail/rnfail025.stderr [deleted file]
ghc/tests/rename/should_fail/rnfail026.hs [deleted file]
ghc/tests/rename/should_fail/rnfail027.hs [deleted file]
ghc/tests/rename/should_fail/rnfail027.stderr [deleted file]
ghc/tests/simplCore/Makefile [deleted file]
ghc/tests/simplCore/should_compile/Makefile [deleted file]
ghc/tests/simplCore/should_compile/Simpl006Help.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl001.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl001.stderr [deleted file]
ghc/tests/simplCore/should_compile/simpl002.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl002.stderr [deleted file]
ghc/tests/simplCore/should_compile/simpl003.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl003.stderr [deleted file]
ghc/tests/simplCore/should_compile/simpl004.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl004.stderr [deleted file]
ghc/tests/simplCore/should_compile/simpl005.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl005.stderr [deleted file]
ghc/tests/simplCore/should_compile/simpl006.hs [deleted file]
ghc/tests/simplCore/should_compile/simpl007.hs [deleted file]
ghc/tests/simplCore/should_run/Makefile [deleted file]
ghc/tests/simplCore/should_run/simplrun001.hs [deleted file]
ghc/tests/simplCore/should_run/simplrun001.stderr [deleted file]
ghc/tests/simplCore/should_run/simplrun001.stdout [deleted file]
ghc/tests/simplCore/should_run/simplrun002.hs [deleted file]
ghc/tests/simplCore/should_run/simplrun002.stderr [deleted file]
ghc/tests/simplCore/should_run/simplrun002.stdout [deleted file]
ghc/tests/stranal/Makefile [deleted file]
ghc/tests/stranal/should_compile/Makefile [deleted file]
ghc/tests/stranal/should_compile/default.lhs [deleted file]
ghc/tests/stranal/should_compile/default.stderr [deleted file]
ghc/tests/stranal/should_compile/fact.lhs [deleted file]
ghc/tests/stranal/should_compile/fact.stderr [deleted file]
ghc/tests/stranal/should_compile/fun.hs [deleted file]
ghc/tests/stranal/should_compile/fun.stderr [deleted file]
ghc/tests/stranal/should_compile/goo.hs [deleted file]
ghc/tests/stranal/should_compile/goo.stderr [deleted file]
ghc/tests/stranal/should_compile/ins.hs [deleted file]
ghc/tests/stranal/should_compile/ins.stderr [deleted file]
ghc/tests/stranal/should_compile/map.hs [deleted file]
ghc/tests/stranal/should_compile/map.stderr [deleted file]
ghc/tests/stranal/should_compile/sim.hs [deleted file]
ghc/tests/stranal/should_compile/sim.stderr [deleted file]
ghc/tests/stranal/should_compile/str001.hs [deleted file]
ghc/tests/stranal/should_compile/str001.stderr [deleted file]
ghc/tests/stranal/should_compile/str002.hs [deleted file]
ghc/tests/stranal/should_compile/str002.stderr [deleted file]
ghc/tests/stranal/should_compile/syn.hs [deleted file]
ghc/tests/stranal/should_compile/syn.stderr [deleted file]
ghc/tests/stranal/should_compile/test.hs [deleted file]
ghc/tests/stranal/should_compile/test.stderr [deleted file]
ghc/tests/stranal/should_compile/tst.hs [deleted file]
ghc/tests/stranal/should_compile/tst.stderr [deleted file]
ghc/tests/stranal/should_compile/unu.hs [deleted file]
ghc/tests/stranal/should_compile/unu.stderr [deleted file]
ghc/tests/typecheck/Makefile [deleted file]
ghc/tests/typecheck/should_compile/ClassFoo.hi [deleted file]
ghc/tests/typecheck/should_compile/M.hi [deleted file]
ghc/tests/typecheck/should_compile/Makefile [deleted file]
ghc/tests/typecheck/should_compile/TheUtils.hi [deleted file]
ghc/tests/typecheck/should_compile/tc001.hs [deleted file]
ghc/tests/typecheck/should_compile/tc002.hs [deleted file]
ghc/tests/typecheck/should_compile/tc003.hs [deleted file]
ghc/tests/typecheck/should_compile/tc004.hs [deleted file]
ghc/tests/typecheck/should_compile/tc005.hs [deleted file]
ghc/tests/typecheck/should_compile/tc006.hs [deleted file]
ghc/tests/typecheck/should_compile/tc007.hs [deleted file]
ghc/tests/typecheck/should_compile/tc008.hs [deleted file]
ghc/tests/typecheck/should_compile/tc009.hs [deleted file]
ghc/tests/typecheck/should_compile/tc010.hs [deleted file]
ghc/tests/typecheck/should_compile/tc011.hs [deleted file]
ghc/tests/typecheck/should_compile/tc012.hs [deleted file]
ghc/tests/typecheck/should_compile/tc013.hs [deleted file]
ghc/tests/typecheck/should_compile/tc014.hs [deleted file]
ghc/tests/typecheck/should_compile/tc015.hs [deleted file]
ghc/tests/typecheck/should_compile/tc016.hs [deleted file]
ghc/tests/typecheck/should_compile/tc017.hs [deleted file]
ghc/tests/typecheck/should_compile/tc018.hs [deleted file]
ghc/tests/typecheck/should_compile/tc019.hs [deleted file]
ghc/tests/typecheck/should_compile/tc020.hs [deleted file]
ghc/tests/typecheck/should_compile/tc021.hs [deleted file]
ghc/tests/typecheck/should_compile/tc022.hs [deleted file]
ghc/tests/typecheck/should_compile/tc023.hs [deleted file]
ghc/tests/typecheck/should_compile/tc024.hs [deleted file]
ghc/tests/typecheck/should_compile/tc025.hs [deleted file]
ghc/tests/typecheck/should_compile/tc026.hs [deleted file]
ghc/tests/typecheck/should_compile/tc027.hs [deleted file]
ghc/tests/typecheck/should_compile/tc028.hs [deleted file]
ghc/tests/typecheck/should_compile/tc029.hs [deleted file]
ghc/tests/typecheck/should_compile/tc030.hs [deleted file]
ghc/tests/typecheck/should_compile/tc031.hs [deleted file]
ghc/tests/typecheck/should_compile/tc032.hs [deleted file]
ghc/tests/typecheck/should_compile/tc033.hs [deleted file]
ghc/tests/typecheck/should_compile/tc034.hs [deleted file]
ghc/tests/typecheck/should_compile/tc035.hs [deleted file]
ghc/tests/typecheck/should_compile/tc036.hs [deleted file]
ghc/tests/typecheck/should_compile/tc037.hs [deleted file]
ghc/tests/typecheck/should_compile/tc038.hs [deleted file]
ghc/tests/typecheck/should_compile/tc039.hs [deleted file]
ghc/tests/typecheck/should_compile/tc040.hs [deleted file]
ghc/tests/typecheck/should_compile/tc041.hs [deleted file]
ghc/tests/typecheck/should_compile/tc042.hs [deleted file]
ghc/tests/typecheck/should_compile/tc043.hs [deleted file]
ghc/tests/typecheck/should_compile/tc044.hs [deleted file]
ghc/tests/typecheck/should_compile/tc045.hs [deleted file]
ghc/tests/typecheck/should_compile/tc046.hs [deleted file]
ghc/tests/typecheck/should_compile/tc047.hs [deleted file]
ghc/tests/typecheck/should_compile/tc048.hs [deleted file]
ghc/tests/typecheck/should_compile/tc049.hs [deleted file]
ghc/tests/typecheck/should_compile/tc050.hs [deleted file]
ghc/tests/typecheck/should_compile/tc051.hs [deleted file]
ghc/tests/typecheck/should_compile/tc052.hs [deleted file]
ghc/tests/typecheck/should_compile/tc053.hs [deleted file]
ghc/tests/typecheck/should_compile/tc054.hs [deleted file]
ghc/tests/typecheck/should_compile/tc055.hs [deleted file]
ghc/tests/typecheck/should_compile/tc056.hs [deleted file]
ghc/tests/typecheck/should_compile/tc056.stderr [deleted file]
ghc/tests/typecheck/should_compile/tc057.hs [deleted file]
ghc/tests/typecheck/should_compile/tc058.hs [deleted file]
ghc/tests/typecheck/should_compile/tc059.hs [deleted file]
ghc/tests/typecheck/should_compile/tc060.hs [deleted file]
ghc/tests/typecheck/should_compile/tc061.hs [deleted file]
ghc/tests/typecheck/should_compile/tc062.hs [deleted file]
ghc/tests/typecheck/should_compile/tc063.hs [deleted file]
ghc/tests/typecheck/should_compile/tc064.hs [deleted file]
ghc/tests/typecheck/should_compile/tc065.hs [deleted file]
ghc/tests/typecheck/should_compile/tc066.hs [deleted file]
ghc/tests/typecheck/should_compile/tc067.hs [deleted file]
ghc/tests/typecheck/should_compile/tc068.hs [deleted file]
ghc/tests/typecheck/should_compile/tc069.hs [deleted file]
ghc/tests/typecheck/should_compile/tc070.hs [deleted file]
ghc/tests/typecheck/should_compile/tc073.hs [deleted file]
ghc/tests/typecheck/should_compile/tc074.hs [deleted file]
ghc/tests/typecheck/should_compile/tc076.hs [deleted file]
ghc/tests/typecheck/should_compile/tc077.hs [deleted file]
ghc/tests/typecheck/should_compile/tc078.hs [deleted file]
ghc/tests/typecheck/should_compile/tc079.hs [deleted file]
ghc/tests/typecheck/should_compile/tc080.hs [deleted file]
ghc/tests/typecheck/should_compile/tc081.hs [deleted file]
ghc/tests/typecheck/should_compile/tc082.hs [deleted file]
ghc/tests/typecheck/should_compile/tc084.hs [deleted file]
ghc/tests/typecheck/should_compile/tc085.hs [deleted file]
ghc/tests/typecheck/should_compile/tc086.hs [deleted file]
ghc/tests/typecheck/should_compile/tc087.hs [deleted file]
ghc/tests/typecheck/should_compile/tc088.hs [deleted file]
ghc/tests/typecheck/should_compile/tc089.hs [deleted file]
ghc/tests/typecheck/should_compile/tc090.hs [deleted file]
ghc/tests/typecheck/should_compile/tc091.hs [deleted file]
ghc/tests/typecheck/should_compile/tc092.hs [deleted file]
ghc/tests/typecheck/should_compile/tc093.hs [deleted file]
ghc/tests/typecheck/should_compile/tc094.hs [deleted file]
ghc/tests/typecheck/should_compile/tc095.hs [deleted file]
ghc/tests/typecheck/should_compile/tc096.hs [deleted file]
ghc/tests/typecheck/should_compile/tc097.hs [deleted file]
ghc/tests/typecheck/should_compile/tc098.hs [deleted file]
ghc/tests/typecheck/should_compile/tc099.hs [deleted file]
ghc/tests/typecheck/should_compile/tc100.hs [deleted file]
ghc/tests/typecheck/should_compile/tc101.hs [deleted file]
ghc/tests/typecheck/should_compile/tc102.hs [deleted file]
ghc/tests/typecheck/should_compile/tc103.hs [deleted file]
ghc/tests/typecheck/should_compile/tc104.hs [deleted file]
ghc/tests/typecheck/should_compile/tc105.hs [deleted file]
ghc/tests/typecheck/should_compile/tc106.hs [deleted file]
ghc/tests/typecheck/should_compile/tc107.hs [deleted file]
ghc/tests/typecheck/should_compile/tc108.hs [deleted file]
ghc/tests/typecheck/should_compile/tc109.hs [deleted file]
ghc/tests/typecheck/should_compile/tc111.hs [deleted file]
ghc/tests/typecheck/should_compile/tc112.hs [deleted file]
ghc/tests/typecheck/should_compile/tc113.hs [deleted file]
ghc/tests/typecheck/should_compile/tc114.hs [deleted file]
ghc/tests/typecheck/should_compile/tc115.hs [deleted file]
ghc/tests/typecheck/should_compile/tc115.stderr [deleted file]
ghc/tests/typecheck/should_compile/tc116.hs [deleted file]
ghc/tests/typecheck/should_compile/tc116.stderr [deleted file]
ghc/tests/typecheck/should_compile/tc117.hs [deleted file]
ghc/tests/typecheck/should_compile/tc118.hs [deleted file]
ghc/tests/typecheck/should_compile/tc119.hs [deleted file]
ghc/tests/typecheck/should_compile/tc120.hs [deleted file]
ghc/tests/typecheck/should_compile/tc121.hs [deleted file]
ghc/tests/typecheck/should_compile/tc122.hs [deleted file]
ghc/tests/typecheck/should_compile/tc123.hs [deleted file]
ghc/tests/typecheck/should_compile/tc124.hs [deleted file]
ghc/tests/typecheck/should_compile/tc125.hs [deleted file]
ghc/tests/typecheck/should_compile/tc126.hs [deleted file]
ghc/tests/typecheck/should_compile/tc127.hs [deleted file]
ghc/tests/typecheck/should_compile/tc128.hs [deleted file]
ghc/tests/typecheck/should_fail/Data82.hs [deleted file]
ghc/tests/typecheck/should_fail/Digraph.hs [deleted file]
ghc/tests/typecheck/should_fail/Digraph.stderr [deleted file]
ghc/tests/typecheck/should_fail/Inst82_1.hs [deleted file]
ghc/tests/typecheck/should_fail/Inst82_2.hs [deleted file]
ghc/tests/typecheck/should_fail/Makefile [deleted file]
ghc/tests/typecheck/should_fail/tcfail001.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail001.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail002.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail002.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail003.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail003.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail004.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail004.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail005.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail005.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail006.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail006.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail007.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail007.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail008.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail008.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail009.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail009.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail010.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail010.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail011.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail011.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail012.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail012.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail013.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail013.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail014.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail014.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail015.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail015.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail016.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail016.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail017.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail017.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail018.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail018.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail019.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail019.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail020.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail020.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail021.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail021.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail023.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail023.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail025.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail026.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail027.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail027.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail028.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail028.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail029.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail029.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail030.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail030.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail031.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail031.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail032.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail032.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail033.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail033.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail034.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail034.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail035.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail035.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail036.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail036.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail037.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail037.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail038.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail038.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail039.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail039.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail040.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail040.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail042.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail042.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail043.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail043.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail044.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail044.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail045.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail045.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail046.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail046.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail047.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail047.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail048.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail048.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail049.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail049.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail050.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail050.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail051.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail051.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail052.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail052.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail053.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail053.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail054.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail054.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail055.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail055.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail056.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail056.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail057.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail057.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail058.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail058.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail061.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail061.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail062.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail062.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail063.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail063.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail065.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail065.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail067.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail067.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail068.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail068.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail069.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail069.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail070.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail070.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail071.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail071.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail072.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail072.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail073.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail073.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail075.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail075.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail076.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail076.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail077.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail077.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail078.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail078.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail079.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail079.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail080.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail080.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail082.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail082.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail083.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail083.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail084.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail084.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail085.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail085.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail086.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail086.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail087.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail087.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail088.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail088.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail089.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail089.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail090.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail090.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail091.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail091.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail092.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail092.stderr [deleted file]
ghc/tests/typecheck/should_fail/tcfail093.hs [deleted file]
ghc/tests/typecheck/should_fail/tcfail093.stderr [deleted file]
ghc/tests/typecheck/should_run/Makefile [deleted file]
ghc/tests/typecheck/should_run/tcrun001.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun001.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun002.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun002.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun003.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun003.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun004.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun004.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun005.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun005.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun006.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun006.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun007.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun007.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun008.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun008.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun009.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun009.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun010.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun010.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun011.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun011.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun012.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun012.stdout [deleted file]
ghc/tests/typecheck/should_run/tcrun013.hs [deleted file]
ghc/tests/typecheck/should_run/tcrun013.stdout [deleted file]

diff --git a/ghc/tests/array/Makefile b/ghc/tests/array/Makefile
deleted file mode 100644 (file)
index a75e0c8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 1997/12/19 12:22:06 simonm Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_run
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/array/should_run/Makefile b/ghc/tests/array/should_run/Makefile
deleted file mode 100644 (file)
index ffee656..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.5 2001/04/24 23:51:11 andy Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-arr014_HC_OPTS = -package lang
-arr016_HC_OPTS = -fglasgow-exts
-
-arr003_RUNTEST_OPTS = -x 1
-arr004_RUNTEST_OPTS = -x 1
-arr007_RUNTEST_OPTS = -x 1
-arr008_RUNTEST_OPTS = -x 1
-
-# mkdependHS doesn't understand OPTIONS pragmas...
-SRC_MKDEPENDHS_OPTS += -package lang
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/array/should_run/arr001.hs b/ghc/tests/array/should_run/arr001.hs
deleted file mode 100644 (file)
index d45d7b8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Simple array creation
-
-import Array
-
-main =
- let a1 = array (1,3) (zip [2,3,1] ['a'..'d']) in
- print a1
-
--- Result:
diff --git a/ghc/tests/array/should_run/arr001.stdout b/ghc/tests/array/should_run/arr001.stdout
deleted file mode 100644 (file)
index 5d44203..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array (1,3) [(1,'c'),(2,'a'),(3,'b')]
diff --git a/ghc/tests/array/should_run/arr002.hs b/ghc/tests/array/should_run/arr002.hs
deleted file mode 100644 (file)
index 56505d6..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! Array creation, (index,value) list with duplicates.
--- 
--- Haskell library report 1.3 (and earlier) specifies
--- that `array' values created with lists containing dups,
--- are undefined ( _|_ ).
---
--- GHC-2.02 (and earlier) does not flag this as such, the
--- last (index,value) is instead used.
---
--- The report also specifies `array' is spine strict in
--- the (index,value) list argument and to check the
--- validity of the index values upon creation, it also
--- strict for the indices. To test this, we do (a!1)
--- twice, expecting to see the same value..
---
-import Array
-
-main =
- let a1 = array (1,3) (zip (1:[1..3]) ['a'..'d']) in
- print (a1!1) >>
- print a1     >>
- print (a1!1)
-
diff --git a/ghc/tests/array/should_run/arr002.stdout b/ghc/tests/array/should_run/arr002.stdout
deleted file mode 100644 (file)
index ca55f16..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-'b'
-array (1,3) [(1,'b'),(2,'c'),(3,'d')]
-'b'
diff --git a/ghc/tests/array/should_run/arr003.hs b/ghc/tests/array/should_run/arr003.hs
deleted file mode 100644 (file)
index b264951..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! Array creation, (index,value) list with out of bound index.
--- 
--- Haskell library report 1.3 (and earlier) specifies
--- that `array' values created with lists containing out-of-bounds indices,
--- are undefined ( _|_ ).
---
--- GHC implementation of `array' catches this (or, rather, 
--- `index' does) - the argument list to `array' is defined
--- to have its spine be evaluated - so the indexing below
--- should cause a failure.
---
-import Array
-
-main =
- let a1 = array (1::Int,3) (zip ([1..4]) ['a'..'d']) in
- print (a1!2)
diff --git a/ghc/tests/array/should_run/arr003.stderr b/ghc/tests/array/should_run/arr003.stderr
deleted file mode 100644 (file)
index 8573ab8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: Ix{Int}.index: Index (4) out of range ((1,3))
diff --git a/ghc/tests/array/should_run/arr004.hs b/ghc/tests/array/should_run/arr004.hs
deleted file mode 100644 (file)
index cc54395..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! Array - accessing undefined element
--- 
--- Sample Haskell implementation in the 1.3 Lib report defines
--- this as being undefined/error.
-
-import Array
-
-main =
- let a1 = array (1,3) (zip ([1,2]) ['a'..'d']) in
- print (a1!3)
-
--- output: Fail: (Array.!): undefined array element
-
-
-
diff --git a/ghc/tests/array/should_run/arr004.stderr b/ghc/tests/array/should_run/arr004.stderr
deleted file mode 100644 (file)
index a2cdf23..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: (Array.!): undefined array element
diff --git a/ghc/tests/array/should_run/arr005.hs b/ghc/tests/array/should_run/arr005.hs
deleted file mode 100644 (file)
index 62ed12c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! Array - recurrences
--- 
--- array does not evaluate the elements.
---
-import Array
-
-main =
- let 
-  a1 = array (1,100) ((1,1::Integer):[(i,i*a1!(i-1))|i<-[2..100]])
- in
- print a1
-
---
-
-
-
diff --git a/ghc/tests/array/should_run/arr005.stdout b/ghc/tests/array/should_run/arr005.stdout
deleted file mode 100644 (file)
index 5048dd0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array (1,100) [(1,1),(2,2),(3,6),(4,24),(5,120),(6,720),(7,5040),(8,40320),(9,362880),(10,3628800),(11,39916800),(12,479001600),(13,6227020800),(14,87178291200),(15,1307674368000),(16,20922789888000),(17,355687428096000),(18,6402373705728000),(19,121645100408832000),(20,2432902008176640000),(21,51090942171709440000),(22,1124000727777607680000),(23,25852016738884976640000),(24,620448401733239439360000),(25,15511210043330985984000000),(26,403291461126605635584000000),(27,10888869450418352160768000000),(28,304888344611713860501504000000),(29,8841761993739701954543616000000),(30,265252859812191058636308480000000),(31,8222838654177922817725562880000000),(32,263130836933693530167218012160000000),(33,8683317618811886495518194401280000000),(34,295232799039604140847618609643520000000),(35,10333147966386144929666651337523200000000),(36,371993326789901217467999448150835200000000),(37,13763753091226345046315979581580902400000000),(38,523022617466601111760007224100074291200000000),(39,20397882081197443358640281739902897356800000000),(40,815915283247897734345611269596115894272000000000),(41,33452526613163807108170062053440751665152000000000),(42,1405006117752879898543142606244511569936384000000000),(43,60415263063373835637355132068513997507264512000000000),(44,2658271574788448768043625811014615890319638528000000000),(45,119622220865480194561963161495657715064383733760000000000),(46,5502622159812088949850305428800254892961651752960000000000),(47,258623241511168180642964355153611979969197632389120000000000),(48,12413915592536072670862289047373375038521486354677760000000000),(49,608281864034267560872252163321295376887552831379210240000000000),(50,30414093201713378043612608166064768844377641568960512000000000000),(51,1551118753287382280224243016469303211063259720016986112000000000000),(52,80658175170943878571660636856403766975289505440883277824000000000000),(53,4274883284060025564298013753389399649690343788366813724672000000000000),(54,230843697339241380472092742683027581083278564571807941132288000000000000),(55,12696403353658275925965100847566516959580321051449436762275840000000000000),(56,710998587804863451854045647463724949736497978881168458687447040000000000000),(57,40526919504877216755680601905432322134980384796226602145184481280000000000000),(58,2350561331282878571829474910515074683828862318181142924420699914240000000000000),(59,138683118545689835737939019720389406345902876772687432540821294940160000000000000),(60,8320987112741390144276341183223364380754172606361245952449277696409600000000000000),(61,507580213877224798800856812176625227226004528988036003099405939480985600000000000000),(62,31469973260387937525653122354950764088012280797258232192163168247821107200000000000000),(63,1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000),(64,126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000),(65,8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000),(66,544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000),(67,36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000),(68,2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000),(69,171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000),(70,11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000),(71,850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000),(72,61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000),(73,4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000),(74,330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000),(75,24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000),(76,1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000),(77,145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000),(78,11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000),(79,894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000),(80,71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000),(81,5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000),(82,475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000),(83,39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000),(84,3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000),(85,281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000),(86,24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000),(87,2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000),(88,185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000),(89,16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000),(90,1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000),(91,135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000),(92,12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000),(93,1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000),(94,108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000),(95,10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000),(96,991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000),(97,96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000),(98,9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000),(99,933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000),(100,93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000)]
diff --git a/ghc/tests/array/should_run/arr006.hs b/ghc/tests/array/should_run/arr006.hs
deleted file mode 100644 (file)
index 8aa1ddd..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! Array - empty arrays
--- 
--- print a couple of them to try to expose empty arrays 
--- to a GC or two.
-import Array
-
-main =
- let 
-  a1 = array (1,0) []
- in
- print (take 300 $ repeat (a1 :: Array Int Int))
diff --git a/ghc/tests/array/should_run/arr006.stdout b/ghc/tests/array/should_run/arr006.stdout
deleted file mode 100644 (file)
index 289deee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) [],array (1,0) []]
diff --git a/ghc/tests/array/should_run/arr007.hs b/ghc/tests/array/should_run/arr007.hs
deleted file mode 100644 (file)
index df9c34a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! Array - accessing empty arrays
--- 
--- empty arrays are legal, but indexing them is undefined!
---
-import Array
-
-main =
- let 
-  a1 = array (1::Int,0) [(1,'a')]
- in
- print (a1!0)
diff --git a/ghc/tests/array/should_run/arr007.stderr b/ghc/tests/array/should_run/arr007.stderr
deleted file mode 100644 (file)
index 1850563..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: Ix{Int}.index: Index (1) out of range ((1,0))
diff --git a/ghc/tests/array/should_run/arr008.hs b/ghc/tests/array/should_run/arr008.hs
deleted file mode 100644 (file)
index 237b0c1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! Array - out-of-range (index,value) pairs
--- 
--- supplying a list containing one or more pairs 
--- with out-of-range index is undefined.
---
---
-import Array
-
-main = 
- let 
-  a1 = array (1::Int,0) []
-  a2 = array (0::Int,1) (zip [0..] ['a'..'z'])
- in
- print (a1::Array Int Int) >> print a2
diff --git a/ghc/tests/array/should_run/arr008.stderr b/ghc/tests/array/should_run/arr008.stderr
deleted file mode 100644 (file)
index 42ab1ca..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: Ix{Int}.index: Index (2) out of range ((0,1))
diff --git a/ghc/tests/array/should_run/arr008.stdout b/ghc/tests/array/should_run/arr008.stdout
deleted file mode 100644 (file)
index 825444d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array (1,0) []
diff --git a/ghc/tests/array/should_run/arr009.hs b/ghc/tests/array/should_run/arr009.hs
deleted file mode 100644 (file)
index b45e9e3..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! Array - derived ops
--- 
--- testing the well-behavedness of 
--- derived ops for empty and non-empty arrays
---
-import Array
-
-main = 
- let 
-  a1 = array (1,0) ([]::[(Int,Int)])
-  a2 = array (1,26) (zip [1..] ['a'..'z'])
-
-  dump a = (bounds a, indices a, elems a, assocs a)
- in
- print (dump a1) >>
- print (dump a2)
-
diff --git a/ghc/tests/array/should_run/arr009.stdout b/ghc/tests/array/should_run/arr009.stdout
deleted file mode 100644 (file)
index 5816fd7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-((1,0),[],[],[])
-((1,26),[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"abcdefghijklmnopqrstuvwxyz",[(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(9,'i'),(10,'j'),(11,'k'),(12,'l'),(13,'m'),(14,'n'),(15,'o'),(16,'p'),(17,'q'),(18,'r'),(19,'s'),(20,'t'),(21,'u'),(22,'v'),(23,'w'),(24,'x'),(25,'y'),(26,'z')])
diff --git a/ghc/tests/array/should_run/arr010.hs b/ghc/tests/array/should_run/arr010.hs
deleted file mode 100644 (file)
index 94bf8f3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! Array - accumulated arrays
--- 
---
-module Main(main) where
-
-import Array
-import Ix
-
-hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b
-hist bnds is = accumArray (+) 0 bnds [(i,1) | i <- is , inRange bnds i]
-
-main = 
- let 
-  a1 = hist (0,10) (concat $ take 2 $ repeat [1..20])
- in
- print a1
-
-
diff --git a/ghc/tests/array/should_run/arr010.stdout b/ghc/tests/array/should_run/arr010.stdout
deleted file mode 100644 (file)
index cc8297e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array (0,10) [(0,0),(1,2),(2,2),(3,2),(4,2),(5,2),(6,2),(7,2),(8,2),(9,2),(10,2)]
diff --git a/ghc/tests/array/should_run/arr011.hs b/ghc/tests/array/should_run/arr011.hs
deleted file mode 100644 (file)
index f4a95d1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- !!! Array - array difference operator
--- 
---
-module Main(main) where
-
-import Array
-import Ix
-
-hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b
-hist bnds is = accumArray (+) 0 bnds [(i,1) | i <- is , inRange bnds i]
-
-main = 
- let 
-  a1 = hist (0,10) (concat $ take 2 $ repeat [1..20])
- in
- print a1 >>
- print (a1 // [ (i,0) | i<-[0..10], odd i])
-
-
-
diff --git a/ghc/tests/array/should_run/arr011.stdout b/ghc/tests/array/should_run/arr011.stdout
deleted file mode 100644 (file)
index 9491d9c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-array (0,10) [(0,0),(1,2),(2,2),(3,2),(4,2),(5,2),(6,2),(7,2),(8,2),(9,2),(10,2)]
-array (0,10) [(0,0),(1,0),(2,2),(3,0),(4,2),(5,0),(6,2),(7,0),(8,2),(9,0),(10,2)]
diff --git a/ghc/tests/array/should_run/arr012.hs b/ghc/tests/array/should_run/arr012.hs
deleted file mode 100644 (file)
index 895efac..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- !!! Array map operations
--- 
---
-module Main(main) where
-
-import Array
-import Char
-
-main = 
- let 
-  a1 = array (0,10) (zip [0..10] ['a'..'z'])
- in
- print a1 >>
- print (fmap (toUpper) a1) >>
- print (ixmap (3,8) (+1) a1)
-
-
-
-
diff --git a/ghc/tests/array/should_run/arr012.stdout b/ghc/tests/array/should_run/arr012.stdout
deleted file mode 100644 (file)
index b8c8fda..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-array (0,10) [(0,'a'),(1,'b'),(2,'c'),(3,'d'),(4,'e'),(5,'f'),(6,'g'),(7,'h'),(8,'i'),(9,'j'),(10,'k')]
-array (0,10) [(0,'A'),(1,'B'),(2,'C'),(3,'D'),(4,'E'),(5,'F'),(6,'G'),(7,'H'),(8,'I'),(9,'J'),(10,'K')]
-array (3,8) [(3,'e'),(4,'f'),(5,'g'),(6,'h'),(7,'i'),(8,'j')]
diff --git a/ghc/tests/array/should_run/arr013.hs b/ghc/tests/array/should_run/arr013.hs
deleted file mode 100644 (file)
index 08205b0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-import Ratio -- 1.3
-import Array -- 1.3
-infix 1 =:
-(=:) a b = (a,b)
-
-main = putStr (shows sub_b "\n")
-    where
-       sub_b :: Array Int Double
-       sub_b = ixmap (102, 113) id b
-
-       b :: Array Int Double
-       b = fmap ( \ r -> fromRational r / pi )
-                (ixmap (101,200) (\ i -> toInteger i - 100) a)
-
-       a :: Array Integer (Ratio Integer)
-       a = array (1,100) ((1 =: 1) : [i =: fromInteger i * a!(i-1)
-                                       | i <- [2..100]])
diff --git a/ghc/tests/array/should_run/arr013.stdout b/ghc/tests/array/should_run/arr013.stdout
deleted file mode 100644 (file)
index 4d9bf4f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array (102,113) [(102,0.6366197723675814),(103,1.909859317102744),(104,7.639437268410976),(105,38.197186342054884),(106,229.1831180523293),(107,1604.281826366305),(108,12834.25461093044),(109,115508.29149837396),(110,1155082.9149837396),(111,1.2705912064821135e7),(112,1.5247094477785364e8),(113,1.9821222821120973e9)]
diff --git a/ghc/tests/array/should_run/arr014.hs b/ghc/tests/array/should_run/arr014.hs
deleted file mode 100644 (file)
index 919736c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! multi-dimensional arrays
-
-module Main ( main ) where
-import ST
-import Array
-
-type TwoD s = STArray s Int (STArray s Int Int)
-
-setup :: ST s (TwoD s)
-setup = let isz = 10
-            imax = isz - 1       
-            osz = 2
-            omax = osz - 1 in
-       do
-            -- gives : undefined reference to `IOBase_error_closure'
---         x <- newArray (0, omax) (error "uninitialised")
-           dmy <- newSTArray (0, imax) 0      
-           x <- newSTArray (0, omax) dmy
-           as <- (sequence . replicate osz) (newSTArray (0, imax) 6)
-           mapM_ (\(i,v) -> writeSTArray x i v) (zip [0..omax] as)
-           return x      
-
-main :: IO ()
-main = do
-         a <- stToIO setup
-        return ()       
diff --git a/ghc/tests/array/should_run/arr014.stdout b/ghc/tests/array/should_run/arr014.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/array/should_run/arr015.hs b/ghc/tests/array/should_run/arr015.hs
deleted file mode 100644 (file)
index 46097d4..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
--- !!! Array test
--- This one fails in Hugs (Feb 2001)
-
-module Main where
-
-import Array
-
--- All in main is only to show the strange behaviour.
--- 
--- arrS is the array that foo (NB (1.0,1)) shows in Hugs.
--- But (foo (NB (1.0,1)))==arrS is False.
-
--- If I write NB (f,p) -> hCMt [(p,listArray ((1,1),(1,1)) [f])] instead of line 16
--- the bug disappears. That is also the reason why I have to keep the data declaration RD.
--- If I put the type signature of line 18 in scope the bug also disappears.
--- If I write hCMt po_arL = (accumArray (\a _-> a) ZM ((1,1),(1,2)) []) // 
---                         (map (\(po,ar) -> ((1,po),M ar)) po_arL)
--- instead of line 19 and 20 it also vanishes. 
-
-data CM a = ZM | M (Array (Int,Int) a)  deriving (Show,Eq)
-
-data RD =    NB !(Double,Int)
-
-main  = do 
-  let arr = foo (NB (1.0,1))
-       -- arr = { (1,1) -> M { (1,1) -> 1.0 }, (1,2) -> ZM }
-
-       -- All these should return True
-  putStr ("arr==arrS "++show (arr==arrS)++"\n")
-  putStr ("arrS==arr "++show (arrS==arr)++"\n")
-  putStr ("bnds arr arrS "++show ((bounds arr)==(bounds arrS))++"\n")
-  putStr ("bnds +id arr arrS "++show (((bounds.id) arr)==((bounds) arrS))++"\n")
-  putStr ("id +bnds arr arrS "++show (((id.bounds) arr)==((bounds) arrS))++"\n")
-
-
-foo :: RD -> Array (Int,Int) (CM Double)
-foo rd = case rd of
-    NB (f,p) -> h where h = hCMt [(p,listArray ((1,1),(1,1)) [f])]
-                       -- h = { (1,p) -> M { (1,1) -> f }, other -> ZM }
-   where
-   --h0CMt :: Array (Int, Int) (CM Double)
-   -- h0CMt = { (1,1) -> ZM, (1,2) -> ZM }
-   h0CMt = accumArray (\a _-> a) ZM ((1,1),(1,2)) []
-
-   hCMt prs = h0CMt // (map (\(po,ar) -> ((1,po),M ar)) prs)
-                       -- [ (1,p), M { (1,1) -> f } ]
-
-
-arrS :: Array (Int,Int) (CM Double)
-arrS = listArray ((1,1),(1,2)) [M (listArray ((1,1),(1,1)) [1.0]),ZM]
diff --git a/ghc/tests/array/should_run/arr015.stdout b/ghc/tests/array/should_run/arr015.stdout
deleted file mode 100644 (file)
index be8c550..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-arr==arrS True
-arrS==arr True
-bnds arr arrS True
-bnds +id arr arrS True
-id +bnds arr arrS True
diff --git a/ghc/tests/array/should_run/arr016.hs b/ghc/tests/array/should_run/arr016.hs
deleted file mode 100644 (file)
index 083b27b..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-module Main where
-
-{- 
- - This is a test framework for Arrays, using QuickCheck 
- -
- -}
-
-import qualified Array
-import List
-import Monad ( liftM2, liftM3, liftM4 )
-import Random
-
-
-import Ix
-import List( (\\) )
-
-infixl 9  !, //
-infixr 0 ==>
-infix  1 `classify`
-
-prop_array = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-    Array.array b vs
-        `same_arr`
-    array b vs
-prop_listArray = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (vector (length [fst b..snd b]))
-                          $ \ (vs :: [Bool]) ->
-    Array.listArray b vs == Array.array b (zipWith (\ a b -> (a,b))
-                                                  (Array.range b) vs)
-
-prop_indices = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-    let arr = Array.array b vs
-    in Array.indices arr == ((Array.range . Array.bounds) arr)
-
-prop_elems = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-    let arr = Array.array b vs
-    in Array.elems arr == [arr Array.! i | i <- Array.indices arr]
-
-prop_assocs = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-    let arr = Array.array b vs
-    in Array.assocs arr == [(i, arr Array.! i) | i <- Array.indices arr]
-
-prop_slashslash = 
-    forAll genBounds       $ \ (b :: (Int,Int))     ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)])  ->
-    let arr = Array.array b vs
-        us = []
-    in arr Array.// us == Array.array (Array.bounds arr)
-                          ([(i,arr Array.! i) 
-                           | i <- Array.indices arr \\ [i | (i,_) <- us]]
-                             ++ us)
-prop_accum = 
-    forAll genBounds          $ \ (b :: (Int,Int))    ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-
-    forAll (genIVPs b 10)     $ \ (us :: [(Int,Int)]) ->
-    forAll (choose (0,length us))
-                          $ \ n ->
-    let us' = take n us in
-    forAll arbitrary       $ \ (fn :: Int -> Int -> Int) ->
-    let arr = Array.array b vs
-    in Array.accum fn arr us' 
-        == foldl (\a (i,v) -> a Array.// [(i,fn (a Array.! i) v)]) arr us'
-
-prop_accumArray = 
-    forAll arbitrary          $ \ (f :: Int -> Int -> Int) ->
-    forAll arbitrary          $ \ (z :: Int) ->
-    forAll genBounds          $ \ (b :: (Int,Int))    ->
-    forAll (genIVPs b 10)     $ \ (vs :: [(Int,Int)]) ->
-    Array.accumArray f z b vs == Array.accum f 
-                (Array.array b [(i,z) | i <- Array.range b]) vs
-
-
-same_arr :: (Eq b) => Array.Array Int b -> Array Int b -> Bool
-same_arr a1 a2 = a == c && b == d
-                && all (\ n -> (a1 Array.! n) == (a2 ! n)) [a..b]
-    where (a,b) = Array.bounds a1 :: (Int,Int)
-          (c,d) = bounds a2 :: (Int,Int)
-
-genBounds :: Gen (Int,Int)
-genBounds = do m <- choose (0,20)
-              n <- choose (minBound,maxBound-m) 
-              return (n,n+m-1)
-
-genIVP :: Arbitrary a => (Int,Int) -> Gen (Int,a)
-genIVP b = do { i <- choose b
-             ; v <- arbitrary
-              ; return (i,v) 
-             }
-
-genIVPs :: Arbitrary a => (Int,Int) -> Int -> Gen [(Int,a)]
-genIVPs b@(low,high) s
-  = do { let is = [low..high]
-       ; vs <- vector (length is)
-       ; shuffle s (zip is vs)
-       }
-
-prop_id = forAll genBounds $ \ (b :: (Int,Int)) ->
-          forAll (genIVPs b 10) $ \ (ivps :: [(Int,Int)])  ->
-          label (show (ivps :: [(Int,Int)])) True
-
--- rift takes a list, split it (using an Int argument),
--- and then rifts together the split lists into one.
--- Think: rifting a pack of cards.
-rift :: Int -> [a] -> [a]
-rift n xs = comb (drop n xs) (take n xs) 
-   where
-      comb (a:as) (b:bs) = a : b : comb as bs
-      comb (a:as) []     = a : as
-      comb []     (b:bs) = b : bs
-      comb []     []     = []
-
-
--- suffle makes n random rifts. Typically after
--- log n rifts, the list is in a pretty random order.
--- (where n is the number of elements in the list) 
-
-shuffle :: Int -> [a] -> Gen [a]
-shuffle 0 m = return m
-shuffle n m = do { r <- choose (1,length m)
-                 ; shuffle (n-1) (rift r m)
-                }
-prop_shuffle = 
-    forAll (shuffle 10 [1..10::Int]) $ \ lst ->
-    label (show lst) True
-
-------------------------------------------------------------------------------
-
-main = do test prop_array
-         test prop_listArray
-         test prop_indices
-         test prop_elems
-         test prop_assocs
-         test prop_slashslash
-         test prop_accum
-         test prop_accumArray
-
-
-instance Show (a -> b) where { show _ = "<FN>" }
-
-------------------------------------------------------------------------------
-
-data (Ix a) => Array a b = MkArray (a,a) (a -> b) deriving ()
-
-array       :: (Ix a) => (a,a) -> [(a,b)] -> Array a b
-array b ivs =
-    if and [inRange b i | (i,_) <- ivs]
-        then MkArray b
-                     (\j -> case [v | (i,v) <- ivs, i == j] of
-                            [v]   -> v
-                            []    -> error "Array.!: \
-                                           \undefined array element"
-                            _     -> error "Array.!: \
-                                           \multiply defined array element")
-        else error "Array.array: out-of-range array association"
-
-listArray             :: (Ix a) => (a,a) -> [b] -> Array a b
-listArray b vs        =  array b (zipWith (\ a b -> (a,b)) (range b) vs)
-
-(!)                   :: (Ix a) => Array a b -> a -> b
-(!) (MkArray _ f)     =  f
-
-bounds                :: (Ix a) => Array a b -> (a,a)
-bounds (MkArray b _)  =  b
-
-indices               :: (Ix a) => Array a b -> [a]
-indices               =  range . bounds
-
-elems                 :: (Ix a) => Array a b -> [b]
-elems a               =  [a!i | i <- indices a]
-
-assocs                :: (Ix a) => Array a b -> [(a,b)]
-assocs a              =  [(i, a!i) | i <- indices a]
-
-(//)                  :: (Ix a) => Array a b -> [(a,b)] -> Array a b
-a // us               =  array (bounds a)
-                            ([(i,a!i) | i <- indices a \\ [i | (i,_) <- us]]
-                             ++ us)
-
-accum                 :: (Ix a) => (b -> c -> b) -> Array a b -> [(a,c)]
-                                   -> Array a b
-accum f               =  foldl (\a (i,v) -> a // [(i,f (a!i) v)])
-
-accumArray            :: (Ix a) => (b -> c -> b) -> b -> (a,a) -> [(a,c)]
-                                   -> Array a b
-accumArray f z b      =  accum f (array b [(i,z) | i <- range b])
-
-ixmap                 :: (Ix a, Ix b) => (a,a) -> (a -> b) -> Array b c
-                                         -> Array a c
-ixmap b f a           = array b [(i, a ! f i) | i <- range b]
-
-instance  (Ix a)          => Functor (Array a) where
-    fmap fn (MkArray b f) =  MkArray b (fn . f) 
-
-instance  (Ix a, Eq b)  => Eq (Array a b)  where
-    a == a'             =  assocs a == assocs a'
-
-instance  (Ix a, Ord b) => Ord (Array a b)  where
-    a <=  a'            =  assocs a <=  assocs a'
-
-instance  (Ix a, Show a, Show b) => Show (Array a b)  where
-    showsPrec p a = showParen (p > 9) (
-                    showString "array " .
-                    shows (bounds a) . showChar ' ' .
-                    shows (assocs a)                  )
-
-instance  (Ix a, Read a, Read b) => Read (Array a b)  where
-    readsPrec p = readParen (p > 9)
-           (\r -> [(array b as, u) | ("array",s) <- lex r,
-                                     (b,t)       <- reads s,
-                                     (as,u)      <- reads t   ])
---------------------------------------------------------------------
-
--- QuickCheck v.0.2
--- DRAFT implementation; last update 000104.
--- Koen Claessen, John Hughes.
--- This file represents work in progress, and might change at a later date.
-
-
---------------------------------------------------------------------
--- Generator
-
-newtype Gen a
-  = Gen (Int -> StdGen -> a)
-
-sized :: (Int -> Gen a) -> Gen a
-sized fgen = Gen (\n r -> let Gen m = fgen n in m n r)
-
-resize :: Int -> Gen a -> Gen a
-resize n (Gen m) = Gen (\_ r -> m n r)
-
-rand :: Gen StdGen
-rand = Gen (\n r -> r)
-
-promote :: (a -> Gen b) -> Gen (a -> b)
-promote f = Gen (\n r -> \a -> let Gen m = f a in m n r)
-
-variant :: Int -> Gen a -> Gen a
-variant v (Gen m) = Gen (\n r -> m n (rands r !! (v+1)))
- where
-  rands r0 = r1 : rands r2 where (r1, r2) = split r0
-
-generate :: Int -> StdGen -> Gen a -> a
-generate n rnd (Gen m) = m size rnd'
- where
-  (size, rnd') = randomR (0, n) rnd
-
-instance Functor Gen where
-  fmap f m = m >>= return . f
-
-instance Monad Gen where
-  return a    = Gen (\n r -> a)
-  Gen m >>= k =
-    Gen (\n r0 -> let (r1,r2) = split r0
-                      Gen m'  = k (m n r1)
-                   in m' n r2)
-
--- derived
-
---choose :: Random a => (a, a) -> Gen a
-choose bounds = ((fst . randomR bounds) `fmap` rand)
-
-elements :: [a] -> Gen a
-elements xs = (xs !!) `fmap` choose (0, length xs - 1)
-
-vector :: Arbitrary a => Int -> Gen [a]
-vector n = sequence [ arbitrary | i <- [1..n] ]
-
-oneof :: [Gen a] -> Gen a
-oneof gens = elements gens >>= id
-
-frequency :: [(Int, Gen a)] -> Gen a
-frequency xs = choose (1, tot) >>= (`pick` xs)
- where
-  tot = sum (map fst xs)
-
-  pick n ((k,x):xs)
-    | n <= k    = x
-    | otherwise = pick (n-k) xs
-
--- general monadic
-
-two :: Monad m => m a -> m (a, a)
-two m = liftM2 (,) m m
-
-three :: Monad m => m a -> m (a, a, a)
-three m = liftM3 (,,) m m m
-
-four :: Monad m => m a -> m (a, a, a, a)
-four m = liftM4 (,,,) m m m m
-
---------------------------------------------------------------------
--- Arbitrary
-
-class Arbitrary a where
-  arbitrary   :: Gen a
-  coarbitrary :: a -> Gen b -> Gen b
-
-instance Arbitrary () where
-  arbitrary     = return ()
-  coarbitrary _ = variant 0
-
-instance Arbitrary Bool where
-  arbitrary     = elements [True, False]
-  coarbitrary b = if b then variant 0 else variant 1
-
-instance Arbitrary Int where
-  arbitrary     = sized $ \n -> choose (-n,n)
-  coarbitrary n = variant (if n >= 0 then 2*n else 2*(-n) + 1)
-
-instance Arbitrary Integer where
-  arbitrary     = sized $ \n -> choose (-fromIntegral n,fromIntegral n)
-  coarbitrary n = variant (fromInteger (if n >= 0 then 2*n else 2*(-n) + 1))
-
-instance Arbitrary Float where
-  arbitrary     = liftM3 fraction arbitrary arbitrary arbitrary 
-  coarbitrary x = coarbitrary (decodeFloat x)
-
-instance Arbitrary Double where
-  arbitrary     = liftM3 fraction arbitrary arbitrary arbitrary 
-  coarbitrary x = coarbitrary (decodeFloat x)
-
-fraction a b c = fromInteger a + (fromInteger b / (abs (fromInteger c) + 1))
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (a, b) where
-  arbitrary          = liftM2 (,) arbitrary arbitrary
-  coarbitrary (a, b) = coarbitrary a . coarbitrary b
-
-instance (Arbitrary a, Arbitrary b, Arbitrary c) => Arbitrary (a, b, c) where
-  arbitrary             = liftM3 (,,) arbitrary arbitrary arbitrary
-  coarbitrary (a, b, c) = coarbitrary a . coarbitrary b . coarbitrary c
-
-instance (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d)
-      => Arbitrary (a, b, c, d)
- where
-  arbitrary = liftM4 (,,,) arbitrary arbitrary arbitrary arbitrary
-  coarbitrary (a, b, c, d) =
-    coarbitrary a . coarbitrary b . coarbitrary c . coarbitrary d
-
-instance Arbitrary a => Arbitrary [a] where
-  arbitrary          = sized (\n -> choose (0,n) >>= vector)
-  coarbitrary []     = variant 0
-  coarbitrary (a:as) = coarbitrary a . variant 1 . coarbitrary as
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (a -> b) where
-  arbitrary         = promote (`coarbitrary` arbitrary)
-  coarbitrary f gen = arbitrary >>= ((`coarbitrary` gen) . f)
-
---------------------------------------------------------------------
--- Testable
-
-data Result
-  = Result { ok :: Maybe Bool, stamp :: [String], arguments :: [String] }
-
-nothing :: Result
-nothing = Result{ ok = Nothing, stamp = [], arguments = [] }
-
-newtype Property
-  = Prop (Gen Result)
-
-result :: Result -> Property
-result res = Prop (return res)
-
-evaluate :: Testable a => a -> Gen Result
-evaluate a = gen where Prop gen = property a
-
-class Testable a where
-  property :: a -> Property
-
-instance Testable () where
-  property _ = result nothing
-
-instance Testable Bool where
-  property b = result (nothing{ ok = Just b })
-
-instance Testable Result where
-  property res = result res
-
-instance Testable Property where
-  property prop = prop
-
-instance (Arbitrary a, Show a, Testable b) => Testable (a -> b) where
-  property f = forAll arbitrary f
-
-forAll :: (Show a, Testable b) => Gen a -> (a -> b) -> Property
-forAll gen body = Prop $
-  do a   <- gen
-     res <- evaluate (body a)
-     return (argument a res)
- where
-  argument a res = res{ arguments = show a : arguments res }
-
-(==>) :: Testable a => Bool -> a -> Property
-True  ==> a = property a
-False ==> a = property ()
-
-label :: Testable a => String -> a -> Property
-label s a = Prop (add `fmap` evaluate a)
- where
-  add res = res{ stamp = s : stamp res }
-
-classify :: Testable a => Bool -> String -> a -> Property
-classify True  name = label name
-classify False _    = property
-
-trivial :: Testable a => Bool -> a -> Property
-trivial = (`classify` "trivial")
-
-collect :: (Show a, Testable b) => a -> b -> Property
-collect v = label (show v)
-
---------------------------------------------------------------------
--- Testing
-
-data Config = Config
-  { configMaxTest :: Int
-  , configMaxFail :: Int
-  , configSize    :: Int -> Int
-  , configEvery   :: Int -> [String] -> String
-  }
-
-quick :: Config
-quick = Config
-  { configMaxTest = 100
-  , configMaxFail = 1000
-  , configSize    = (+ 3) . (`div` 2)
-  , configEvery   = \n args -> let s = show n in s ++ ","
-  }
-         
-verbose :: Config
-verbose = quick
-  { configEvery = \n args -> show n ++ ":\n" ++ unlines args
-  }
-
-test, quickCheck, verboseCheck :: Testable a => a -> IO ()
-test         = check quick
-quickCheck   = check quick
-verboseCheck = check verbose
-         
-check :: Testable a => Config -> a -> IO ()
-check config a =
-  do rnd <- newStdGen
-     tests config (evaluate a) rnd 0 0 []
-
-tests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO () 
-tests config gen rnd0 ntest nfail stamps
-  | ntest == configMaxTest config = do done "OK, passed" ntest stamps
-  | nfail == configMaxFail config = do done "Arguments exhausted after" ntest stamps
-  | otherwise               =
-      do putStr (configEvery config ntest (arguments result))
-         case ok result of
-           Nothing    ->
-             tests config gen rnd1 ntest (nfail+1) stamps
-           Just True  ->
-             tests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
-           Just False ->
-             putStr ( "Falsifiable, after "
-                   ++ show ntest
-                   ++ " tests:\n"
-                   ++ unlines (arguments result)
-                    )
-     where
-      result      = generate (configSize config ntest) rnd2 gen
-      (rnd1,rnd2) = split rnd0
-
-done :: String -> Int -> [[String]] -> IO ()
-done mesg ntest stamps =
-  do putStr ( mesg ++ " " ++ show ntest ++ " tests" ++ table )
- where
-  table = display
-        . map entry
-        . reverse
-        . sort
-        . map pairLength
-        . group
-        . sort
-        . filter (not . null)
-        $ stamps
-
-  display []  = ".\n"
-  display [x] = " (" ++ x ++ ").\n"
-  display xs  = ".\n" ++ unlines (map (++ ".") xs)
-
-  pairLength xss@(xs:_) = (length xss, xs)
-  entry (n, xs)         = percentage n ntest
-                       ++ " "
-                       ++ concat (intersperse ", " xs)
-
-  percentage n m        = show ((100 * n) `div` m) ++ "%"
-
---------------------------------------------------------------------
--- the end.
-
-{-
-instance Observable StdGen where { observer = observeBase }
-
-instance Observable a => Observable (Gen a) where 
-  observer (Gen a) = send "Gen" (return (Gen) << a)
-                          
--}
\ No newline at end of file
diff --git a/ghc/tests/array/should_run/arr016.stdout b/ghc/tests/array/should_run/arr016.stdout
deleted file mode 100644 (file)
index 1e7413d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,OK, passed 100 tests.
diff --git a/ghc/tests/ccall/Makefile b/ghc/tests/ccall/Makefile
deleted file mode 100644 (file)
index 938bf28..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile should_fail should_run
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/ccall/should_compile/Makefile b/ghc/tests/ccall/should_compile/Makefile
deleted file mode 100644 (file)
index 4496c95..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.12 2000/12/12 17:21:40 simonmar Exp $
-
-TOP = ../..
-HCOnly = YES
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint -fglasgow-exts -package lang
-
-# 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...
-
-cc004_HC_OPTS = -fvia-C
-cc005_HC_OPTS = -fvia-C
-cc006_HC_OPTS = -fvia-C -fno-prune-tydecls
-cc010_HC_OPTS = -fvia-C
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/ccall/should_compile/cc001.hs b/ghc/tests/ccall/should_compile/cc001.hs
deleted file mode 100644 (file)
index 2c93e8a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! cc001 -- ccall with standard boxed arguments and results
-
-module ShouldCompile where
-
--- simple functions
-
-a :: IO Int
-a = _ccall_ a
-
-b :: Int -> IO Int
-b x = _ccall_ b x
-
-c :: Int -> Char -> Float -> Double -> IO Float
-c x1 x2 x3 x4 = _ccall_ c x1 x2 x3 x4
-
--- simple monadic code
-
-d =    a               >>= \ x ->
-       b x             >>= \ y ->
-       c y 'f' 1.0 2.0
-
-
-       
diff --git a/ghc/tests/ccall/should_compile/cc001.stderr b/ghc/tests/ccall/should_compile/cc001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/ccall/should_compile/cc002.hs b/ghc/tests/ccall/should_compile/cc002.hs
deleted file mode 100644 (file)
index 48880c6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! cc002 -- ccall with ambiguous result (should be defaulted to ())
-module ShouldCompile where
-
-a :: IO ()
-a = do
- _ccall_ a
- return ()
-
-       
diff --git a/ghc/tests/ccall/should_compile/cc003.hs b/ghc/tests/ccall/should_compile/cc003.hs
deleted file mode 100644 (file)
index c2a71e8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! cc003 -- ccall with unresolved polymorphism (should fail)
--- !!! not anymore (as of 0.29, result type will default to ())
-module ShouldCompile where
-
-fubar :: IO Int
-fubar = _ccall_ f >>_ccall_ b
-                    -- ^ result type of f "lost" (never gets generalised)
diff --git a/ghc/tests/ccall/should_compile/cc003.stderr b/ghc/tests/ccall/should_compile/cc003.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/ccall/should_compile/cc004.hs b/ghc/tests/ccall/should_compile/cc004.hs
deleted file mode 100644 (file)
index a4051b5..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
--- !!! cc004 -- foreign declarations
-module ShouldCompile where
-
-import Foreign
-import GlaExts
-import Int
-import Word
-
--- importing functions
-
-foreign import stdcall "m" m_stdcall :: StablePtr a -> IO (StablePtr b)
-foreign import ccall   "m" unsafe m_ccall   :: ByteArray Int -> IO Int
-
-foreign import stdcall "sin" my_sin :: Double -> IO Double
-foreign import stdcall "cos" my_cos :: Double -> IO Double
-
-foreign import stdcall "m1" m8  :: IO Int8
-foreign import stdcall "m2" m16 :: IO Int16
-foreign import stdcall "m3" m32 :: IO Int32
-foreign import stdcall "m4" m64 :: IO Int64
-
-foreign import stdcall dynamic d8  :: Addr -> IO Int8
-foreign import stdcall dynamic d16 :: Addr -> IO Int16
-foreign import stdcall dynamic d32 :: Addr -> IO Int32
-foreign import stdcall dynamic d64 :: Addr -> IO Int64
-
-foreign import ccall "kitchen" unsafe 
-   sink :: ForeignObj 
-        -> ByteArray Int 
-       -> MutableByteArray Int RealWorld
-       -> Int
-       -> Int8
-       -> Int16
-       -> Int32
-       -> Int64
-       -> Word8
-       -> Word16
-       -> Word32
-       -> Word64
-       -> Float
-       -> Double
-       -> IO ()
-
-
-foreign import ccall dynamic unsafe
-  sink2 :: Addr
-        -> (ForeignObj 
-        -> ByteArray Int 
-       -> MutableByteArray Int RealWorld
-       -> Int
-       -> Int8
-       -> Int16
-       -> Int32
-       -> Word8
-       -> Word16
-       -> Word32
-       -> Float
-       -> Double
-       -> IO ())
-
diff --git a/ghc/tests/ccall/should_compile/cc005.hs b/ghc/tests/ccall/should_compile/cc005.hs
deleted file mode 100644 (file)
index 5b6fdac..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
--- !!! cc005 -- foreign export declarations
-module ShouldCompile (d8) where
-
-import Foreign
-import GlaExts
-import Int
-import Word
-
-foreign export ccall dynamic d8  :: (Int -> IO ())  -> IO Addr
-
--- exporting functions
-{-
-m_stdcall :: Int -> IO Int
-m_stdcall x = return x
-
-x = putChar
-
-foreign export ccall "m1" doo :: Int -> IO Int
-
-doo :: Eq a => a -> IO Int
-doo _ = return 2
-
-foreign export ccall "listAppend" plusplus :: StablePtr [a] -> StablePtr [a] -> IO (StablePtr [a])
-
-plusplus :: StablePtr [a] -> StablePtr [a] -> IO (StablePtr [a])
-plusplus x y = do
-  l1 <- deRefStablePtr x
-  l2 <- deRefStablePtr y
-  makeStablePtr (l1 ++ l2)
-
-foreign export ccall "m11" m_stdcall :: Int -> IO Int
-
-m_ccall :: Int -> Int -> IO Int
-m_ccall x y = return (x-y)
-
-foreign export ccall   "m2" m_ccall   :: Int -> Int -> IO Int
-
-foreign export ccall   "putcha" putChar :: Char -> IO ()
-
-foreign export stdcall "Math" "sin" my_sin :: Double -> IO Double
-foreign export stdcall "Math" "cos" my_cos :: Double -> IO Double
-
-my_sin = undefined
-my_cos = undefined
-
-foreign export stdcall "m111" m8  :: IO Int8
-foreign export stdcall "m22" m16 :: IO Int16
-foreign export stdcall "m3" m32 :: IO Int32
-foreign export stdcall "m4" m64 :: IO Int64
-
-m8 = undefined
-m16 = undefined
-m32 = undefined
-m64 = undefined
-
-foreign export stdcall dynamic d8  :: (Addr -> IO Int8)  -> IO Addr
-foreign export stdcall dynamic d16 :: (Addr -> IO Int16) -> IO Addr
-foreign export stdcall dynamic d32 :: (Addr -> IO Int32) -> IO Addr
-foreign export stdcall dynamic d64 :: (Addr -> IO Int64) -> IO Addr
-
-
-d8 = undefined
-d16 = undefined
-d32 = undefined
-d64 = undefined
-
-
-foreign export ccall "kitchen"
-   sink :: --ForeignObj 
---        -> ByteArray Int 
---     -> MutableByteArray Int RealWorld
-          Int
-       -> Int8
-       -> Int16
-       -> Int32
-       -> Int64
-       -> Word8
-       -> Word16
-       -> Word32
-       -> Word64
-       -> Float
-       -> Double
-       -> IO Int
-
-sink  = undefined
-sink2 = undefined
-
-foreign export ccall dynamic
-  sink2 :: (--ForeignObj 
---        -> ByteArray Int 
---     -> MutableByteArray Int RealWorld
-          StablePtr a
-       -> Int
-       -> Int8
-       -> Int16
-       -> Int32
-       -> Int64
-       -> Word8
-       -> Word16
-       -> Word32
-       -> Word64
-       -> Float
-       -> Double
-       -> IO ())
-       -> IO Addr
-
-
--}
diff --git a/ghc/tests/ccall/should_compile/cc006.hs b/ghc/tests/ccall/should_compile/cc006.hs
deleted file mode 100644 (file)
index ede31d7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
--- !!! cc006 -- ccall with non-standard boxed arguments and results
-
-module ShouldCompile where
-
-import Foreign
-import CCall
-
--- Test returning results
-
-a :: IO Int
-a = _ccall_ a
-
-b :: IO (StablePtr Int)
-b = _ccall_ b
-
--- Test taking arguments
-
-c :: ForeignObj -> IO Int
-c x = _ccall_ c x
-
-d :: StablePtr Int -> IO Int
-d x = _ccall_ d x
diff --git a/ghc/tests/ccall/should_compile/cc006.stderr b/ghc/tests/ccall/should_compile/cc006.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/ccall/should_compile/cc007.hs b/ghc/tests/ccall/should_compile/cc007.hs
deleted file mode 100644 (file)
index 70a15f2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! cc007 -- foreign import with external name equal to Haskell name.
-module ShouldCompile where
-
-foreign import sine :: Double -> Double
diff --git a/ghc/tests/ccall/should_compile/cc008.hs b/ghc/tests/ccall/should_compile/cc008.hs
deleted file mode 100644 (file)
index b6725e3..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! cc008 -- foreign export dynamic returning newtype of Addr
-module ShouldCompile where
-
-import Addr
-
-newtype Ptr a = Ptr Addr
-
-foreign export dynamic mkFoo :: IO () -> IO (Ptr Int)
diff --git a/ghc/tests/ccall/should_compile/cc009.hs b/ghc/tests/ccall/should_compile/cc009.hs
deleted file mode 100644 (file)
index 6a6ebca..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! cc009 -- foreign label returning newtype of Addr
-module ShouldCompile where
-
-import Addr
-
-newtype Ptr a = Ptr Addr
-
-foreign label foo :: Ptr Int
diff --git a/ghc/tests/ccall/should_compile/cc010.hs b/ghc/tests/ccall/should_compile/cc010.hs
deleted file mode 100644 (file)
index ff3ad1c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldCompile where
-import Foreign
-foreign import dynamic imp :: Addr -> Int
-f1 a = imp a + 1
-f2 a = imp a + 2
diff --git a/ghc/tests/ccall/should_fail/Makefile b/ghc/tests/ccall/should_fail/Makefile
deleted file mode 100644 (file)
index 0a6773c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_fail.mk
-
-SRC_HC_OPTS += -fglasgow-exts -package lang
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/ccall/should_fail/cc001.hs b/ghc/tests/ccall/should_fail/cc001.hs
deleted file mode 100644 (file)
index c6e851d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! cc001 -- ccall with ambiguous argument
-module Test where
-
-f :: IO ()
-f = _ccall_ foo (undefined ())
diff --git a/ghc/tests/ccall/should_fail/cc001.stderr b/ghc/tests/ccall/should_fail/cc001.stderr
deleted file mode 100644 (file)
index bb6a1e8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-cc001.hs:5:
-    Ambiguous type variable(s) `t'
-       in the constraint `PrelGHC.CCallable t'
-    arising from an argument in the _ccall_ to `foo', namely `(undefined ())' at cc001.hs:5
-    In the definition of `f': _ccall_ foo (undefined ())
diff --git a/ghc/tests/ccall/should_fail/cc002.hs b/ghc/tests/ccall/should_fail/cc002.hs
deleted file mode 100644 (file)
index 36d6a77..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
--- !!! cc002 -- ccall with non-standard boxed arguments and results
-
-module Test where
-
-import Foreign
-
--- Test returning results
-
-a :: IO ForeignObj
-a = _ccall_ a
-
-b :: IO (StablePtr Double)
-b = _ccall_ b
-
--- Test taking arguments
-
-c :: ForeignObj -> IO Int
-c x = _ccall_ c x
-
-d :: StablePtr Int -> IO Int
-d x = _ccall_ d x
diff --git a/ghc/tests/ccall/should_fail/cc002.stderr b/ghc/tests/ccall/should_fail/cc002.stderr
deleted file mode 100644 (file)
index 4089840..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-cc002.hs:10:
-    No instance for `PrelGHC.CReturnable ForeignObj'
-    arising from the result of the _ccall_ to `a' at cc002.hs:10
-    In the definition of `a': _ccall_ a
diff --git a/ghc/tests/ccall/should_fail/cc004.hs b/ghc/tests/ccall/should_fail/cc004.hs
deleted file mode 100644 (file)
index 6f7207f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! cc004 -- ccall with synonyms, polymorphic type variables and user type variables.
-module Test where
-
--- Since I messed up the handling of polymorphism originally, I'll
--- explicitly test code with UserSysTyVar (ie an explicit polymorphic
--- signature)
-
-foo = _ccall_ f        `thenADR` \ a -> return (a + 1)
- where 
-   thenADR :: IO a -> (a -> IO b) -> IO b
-   thenADR = (>>=)
-
--- and with a PolySysTyVar (ie no explicit signature)
-
-bar = _ccall_ f        `thenADR` \ a -> return (a + 1)
- where 
-   -- thenADR :: IO a -> (a -> IO b) -> IO b
-   thenADR = (>>=)
-
--- and with a type synonym
-
-type INT = Int
-barfu :: IO INT
-barfu = _ccall_ b
diff --git a/ghc/tests/ccall/should_fail/cc004.stderr b/ghc/tests/ccall/should_fail/cc004.stderr
deleted file mode 100644 (file)
index 09be734..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-cc004.hs:8:
-    Ambiguous type variable(s) `a'
-       in the constraint `PrelGHC.CReturnable a'
-    arising from the result of the _ccall_ to `f' at cc004.hs:8
-    In the first argument of `thenADR', namely `_ccall_ f'
-    In the definition of `foo':
-       (_ccall_ f) `thenADR` (\ a -> return (a + 1))
-
-cc004.hs:8:
-    Ambiguous type variable(s) `a' in the constraint `Num a'
-    arising from the literal `1' at cc004.hs:8
-    In the second argument of `(+)', namely `1'
-    In the first argument of `return', namely `(a + 1)'
-
-cc004.hs:15:
-    Ambiguous type variable(s) `a'
-       in the constraint `PrelGHC.CReturnable a'
-    arising from the result of the _ccall_ to `f' at cc004.hs:15
-    In the first argument of `thenADR', namely `_ccall_ f'
-    In the definition of `bar':
-       (_ccall_ f) `thenADR` (\ a -> return (a + 1))
-
-cc004.hs:15:
-    Ambiguous type variable(s) `a' in the constraint `Num a'
-    arising from the literal `1' at cc004.hs:15
-    In the second argument of `(+)', namely `1'
-    In the first argument of `return', namely `(a + 1)'
diff --git a/ghc/tests/ccall/should_fail/cc005.hs b/ghc/tests/ccall/should_fail/cc005.hs
deleted file mode 100644 (file)
index f04b155..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! illegal types in foreign export delarations
-
-module ShouldFail where
-
-import PrelGHC
-
-foreign export foo :: Int# -> IO ()
-foo i | i ==# 0# = return ()
-
-foreign export bar :: Int -> Int#
-bar _ = 42#
diff --git a/ghc/tests/ccall/should_fail/cc005.stderr b/ghc/tests/ccall/should_fail/cc005.stderr
deleted file mode 100644 (file)
index f207a3e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-cc005.hs:7:
-    Unacceptable argument type in foreign declaration: Int#
-    When checking declaration: foreign export foo foo :: Int# -> IO ()
-
-cc005.hs:10:
-    Unacceptable result type in foreign declaration: Int#
-    When checking declaration: foreign export bar bar :: Int -> Int#
diff --git a/ghc/tests/ccall/should_run/Makefile b/ghc/tests/ccall/should_run/Makefile
deleted file mode 100644 (file)
index d6c76fc..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.6 2000/12/12 17:21:40 simonmar Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint -fglasgow-exts -package lang
-
-callback_HC_OPTS += -fvia-C
-
-callback_LD_OPTS = callback_stub.o
-fed001_LD_OPTS = fed001_stub.o
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/ccall/should_run/callback.hs b/ghc/tests/ccall/should_run/callback.hs
deleted file mode 100644 (file)
index 8f8d1d6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module Main (main, hputc) where
-
-import IO
-
-main = _casm_GC_ ``rts_evalIO(
-                       rts_apply(
-                         &Main_hputc_closure,
-                         rts_mkChar('x')
-                         ),
-                       NULL
-                  );'' :: IO ()
-
-hputc :: Char -> IO ()
-hputc c = hPutChar stdout c >> hPutChar stdout '\n'
-
-foreign export hputc :: Char -> IO ()
diff --git a/ghc/tests/ccall/should_run/callback.stdout b/ghc/tests/ccall/should_run/callback.stdout
deleted file mode 100644 (file)
index 587be6b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-x
diff --git a/ghc/tests/ccall/should_run/fed001.hs b/ghc/tests/ccall/should_run/fed001.hs
deleted file mode 100644 (file)
index 209750a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-import Foreign
-import Monad
-import Addr
-import System
-import IO
-
-import IOExts
-global :: a -> IORef a
-global a = unsafePerformIO (newIORef a)
-{-# NOINLINE global #-}
-v_NumCmps = global 0 :: IORef Int
-{-# NOINLINE v_NumCmps #-}
-
-newtype XPtr a = XPtr Addr
-unXPtr (XPtr (A# x)) = x
-
-type CInt  = Int32
-type CSize = Word32
-
-foreign export dynamic 
-   mkComparator :: (XPtr Int -> XPtr Int -> IO CInt) 
-               -> IO (XPtr (XPtr Int -> XPtr Int -> IO CInt))
-
-foreign import 
-   qsort :: Ptr Int -> CSize -> CSize -> XPtr (XPtr Int -> XPtr Int -> IO CInt) 
-        -> IO ()
-
-compareInts :: XPtr Int -> XPtr Int -> IO CInt
-compareInts a1 a2 = do
-   num_cmps <- readIORef v_NumCmps
-   if num_cmps < 100
-    then 
-     do writeIORef v_NumCmps (num_cmps+1)
-        i1 <- peek (Ptr (unXPtr a1))
-        i2 <- peek (Ptr (unXPtr a2))
-        return (fromIntegral (i1 - i2 :: Int))
-    else
-     do hPutStrLn stderr 
-                  "compareInts: 100 comparisons exceeded; something's wrong"
-        exitWith (ExitFailure 1)
-
-main :: IO ()
-main = do
-   let values = [ 12, 56, 90, 34, 78 ] :: [Int]
-       n      = length values
-   buf <- mallocArray n
-   zipWithM_ (pokeElemOff buf) [ 0 .. ] values
-   c <- mkComparator compareInts
-   qsort buf (fromIntegral n) (fromIntegral (sizeOf (head values))) c
-   mapM (peekElemOff buf) [ 0 .. n-1 ] >>= (print :: [Int] -> IO ())
diff --git a/ghc/tests/ccall/should_run/fed001.stdout b/ghc/tests/ccall/should_run/fed001.stdout
deleted file mode 100644 (file)
index fb51390..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[12,34,56,78,90]
diff --git a/ghc/tests/ccall/should_run/ffi001.hs b/ghc/tests/ccall/should_run/ffi001.hs
deleted file mode 100644 (file)
index 16e8a76..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! A simple FFI test
-
--- This one provoked a bogus renamer error in 4.08.1:
---     panic: tcLookupGlobalValue: <THIS>.PrelIOBase.returnIO{-0B,s-}
--- (the error was actually in DsMonad.dsLookupGlobalValue!)
-
-module Main where
-
-import Foreign
-
-foreign export ccall "gccd" mygcd :: Int -> Int -> Int 
-
-main = putStrLn "No bug"
-
-mygcd a b = if (a==b) then a 
-           else if (a<b) then mygcd a (b-a)
-           else mygcd (a-b) a
diff --git a/ghc/tests/ccall/should_run/ffi001.stdout b/ghc/tests/ccall/should_run/ffi001.stdout
deleted file mode 100644 (file)
index 695e5e7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-No bug
diff --git a/ghc/tests/codeGen/Makefile b/ghc/tests/codeGen/Makefile
deleted file mode 100644 (file)
index ebd36e1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.4 2000/09/06 10:28:48 simonmar Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile should_run
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/codeGen/should_compile/Makefile b/ghc/tests/codeGen/should_compile/Makefile
deleted file mode 100644 (file)
index 04a458b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2000/09/06 10:28:48 simonmar Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/codeGen/should_compile/cg001.hs b/ghc/tests/codeGen/should_compile/cg001.hs
deleted file mode 100644 (file)
index 3c3acd6..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldCompile where
-
-import PrelGHC
-
-data STRef s a = STRef (MutVar# s a)
-
--- ghc 4.08 had a problem with returning a MutVar#.
-
-from :: STRef s a -> MutVar# s a
-from (STRef x) = x
-
-to :: MutVar# s a -> STRef s a
-to x = STRef x
diff --git a/ghc/tests/codeGen/should_run/Makefile b/ghc/tests/codeGen/should_run/Makefile
deleted file mode 100644 (file)
index b946169..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.19 2001/05/18 08:49:27 simonpj Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-OMITTED_RUNTESTS = cg030.run cg035.run
-endif
-ifeq "$(TARGETPLATFORM)" "sparc-sun-solaris2"
-OMITTED_RUNTESTS = cg026.run
-endif
-
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-cg012_HC_OPTS = -fglasgow-exts
-cg015_HC_OPTS = -fglasgow-exts
-cg018_HC_OPTS = -fglasgow-exts
-cg025_HC_OPTS = -package lang -package text
-cg026_HC_OPTS = -package lang -fglasgow-exts -fvia-C
-cg029_HC_OPTS = -package lang -fglasgow-exts
-cg030_HC_OPTS = -package lang -fglasgow-exts
-cg031_HC_OPTS = -fglasgow-exts
-cg032_HC_OPTS = -fglasgow-exts
-cg033_HC_OPTS = -fglasgow-exts
-cg035_HC_OPTS = -package lang -fglasgow-exts
-cg042_HC_OPTS = -package lang -fglasgow-exts
-cg044_HC_OPTS = -package lang
-cg049_HC_OPTS = -funbox-strict-fields
-
-cg016_RUNTEST_OPTS = -x 1      # should override the -x 0 above.
-cg021_RUNTEST_OPTS = +RTS -K2m
-cg025_RUNTEST_OPTS = -x 1 cg025.hs
-cg045_RUNTEST_OPTS = -x 1
-
-# tmp, until we fix the problems with seq#...
-cg045_HC_OPTS = -O
-
-# mkdependHS doesn't understand OPTIONS pragmas...
-SRC_MKDEPENDHS_OPTS += -fglasgow-exts
-
-.PRECIOUS: %.bin %.o
-
-CLEAN_FILES += PrelMain.hi
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/codeGen/should_run/cg001.hs b/ghc/tests/codeGen/should_run/cg001.hs
deleted file mode 100644 (file)
index 5482f13..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !! cg001: main = -42 -- take 1
-
-main = print ( f () )
-     where
-       f :: a -> Int
-       f x = -42
diff --git a/ghc/tests/codeGen/should_run/cg001.stdout b/ghc/tests/codeGen/should_run/cg001.stdout
deleted file mode 100644 (file)
index 6a0e60d..0000000
+++ /dev/null
@@ -1 +0,0 @@
--42
diff --git a/ghc/tests/codeGen/should_run/cg002.hs b/ghc/tests/codeGen/should_run/cg002.hs
deleted file mode 100644 (file)
index dddaabd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-main = print ((f id2) (10 + thirty_two))
-  where
-    f x = g x
-      where
-        g x = h x
-         where
-           h x = x
-
-    thirty_two :: Int
-    thirty_two = 32
-
-id2 x = x
diff --git a/ghc/tests/codeGen/should_run/cg002.stdout b/ghc/tests/codeGen/should_run/cg002.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg003.hs b/ghc/tests/codeGen/should_run/cg003.hs
deleted file mode 100644 (file)
index 47b2d9e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-main = print (id2 (id2 id2) (42::Int))
---     where
---     id2 = s k k
-
--- id2 x = s k k x
-
-id2 = s k k
-
-s x y z = x z (y z)
-
-k x y = x
diff --git a/ghc/tests/codeGen/should_run/cg003.stdout b/ghc/tests/codeGen/should_run/cg003.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg004.hs b/ghc/tests/codeGen/should_run/cg004.hs
deleted file mode 100644 (file)
index 1f4a273..0000000
+++ /dev/null
@@ -1 +0,0 @@
-main = print (length ([9,8,7,6,5,4,3,2,1] :: [Int]))
diff --git a/ghc/tests/codeGen/should_run/cg004.stdout b/ghc/tests/codeGen/should_run/cg004.stdout
deleted file mode 100644 (file)
index ec63514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/ghc/tests/codeGen/should_run/cg005.hs b/ghc/tests/codeGen/should_run/cg005.hs
deleted file mode 100644 (file)
index 4159d4c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !! answer: 65532
-
-main = print foo
-
-foo :: Int
-foo = ((1 + 2 + 32767 - 4) * 6) --later? `div` 3
diff --git a/ghc/tests/codeGen/should_run/cg005.stdout b/ghc/tests/codeGen/should_run/cg005.stdout
deleted file mode 100644 (file)
index 12bd33f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-196596
diff --git a/ghc/tests/codeGen/should_run/cg006.hs b/ghc/tests/codeGen/should_run/cg006.hs
deleted file mode 100644 (file)
index 609c3c2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-main = print (length thirteen_ones)
-     where
-       thirteen_ones   = take (13::Int) ones
-
-       ones :: [Int]
-       ones            = 1 : ones
diff --git a/ghc/tests/codeGen/should_run/cg006.stdout b/ghc/tests/codeGen/should_run/cg006.stdout
deleted file mode 100644 (file)
index b1bd38b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-13
diff --git a/ghc/tests/codeGen/should_run/cg007.hs b/ghc/tests/codeGen/should_run/cg007.hs
deleted file mode 100644 (file)
index 317b921..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-data Tree a = Leaf a | Branch (Tree a) (Tree a)
-
-main = print (height our_tree)
-    where
-      our_tree :: Tree Int
-      our_tree =
-       Branch (Branch (Leaf 1) (Branch (Branch (Leaf 1) (Leaf 1)) (Leaf 1)))
-              (Branch (Leaf 1) (Leaf 1))
-
-
-height :: Tree a -> Int
-
-height (Leaf _)                = 1
-height (Branch t1 t2)  = 1 + max (height t1) (height t2)
diff --git a/ghc/tests/codeGen/should_run/cg007.stdout b/ghc/tests/codeGen/should_run/cg007.stdout
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/ghc/tests/codeGen/should_run/cg008.hs b/ghc/tests/codeGen/should_run/cg008.hs
deleted file mode 100644 (file)
index 1713b48..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-main = print (length comp_list)
- where
-    comp_list :: [(Int,Int)]
-    comp_list = [ (elem1,elem2)
-               | elem1 <- given_list,
-                 elem2 <- given_list,
-                 elem1 >= (4::Int),
-                 elem2 <  (3::Int)
-               ]
-
-    given_list :: [Int]
-    given_list = [1,2,3,4,5,6,7,8,9]
diff --git a/ghc/tests/codeGen/should_run/cg008.stdout b/ghc/tests/codeGen/should_run/cg008.stdout
deleted file mode 100644 (file)
index 48082f7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-12
diff --git a/ghc/tests/codeGen/should_run/cg009.hs b/ghc/tests/codeGen/should_run/cg009.hs
deleted file mode 100644 (file)
index de03fc4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-main = print (length take_list)
- where
-    take_list :: [Int]
-    take_list = takeWhile (\ x -> x < 6) given_list
-
-    given_list :: [Int]
-    given_list = [1,2,3,4,5,6,7,8,9]
diff --git a/ghc/tests/codeGen/should_run/cg009.stdout b/ghc/tests/codeGen/should_run/cg009.stdout
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/ghc/tests/codeGen/should_run/cg010.hs b/ghc/tests/codeGen/should_run/cg010.hs
deleted file mode 100644 (file)
index ccc323d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-main = print a
-  where
-    a :: Int
-    b :: Int
-    (a, b) = (3 + 4, 5 + 6)
diff --git a/ghc/tests/codeGen/should_run/cg010.stdout b/ghc/tests/codeGen/should_run/cg010.stdout
deleted file mode 100644 (file)
index 7f8f011..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/ghc/tests/codeGen/should_run/cg011.hs b/ghc/tests/codeGen/should_run/cg011.hs
deleted file mode 100644 (file)
index c687e50..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
--- !!! simple overloading example
-
-class Foo a where
-    foo :: a -> a -> Bool
-
-class (Foo a) => Bar a where
-    bar :: a -> a -> Bool
-
-instance Foo Int where
-    foo a b = a /= b
-
-instance Foo Bool where
-    foo a b = a /= b
-
-instance Bar Int where
-    bar a b = a < b
-
-instance Bar Bool where
-    bar a b = a < b
-
-foO = if bar (2::Int) (3::Int) then
-           if bar False True then
-               (42::Int)
-           else
-               (888::Int)
-       else
-         (999::Int)
-
-main = print foO
diff --git a/ghc/tests/codeGen/should_run/cg011.stdout b/ghc/tests/codeGen/should_run/cg011.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg012.hs b/ghc/tests/codeGen/should_run/cg012.hs
deleted file mode 100644 (file)
index 9159f29..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
--- !!! move arguments around on the stacks, mainly the B stack
-
-import PrelBase        ( Float#, Double#, Int#, Int(..) )
-
-
-main = print foo
-
-foo = I#
-       ( f 1.1##
-           2.1#
-           True
-           3.1##
-           4.1#
-           5.1##
-           6.1##
-           42# -- the answer!
-           7.1#
-           8.1# )
-    where
-      f :: Double# -> Float# -> Bool -> Double# -> Float#
-       -> Double# -> Double# -> Int# -> Float# -> Float#
-       -> Int#
-      f b1 s2 t b3 s4 b5 b6 i42 s7 s8
-       -- evens, then odds
-       = g s2 b3 b5 i42 s8 b1 t s4 b6 s7
-
-      g :: Float# -> Double# -> Double# -> Int# -> Float#
-        -> Double# -> Bool -> Float# -> Double# -> Float#
-       -> Int#
-      g s2 b3 b5 i42 s8 b1 t s4 b6 s7
-       -- powers of 2 backwards, then others forwards
-       = h s7 b6 t b5 s2 b3 i42 s8 b1 s4
-
-      h :: Float# -> Double# -> Bool -> Double# -> Float#
-        -> Double# -> Int# -> Float# -> Double# -> Float#
-       -> Int#
-      h s7 b6 t b5 s2 b3 i42 s8 b1 s4
-       = i42
diff --git a/ghc/tests/codeGen/should_run/cg012.stdout b/ghc/tests/codeGen/should_run/cg012.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg013.hs b/ghc/tests/codeGen/should_run/cg013.hs
deleted file mode 100644 (file)
index 4d2f06d..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-{-
-From: Kevin Hammond <kh>
-To: partain
-Subject: Nasty Overloading
-Date: Wed, 23 Oct 91 16:19:46 BST
--}
-module Main where
-
-class Foo a where
-       o1 :: a -> a -> Bool
-       o2 :: a -> Int
-
---     o2 :: Int
-    -- Lennart: The type of method o2 does not contain the variable a
-    -- (and it must according to line 1 page 29 of the manual).
-
-class Foo tyvar => Bar tyvar where
-       o3 :: a -> tyvar -> tyvar
-
--- class (Eq a, Foo a) => Baz a where
-class (Ord a, Foo a) => Baz a where
-       o4 :: a -> a -> (String,String,String,a)
-
-instance (Ord a, Foo a) =>  Foo [a] where
-       o2 x = 100
-       o1 a b = a < b || o1 (head a) (head b)
-
--- instance Bar [a] where
-instance (Ord a, Foo a) => Bar [a] where
-       o3 x l = []
-    --
-    -- Lennart: I guess the instance declaration 
-    --         instance Bar [w] where
-    --                 o3 x l = []
-    -- is wrong because to be a Bar you have to be a Foo.  For [w] to
-    -- be a Foo, w has to be Ord and Foo.  But w is not Ord or Foo in
-    -- this instance declaration so it must be wrong.  (Page 31, line
-    -- 7: The context c' must imply ...)
-
-instance Baz a => Baz [a] where
-       o4 [] [] = ("Nil", "Nil", "Nil", [])
-       o4 l1 l2 = 
-               (if o1 l1 l2 then "Y" else "N",
-                if l1 == l2 then "Y" else "N",
---              if o4 (head l1) (head l2) then "Y" else "N",
-                case o4 (head l1) (head l2) of
-                       (_,_,_,l3) -> if (o1 (head l1) l3) then "Y" else "N",
-                l1 ++ l2 )
-
-instance Foo Int where
-       o2 x = x
-       o1 i j = i == j
-
-instance Bar Int where
-       o3 _ j = j + 1
-
-instance Baz Int where
---     o4 i j = i > j
-       o4 i j = (if i>j then "Y" else "Z", "p", "q", i+j)
---simpl:o4 i j = ("Z", "p", "q", i+j)
-
-{- also works w/ glhc! -}
-
-main =  if o4 [1,2,3] [1,3,2::Int] /= ("Y","N","Y",[1,2,3,1,3,2]) then
-               (print "43\n") 
-       else    (print "144\n")
-
-{- works: glhc
-main =  case o4 [1,2,3] [1,3,2::Int] of
-               (s1,s2,s3,x) -> print s1
-
-main =  case o4 ([]::[Int]) ([]::[Int]) of
-               (s1,s2,s3,x) -> print s1
--}
-
-{- simple main: breaks nhc, works w/ glhc 
-main = case o4 (3::Int) (4::Int) of (s1,s2,s3,x) -> print s1
--}
diff --git a/ghc/tests/codeGen/should_run/cg013.stdout b/ghc/tests/codeGen/should_run/cg013.stdout
deleted file mode 100644 (file)
index a865e6b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"43\n"
diff --git a/ghc/tests/codeGen/should_run/cg014.hs b/ghc/tests/codeGen/should_run/cg014.hs
deleted file mode 100644 (file)
index a01c101..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
--- !! cg014: main = -42 -- twice: in Float and Double
-
-main = print ((show ( (-42) :: Float )) ++ " " ++ (show ( (-42) :: Double )) ++ "\n")
diff --git a/ghc/tests/codeGen/should_run/cg014.stdout b/ghc/tests/codeGen/should_run/cg014.stdout
deleted file mode 100644 (file)
index 6f6cbc5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"-42.0 -42.0\n"
diff --git a/ghc/tests/codeGen/should_run/cg015.hs b/ghc/tests/codeGen/should_run/cg015.hs
deleted file mode 100644 (file)
index faa99b8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-module Main ( main ) where
-
-import PrelBase
-
-data CList = CNil | CCons Int# CList
-
-mk :: Int# -> CList
-mk n  = if (n ==# 0#)
-       then CNil
-       else CCons 1# (mk (n -# 1#))
-
-clen :: CList -> Int#
-clen CNil = 0#
-clen (CCons _ cl) = 1# +# (clen cl)
-
-main = case (clen list4) of
-               len4 ->
-                 case (len4 +# len4) of
-                   8# -> finish 65#    -- 'A'
-                   _  -> finish 66#    -- 'B'
-      where
-      list4    = mk 4#
-
-finish :: Int# -> IO ()
-finish n = _ccall_ putchar (C# (chr# n)) >> return ()
diff --git a/ghc/tests/codeGen/should_run/cg015.stdout b/ghc/tests/codeGen/should_run/cg015.stdout
deleted file mode 100644 (file)
index 8c7e5a6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-A
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg016.hs b/ghc/tests/codeGen/should_run/cg016.hs
deleted file mode 100644 (file)
index ba5dd04..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! tests calls of `error' (that make calls of `error'...)
---
-main = error ("1st call to error\n"++(
-       error ("2nd call to error\n"++(
-       error ("3rd call to error\n"++(
-       error ("4th call to error\n"++(
-       error ("5th call to error\n"++(
-       error ("6th call to error"
-       )))))))))))
diff --git a/ghc/tests/codeGen/should_run/cg016.stderr b/ghc/tests/codeGen/should_run/cg016.stderr
deleted file mode 100644 (file)
index 2d16aa5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: 6th call to error
diff --git a/ghc/tests/codeGen/should_run/cg016.stdout b/ghc/tests/codeGen/should_run/cg016.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/codeGen/should_run/cg017.hs b/ghc/tests/codeGen/should_run/cg017.hs
deleted file mode 100644 (file)
index 275eb9b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
--- !!! test of cyclic default methods
---
-class Foo a where
-    op1 :: Fractional b => a -> b -> Bool
-    op2 :: Fractional b => a -> b -> Bool
-    op3 :: Fractional b => a -> b -> Bool
-    op4 :: Fractional b => a -> b -> Bool
-    op5 :: Fractional b => a -> b -> Bool
-    op6 :: Fractional b => a -> b -> Bool
-
-    -- each depends on the next:
-    op1 a b = not (op2 a b)
-    op2 a b = not (op3 a b)
-    op3 a b = not (op4 a b)
-    op4 a b = not (op5 a b)
-    op5 a b = not (op6 a b)
-    op6 a b = not (op1 a b)
-
--- now some instance decls to break the cycle:
-instance Foo Int where
-    op1 a b = a == 42
-
-instance Foo Char where
-    op1 a b = a == 'c'
-
-instance Foo a => Foo [a] where
-    op1 a b = null a
-
--- try it:
-main = do
-    putStr (show (op2 (3::Int)    3.14159))
-    putStr (show (op2 'X'        3.14159))
-    putStr (show (op2 ([]::[Char])3.14159))
diff --git a/ghc/tests/codeGen/should_run/cg017.stdout b/ghc/tests/codeGen/should_run/cg017.stdout
deleted file mode 100644 (file)
index c5b23b3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-TrueTrueFalse
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg018.hs b/ghc/tests/codeGen/should_run/cg018.hs
deleted file mode 100644 (file)
index da7b052..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! test of datatype with many unboxed fields
---
-import PrelGHC( Float# )
-import PrelFloat
-
-main = print (selectee1 + selectee2)
-
-data Tfo = Tfo Float# Float# Float# Float# Float# Float# Float# Float# Float# Float# Float# Float#
-
-yyy = (Tfo (-0.0018#)  (-0.8207#)   (0.5714#)
-            (0.2679#)  (-0.5509#)  (-0.7904#)
-            (0.9634#)   (0.1517#)   (0.2209#)
-            (0.0073#)   (8.4030#)   (0.6232#))
-
-xxx = (Tfo (-0.8143#)  (-0.5091#)  (-0.2788#)
-           (-0.0433#)  (-0.4257#)   (0.9038#)
-           (-0.5788#)   (0.7480#)   (0.3246#)
-            (1.5227#)   (6.9114#)  (-7.0765#))
-
-selectee1 = F# (case xxx of
-                 Tfo _ _ _ _ _ _ _ x _ _ _ _ -> x)
-
-selectee2 = F# (case xxx of
-                 Tfo _ _ y _ _ _ _ _ _ _ _ _ -> y)
diff --git a/ghc/tests/codeGen/should_run/cg018.stdout b/ghc/tests/codeGen/should_run/cg018.stdout
deleted file mode 100644 (file)
index 805ee30..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.46920002
diff --git a/ghc/tests/codeGen/should_run/cg019.hs b/ghc/tests/codeGen/should_run/cg019.hs
deleted file mode 100644 (file)
index 242ea3b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
--- !!! printing of floating-pt numbers
---
-main = print (1.234e5 :: Float)
diff --git a/ghc/tests/codeGen/should_run/cg019.stdout b/ghc/tests/codeGen/should_run/cg019.stdout
deleted file mode 100644 (file)
index 9ed4dbb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-123400.0
diff --git a/ghc/tests/codeGen/should_run/cg020.hs b/ghc/tests/codeGen/should_run/cg020.hs
deleted file mode 100644 (file)
index 9f4b7c6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
--- !!! reading/showing of Ints/Integers
---
-main = print ((read "-1") :: Integer)
diff --git a/ghc/tests/codeGen/should_run/cg020.stdout b/ghc/tests/codeGen/should_run/cg020.stdout
deleted file mode 100644 (file)
index 3a2e3f4..0000000
+++ /dev/null
@@ -1 +0,0 @@
--1
diff --git a/ghc/tests/codeGen/should_run/cg021.hs b/ghc/tests/codeGen/should_run/cg021.hs
deleted file mode 100644 (file)
index 190f8dd..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
--- !!! Tests garbage collection in the branch of a case
--- !!! alternative where the constructor is returned in the heap.
-
-{- This is also a rather stressful test for another reason.
-   The mutual recursion between munch and f causes lots of
-   closures to be built, of the form (munch n s), for some n and s.
-   Now, all of these closures are entered and each has as its value
-   the result delivere by the next; so the result is that there is
-   a massive chain of identical updates.
-
-   As it turns out, they are mostly garbage, so the GC could eliminate
-   them (though this isn't implemented at present), but that isn't
-   necessarily the case.  
-
-   The only correct solution is to spot that the updates are all
-   updating with the same value (update frames stacked on top of each
-   other), and update all but one with indirections to the last
-   remaining one.  This could be done by GC, or at the moment the
-   frame is pushed.
-
-   Incidentally, hbc won't have this particular problem, because it
-   updates immediately.
-
-   NOTE: [March 97]  Now that stack squeezing happens when GC happens,
-   the stack is squished at GC.  So this program uses a small stack
-   in a small heap (eg 4m heap 2m stack), but in a big heap (no GC)
-   it needs a much bigger stack (10m)!  It would be better to try GC/stack
-   squeezing on stack oflo.
--}
-
-module Main where
-
-main = munch 100000 (inf 3)
-
-data Stream a
-  = MkStream a a a a a a a a a (Stream a)
-  | Empty
-
-inf :: Int -> Stream Int
-inf n = MkStream n n n n n n n n n (inf n)
-
-munch :: Int -> Stream a -> IO ()
-
-munch n Empty = return () -- error "this never happens!\n"
-    -- this first equation mks it non-strict in "n"
-    -- (NB: call the "error" makes it strict)
-
-munch 0 _ = putStr "I succeeded!\n"
-munch n s = case (f n s) of
-             (True, rest) -> rest
-             (False, _)   -> error "this never happens either\n"
-
---f :: Int -> Stream a -> (Bool, [Request])
-
-f n (MkStream _ _ _ _ _ _ _ _ _ rest)
-  = -- garbage collection *HERE*, please!
-    -- (forced by the closure for n-1)
-    (True, munch (n - 1) rest)
-
--- munch and f are mutually recursive, just to be nasty
diff --git a/ghc/tests/codeGen/should_run/cg021.stdout b/ghc/tests/codeGen/should_run/cg021.stdout
deleted file mode 100644 (file)
index 17203ef..0000000
+++ /dev/null
@@ -1 +0,0 @@
-I succeeded!
diff --git a/ghc/tests/codeGen/should_run/cg022.hs b/ghc/tests/codeGen/should_run/cg022.hs
deleted file mode 100644 (file)
index e696754..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! tests stack stubbing: if "f" doesn't stub "ns",
--- !!! the program has a space leak.
-
-module Main where
-
-main = f (putStr "a")
-        (take 1000000 (repeat True))
-        (putStr "b")
-
-f a ns b = if last ns then a else b
diff --git a/ghc/tests/codeGen/should_run/cg022.stdout b/ghc/tests/codeGen/should_run/cg022.stdout
deleted file mode 100644 (file)
index 2e65efe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-a
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg023.stdout b/ghc/tests/codeGen/should_run/cg023.stdout
deleted file mode 100644 (file)
index c1f22fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-False
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg024.hs b/ghc/tests/codeGen/should_run/cg024.hs
deleted file mode 100644 (file)
index 7a69547..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! test super-dictionary grabification
---
-
-main = putStr (show (is_one (1.2::Double)))
-
-is_one :: RealFloat a => a -> Bool
-
-is_one x = x == 1.0
diff --git a/ghc/tests/codeGen/should_run/cg024.stdout b/ghc/tests/codeGen/should_run/cg024.stdout
deleted file mode 100644 (file)
index c1f22fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-False
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg025.hs b/ghc/tests/codeGen/should_run/cg025.hs
deleted file mode 100644 (file)
index dae4827..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! test various I/O Requests
---
---
-import IO
-import System
-import IOExts (trace)
-import RegexString
-import Maybe
-
-main = do
-    prog <- getProgName
-    let Just (name:_) = matchRegex (mkRegex ".*(cg025.bin)") prog
-    hPutStr stderr (shows name "\n")
-    args <- getArgs
-    hPutStr stderr (shows args "\n")
-    path <- getEnv "PATH"
-    hPutStr stderr ("GOT PATH\n")
-    stdin_txt <- getContents
-    putStr stdin_txt
-    file_cts <- readFile (head args)
-    hPutStr  stderr file_cts
-    trace "hello, trace" $
-      catch (getEnv "__WURBLE__" >> return ()) (\ e -> error "hello, error")
diff --git a/ghc/tests/codeGen/should_run/cg025.stderr b/ghc/tests/codeGen/should_run/cg025.stderr
deleted file mode 100644 (file)
index 1a835f1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-"cg025.bin"
-["cg025.hs"]
-GOT PATH
--- !!! test various I/O Requests
---
---
-import IO
-import System
-import IOExts (trace)
-import RegexString
-import Maybe
-
-main = do
-    prog <- getProgName
-    let Just (name:_) = matchRegex (mkRegex ".*(cg025.bin)") prog
-    hPutStr stderr (shows name "\n")
-    args <- getArgs
-    hPutStr stderr (shows args "\n")
-    path <- getEnv "PATH"
-    hPutStr stderr ("GOT PATH\n")
-    stdin_txt <- getContents
-    putStr stdin_txt
-    file_cts <- readFile (head args)
-    hPutStr  stderr file_cts
-    trace "hello, trace" $
-      catch (getEnv "__WURBLE__" >> return ()) (\ e -> error "hello, error")
-hello, trace
-
-Fail: hello, error
diff --git a/ghc/tests/codeGen/should_run/cg025.stdout b/ghc/tests/codeGen/should_run/cg025.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/codeGen/should_run/cg026.hs b/ghc/tests/codeGen/should_run/cg026.hs
deleted file mode 100644 (file)
index 6a6bb24..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
--- !!! simple tests of primitive arrays
---
-module Main ( main ) where
-
-import PrelBase
-import Addr
-import ST
-import ST
-import MutableArray
-import ByteArray
-import Int( fromInt )
-       
-import Ratio
-import Array
-
-main = putStr
-        (test_chars    ++ "\n"  ++
-         test_ints     ++ "\n"  ++
-         test_addrs    ++ "\n"  ++
-         test_floats   ++ "\n"  ++
-         test_doubles  ++ "\n"  ++
-         test_ptrs     ++ "\n")
-
-
--- Arr# Char# -------------------------------------------
--- (main effort is in packString#)
-
-test_chars :: String
-test_chars
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newCharArray (0, (size-1))    >>= \ arr# ->
-
-           -- fill in all elements; elem i has "i" put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-       else writeCharArray arr_in# (I# first#) ((chr (I# first#))) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [Char]
-    lookup_range arr from# to#
-      = if (from# ># to#)
-       then []
-       else (indexCharArray arr (I# from#))
-            : (lookup_range arr (from# +# 1#) to#)
-
--- Arr# Int# -------------------------------------------
-
-test_ints :: String
-test_ints
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newIntArray (0, (size-1))     >>= \ arr# ->
-
-           -- fill in all elements; elem i has i^2 put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-       else writeIntArray arr_in# (I# first#) (I# (first# *# first#)) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [Int]
-    lookup_range arr from# to#
-      = if (from# ># to#)
-       then []
-       else (indexIntArray arr (I# from#))
-            : (lookup_range arr (from# +# 1#) to#)
-
--- Arr# Addr# -------------------------------------------
-
-test_addrs :: String
-test_addrs
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newAddrArray (0, (size-1))    >>= \ arr# ->
-
-           -- fill in all elements; elem i has i^2 put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-       else writeAddrArray arr_in# (I# first#)
-                           (A# (int2Addr# (first# *# first#))) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [ Int ]
-    lookup_range arr from# to#
-      = let
-           a2i (A# a#) = I# (addr2Int# a#)
-       in
-       if (from# ># to#)
-       then []
-       else (a2i (indexAddrArray arr (I# from#)))
-            : (lookup_range arr (from# +# 1#) to#)
-
--- Arr# Float# -------------------------------------------
-
-test_floats :: String
-test_floats
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newFloatArray (0, (size-1))   >>= \ arr# ->
-
-           -- fill in all elements; elem i has "i * pi" put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-{-     else let e = ((fromInt (I# first#)) * pi)
-            in trace (show e) $ writeFloatArray arr_in# (I# first#) e >>
-            fill_in arr_in# (first# +# 1#) last#
--}
-       else writeFloatArray arr_in# (I# first#) ((fromInt (I# first#)) * pi) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [Float]
-    lookup_range arr from# to#
-      = if (from# ># to#)
-       then []
-       else (indexFloatArray arr (I# from#))
-            : (lookup_range arr (from# +# 1#) to#)
-
--- Arr# Double# -------------------------------------------
-
-test_doubles :: String
-test_doubles
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newDoubleArray (0, (size-1))  >>= \ arr# ->
-
-           -- fill in all elements; elem i has "i * pi" put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-       else writeDoubleArray arr_in# (I# first#) ((fromInt (I# first#)) * pi) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [Double]
-    lookup_range arr from# to#
-      = if (from# ># to#)
-       then []
-       else (indexDoubleArray arr (I# from#))
-            : (lookup_range arr (from# +# 1#) to#)
-
--- Arr# (Ratio Int) (ptrs) ---------------------------------
--- just like Int# test
-
-test_ptrs :: String
-test_ptrs
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42 416) "\n"
-  where
-    f :: Int -> Array Int (Ratio Int)
-
-    f size
-      = runST (
-         newSTArray (1, size) (3 % 5)  >>= \ arr# ->
-         -- don't fill in the whole thing
-         fill_in arr# 1 400            >>
-         freezeSTArray arr#
-       )
-
-    fill_in :: STArray s Int (Ratio Int) -> Int -> Int -> ST s ()
-
-    fill_in arr_in# first last
-      = if (first > last)
-       then return ()
-       else writeSTArray arr_in# first (fromInt (first * first)) >>
-            fill_in  arr_in# (first + 1) last
-
-    lookup_range :: Array Int (Ratio Int) -> Int -> Int -> [Ratio Int]
-    lookup_range array from too
-      = if (from > too)
-       then []
-       else (array ! from) : (lookup_range array (from + 1) too)
diff --git a/ghc/tests/codeGen/should_run/cg026.stdout b/ghc/tests/codeGen/should_run/cg026.stdout
deleted file mode 100644 (file)
index cb76dde..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-"*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255\NUL\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t\n\v\f\r\SO\SI\DLE\DC1\DC2\DC3\DC4\NAK\SYN\ETB\CAN\EM\SUB\ESC\FS\GS\RS\US !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\160"
-
-[1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100,8281,8464,8649,8836,9025,9216,9409,9604,9801,10000,10201,10404,10609,10816,11025,11236,11449,11664,11881,12100,12321,12544,12769,12996,13225,13456,13689,13924,14161,14400,14641,14884,15129,15376,15625,15876,16129,16384,16641,16900,17161,17424,17689,17956,18225,18496,18769,19044,19321,19600,19881,20164,20449,20736,21025,21316,21609,21904,22201,22500,22801,23104,23409,23716,24025,24336,24649,24964,25281,25600,25921,26244,26569,26896,27225,27556,27889,28224,28561,28900,29241,29584,29929,30276,30625,30976,31329,31684,32041,32400,32761,33124,33489,33856,34225,34596,34969,35344,35721,36100,36481,36864,37249,37636,38025,38416,38809,39204,39601,40000,40401,40804,41209,41616,42025,42436,42849,43264,43681,44100,44521,44944,45369,45796,46225,46656,47089,47524,47961,48400,48841,49284,49729,50176,50625,51076,51529,51984,52441,52900,53361,53824,54289,54756,55225,55696,56169,56644,57121,57600,58081,58564,59049,59536,60025,60516,61009,61504,62001,62500,63001,63504,64009,64516,65025,65536,66049,66564,67081,67600,68121,68644,69169,69696,70225,70756,71289,71824,72361,72900,73441,73984,74529,75076,75625,76176,76729,77284,77841,78400,78961,79524,80089,80656,81225,81796,82369,82944,83521,84100,84681,85264,85849,86436,87025,87616,88209,88804,89401,90000,90601,91204,91809,92416,93025,93636,94249,94864,95481,96100,96721,97344,97969,98596,99225,99856,100489,101124,101761,102400,103041,103684,104329,104976,105625,106276,106929,107584,108241,108900,109561,110224,110889,111556,112225,112896,113569,114244,114921,115600,116281,116964,117649,118336,119025,119716,120409,121104,121801,122500,123201,123904,124609,125316,126025,126736,127449,128164,128881,129600,130321,131044,131769,132496,133225,133956,134689,135424,136161,136900,137641,138384,139129,139876,140625,141376,142129,142884,143641,144400,145161,145924,146689,147456,148225,148996,149769,150544,151321,152100,152881,153664,154449,155236,156025,156816,157609,158404,159201,160000,160801,161604,162409,163216,164025,164836,165649,166464,167281,168100,168921,169744,170569,171396,172225,173056]
-
-[1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704,2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969,4096,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476,5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225,7396,7569,7744,7921,8100,8281,8464,8649,8836,9025,9216,9409,9604,9801,10000,10201,10404,10609,10816,11025,11236,11449,11664,11881,12100,12321,12544,12769,12996,13225,13456,13689,13924,14161,14400,14641,14884,15129,15376,15625,15876,16129,16384,16641,16900,17161,17424,17689,17956,18225,18496,18769,19044,19321,19600,19881,20164,20449,20736,21025,21316,21609,21904,22201,22500,22801,23104,23409,23716,24025,24336,24649,24964,25281,25600,25921,26244,26569,26896,27225,27556,27889,28224,28561,28900,29241,29584,29929,30276,30625,30976,31329,31684,32041,32400,32761,33124,33489,33856,34225,34596,34969,35344,35721,36100,36481,36864,37249,37636,38025,38416,38809,39204,39601,40000,40401,40804,41209,41616,42025,42436,42849,43264,43681,44100,44521,44944,45369,45796,46225,46656,47089,47524,47961,48400,48841,49284,49729,50176,50625,51076,51529,51984,52441,52900,53361,53824,54289,54756,55225,55696,56169,56644,57121,57600,58081,58564,59049,59536,60025,60516,61009,61504,62001,62500,63001,63504,64009,64516,65025,65536,66049,66564,67081,67600,68121,68644,69169,69696,70225,70756,71289,71824,72361,72900,73441,73984,74529,75076,75625,76176,76729,77284,77841,78400,78961,79524,80089,80656,81225,81796,82369,82944,83521,84100,84681,85264,85849,86436,87025,87616,88209,88804,89401,90000,90601,91204,91809,92416,93025,93636,94249,94864,95481,96100,96721,97344,97969,98596,99225,99856,100489,101124,101761,102400,103041,103684,104329,104976,105625,106276,106929,107584,108241,108900,109561,110224,110889,111556,112225,112896,113569,114244,114921,115600,116281,116964,117649,118336,119025,119716,120409,121104,121801,122500,123201,123904,124609,125316,126025,126736,127449,128164,128881,129600,130321,131044,131769,132496,133225,133956,134689,135424,136161,136900,137641,138384,139129,139876,140625,141376,142129,142884,143641,144400,145161,145924,146689,147456,148225,148996,149769,150544,151321,152100,152881,153664,154449,155236,156025,156816,157609,158404,159201,160000,160801,161604,162409,163216,164025,164836,165649,166464,167281,168100,168921,169744,170569,171396,172225,173056]
-
-[131.9469,135.08849,138.23009,141.37167,144.51326,147.65486,150.79645,153.93805,157.07964,160.22124,163.36282,166.50441,169.64601,172.7876,175.9292,179.07079,182.21237,185.35397,188.49556,191.63716,194.77875,197.92035,201.06194,204.20352,207.34512,210.48671,213.62831,216.7699,219.9115,223.05309,226.19467,229.33627,232.47786,235.61946,238.76105,241.90263,245.04424,248.18582,251.32742,254.46901,257.6106,260.7522,263.8938,267.03537,270.17697,273.31857,276.46017,279.60175,282.74335,285.88495,289.02652,292.16812,295.30972,298.45132,301.5929,304.7345,307.8761,311.01767,314.15927,317.30087,320.44247,323.58405,326.72565,329.86725,333.00882,336.15042,339.29202,342.4336,345.5752,348.7168,351.8584,354.99997,358.14157,361.28317,364.42474,367.56635,370.70795,373.84955,376.99112,380.13272,383.27432,386.4159,389.5575,392.6991,395.8407,398.98227,402.12387,405.26547,408.40704,411.54865,414.69025,417.83185,420.97342,424.11502,427.25662,430.3982,433.5398,436.6814,439.823,442.96457,446.10617,449.24777,452.38934,455.53094,458.67255,461.81415,464.95572,468.09732,471.23892,474.3805,477.5221,480.6637,483.80527,486.94687,490.08847,493.23007,496.37164,499.51324,502.65485,505.79642,508.93802,512.0796,515.2212,518.3628,521.5044,524.646,527.7876,530.9292,534.07074,537.21234,540.35394,543.49554,546.63715,549.77875,552.92035,556.0619,559.2035,562.3451,565.4867,568.6283,571.7699,574.9115,578.05304,581.19464,584.33624,587.47784,590.61945,593.76105,596.90265,600.0442,603.1858,606.3274,609.469,612.6106,615.7522,618.8938,622.03534,625.17694,628.31854,631.46014,634.60175,637.74335,640.88495,644.0265,647.1681,650.3097,653.4513,656.5929,659.7345,662.8761,666.01764,669.15924,672.30084,675.44244,678.58405,681.72565,684.8672,688.0088,691.1504,694.292,697.4336,700.5752,703.7168,706.85834,709.99994,713.14154,716.28314,719.42474,722.56635,725.70795,728.8495,731.9911,735.1327,738.2743,741.4159,744.5575,747.6991,750.84064,753.98224,757.12384,760.26544,763.40704,766.54865,769.69025,772.8318,775.9734,779.115,782.2566,785.3982,788.5398,791.6814,794.82294,797.96454,801.10614,804.24774,807.38934,810.53094,813.67255,816.8141,819.9557,823.0973,826.2389,829.3805,832.5221,835.6637,838.80524,841.94684,845.08844,848.23004,851.37164,854.51324,857.65485,860.7964,863.938,867.0796,870.2212,873.3628,876.5044,879.646,882.78754,885.92914,889.07074,892.21234,895.35394,898.49554,901.63715,904.7787,907.9203,911.0619,914.2035,917.3451,920.4867,923.6283,926.76984,929.91144,933.05304,936.19464,939.33624,942.47784,945.6194,948.761,951.9026,955.0442,958.1858,961.3274,964.469,967.61053,970.75214,973.89374,977.03534,980.17694,983.31854,986.46014,989.6017,992.7433,995.8849,999.0265,1002.1681,1005.3097,1008.4513,1011.59283,1014.73444,1017.87604,1021.01764,1024.1592,1027.3008,1030.4424,1033.584,1036.7256,1039.8672,1043.0088,1046.1504,1049.292,1052.4336,1055.5752,1058.7168,1061.8584,1065.0,1068.1415,1071.2831,1074.4247,1077.5663,1080.7079,1083.8495,1086.9911,1090.1327,1093.2743,1096.4159,1099.5575,1102.6991,1105.8407,1108.9822,1112.1238,1115.2654,1118.407,1121.5486,1124.6902,1127.8318,1130.9734,1134.115,1137.2566,1140.3982,1143.5398,1146.6814,1149.823,1152.9645,1156.1061,1159.2477,1162.3893,1165.5309,1168.6725,1171.8141,1174.9557,1178.0973,1181.2389,1184.3805,1187.5221,1190.6637,1193.8053,1196.9468,1200.0884,1203.23,1206.3716,1209.5132,1212.6548,1215.7964,1218.938,1222.0796,1225.2212,1228.3628,1231.5044,1234.646,1237.7876,1240.9291,1244.0707,1247.2123,1250.3539,1253.4955,1256.6371,1259.7787,1262.9203,1266.0619,1269.2035,1272.3451,1275.4867,1278.6283,1281.7699,1284.9114,1288.053,1291.1946,1294.3362,1297.4778,1300.6194,1303.761,1306.9026]
-
-[131.94689145077132,135.0884841043611,138.23007675795088,141.3716694115407,144.51326206513048,147.6548547187203,150.79644737231007,153.93804002589985,157.07963267948966,160.22122533307945,163.36281798666926,166.50441064025904,169.64600329384882,172.78759594743863,175.92918860102841,179.0707812546182,182.212373908208,185.3539665617978,188.49555921538757,191.63715186897738,194.77874452256717,197.92033717615698,201.06192982974676,204.20352248333654,207.34511513692635,210.48670779051614,213.62830044410595,216.76989309769573,219.9114857512855,223.05307840487532,226.1946710584651,229.3362637120549,232.4778563656447,235.61944901923448,238.76104167282426,241.90263432641407,245.04422698000386,248.18581963359367,251.32741228718345,254.46900494077323,257.610597594363,260.75219024795285,263.89378290154264,267.0353755551324,270.1769682087222,273.318560862312,276.46015351590177,279.6017461694916,282.7433388230814,285.88493147667117,289.02652413026095,292.16811678385073,295.3097094374406,298.45130209103036,301.59289474462014,304.7344873982099,307.8760800517997,311.01767270538954,314.1592653589793,317.3008580125691,320.4424506661589,323.5840433197487,326.7256359733385,329.8672286269283,333.0088212805181,336.15041393410786,339.29200658769764,342.4335992412874,345.57519189487726,348.71678454846705,351.85837720205683,354.9999698556466,358.1415625092364,361.28315516282623,364.424747816416,367.5663404700058,370.7079331235956,373.84952577718536,376.99111843077515,380.132711084365,383.27430373795477,386.41589639154455,389.55748904513433,392.6990816987241,395.84067435231395,398.98226700590374,402.1238596594935,405.2654523130833,408.4070449666731,411.5486376202629,414.6902302738527,417.8318229274425,420.97341558103227,424.11500823462205,427.2566008882119,430.3981935418017,433.53978619539146,436.68137884898124,439.822971502571,442.9645641561608,446.10615680975064,449.2477494633404,452.3893421169302,455.53093477052,458.6725274241098,461.8141200776996,464.9557127312894,468.0973053848792,471.23889803846896,474.38049069205874,477.5220833456485,480.66367599923836,483.80526865282815,486.94686130641793,490.0884539600077,493.2300466135975,496.37163926718733,499.5132319207771,502.6548245743669,505.7964172279567,508.93800988154646,512.0796025351362,515.221195188726,518.3627878423158,521.5043804959057,524.6459731494955,527.7875658030853,530.929158456675,534.0707511102648,537.2123437638546,540.3539364174444,543.4955290710342,546.637121724624,549.7787143782137,552.9203070318035,556.0618996853934,559.2034923389832,562.345084992573,565.4866776461628,568.6282702997526,571.7698629533423,574.9114556069321,578.0530482605219,581.1946409141117,584.3362335677015,587.4778262212914,590.6194188748811,593.7610115284709,596.9026041820607,600.0441968356505,603.1857894892403,606.3273821428301,609.4689747964198,612.6105674500096,615.7521601035994,618.8937527571892,622.0353454107791,625.1769380643689,628.3185307179587,631.4601233715484,634.6017160251382,637.743308678728,640.8849013323178,644.0264939859076,647.1680866394973,650.3096792930871,653.451271946677,656.5928646002668,659.7344572538566,662.8760499074464,666.0176425610362,669.1592352146259,672.3008278682157,675.4424205218055,678.5840131753953,681.7256058289851,684.8671984825748,688.0087911361647,691.1503837897545,694.2919764433443,697.4335690969341,700.5751617505239,703.7167544041137,706.8583470577034,709.9999397112932,713.141532364883,716.2831250184728,719.4247176720626,722.5663103256525,725.7079029792422,728.849495632832,731.9910882864218,735.1326809400116,738.2742735936014,741.4158662471912,744.557458900781,747.6990515543707,750.8406442079605,753.9822368615503,757.1238295151402,760.26542216873,763.4070148223198,766.5486074759095,769.6902001294993,772.8317927830891,775.9733854366789,779.1149780902687,782.2565707438584,785.3981633974482,788.5397560510381,791.6813487046279,794.8229413582177,797.9645340118075,801.1061266653973,804.247719318987,807.3893119725768,810.5309046261666,813.6724972797564,816.8140899333462,819.955682586936,823.0972752405258,826.2388678941156,829.3804605477054,832.5220532012952,835.663645854885,838.8052385084748,841.9468311620645,845.0884238156543,848.2300164692441,851.3716091228339,854.5132017764238,857.6547944300136,860.7963870836033,863.9379797371931,867.0795723907829,870.2211650443727,873.3627576979625,876.5043503515523,879.645943005142,882.7875356587318,885.9291283123216,889.0707209659115,892.2123136195013,895.3539062730911,898.4954989266809,901.6370915802706,904.7786842338604,907.9202768874502,911.06186954104,914.2034621946298,917.3450548482195,920.4866475018093,923.6282401553992,926.769832808989,929.9114254625788,933.0530181161686,936.1946107697584,939.3362034233481,942.4777960769379,945.6193887305277,948.7609813841175,951.9025740377073,955.044166691297,958.185759344887,961.3273519984767,964.4689446520665,967.6105373056563,970.7521299592461,973.8937226128359,977.0353152664256,980.1769079200154,983.3185005736052,986.460093227195,989.6016858807849,992.7432785343747,995.8848711879644,999.0264638415542,1002.168056495144,1005.3096491487338,1008.4512418023236,1011.5928344559134,1014.7344271095031,1017.8760197630929,1021.0176124166827,1024.1592050702725,1027.3007977238624,1030.442390377452,1033.583983031042,1036.7255756846316,1039.8671683382215,1043.0087609918114,1046.150353645401,1049.291946298991,1052.4335389525806,1055.5751316061705,1058.7167242597602,1061.85831691335,1064.9999095669398,1068.1415022205297,1071.2830948741193,1074.4246875277092,1077.5662801812991,1080.7078728348888,1083.8494654884787,1086.9910581420684,1090.1326507956583,1093.274243449248,1096.4158361028378,1099.5574287564275,1102.6990214100174,1105.840614063607,1108.982206717197,1112.1237993707869,1115.2653920243765,1118.4069846779664,1121.548577331556,1124.690169985146,1127.8317626387357,1130.9733552923256,1134.1149479459152,1137.2565405995051,1140.398133253095,1143.5397259066847,1146.6813185602746,1149.8229112138642,1152.9645038674541,1156.1060965210438,1159.2476891746337,1162.3892818282234,1165.5308744818133,1168.672467135403,1171.8140597889928,1174.9556524425827,1178.0972450961724,1181.2388377497623,1184.380430403352,1187.5220230569419,1190.6636157105315,1193.8052083641214,1196.946801017711,1200.088393671301,1203.2299863248907,1206.3715789784806,1209.5131716320705,1212.6547642856601,1215.79635693925,1218.9379495928397,1222.0795422464296,1225.2211349000193,1228.3627275536091,1231.5043202071988,1234.6459128607887,1237.7875055143784,1240.9290981679683,1244.0706908215582,1247.2122834751478,1250.3538761287377,1253.4954687823274,1256.6370614359173,1259.778654089507,1262.9202467430969,1266.0618393966865,1269.2034320502764,1272.345024703866,1275.486617357456,1278.628210011046,1281.7698026646356,1284.9113953182255,1288.0529879718151,1291.194580625405,1294.3361732789947,1297.4777659325846,1300.6193585861743,1303.7609512397642,1306.902543893354]
-
-[1764 % 1,1849 % 1,1936 % 1,2025 % 1,2116 % 1,2209 % 1,2304 % 1,2401 % 1,2500 % 1,2601 % 1,2704 % 1,2809 % 1,2916 % 1,3025 % 1,3136 % 1,3249 % 1,3364 % 1,3481 % 1,3600 % 1,3721 % 1,3844 % 1,3969 % 1,4096 % 1,4225 % 1,4356 % 1,4489 % 1,4624 % 1,4761 % 1,4900 % 1,5041 % 1,5184 % 1,5329 % 1,5476 % 1,5625 % 1,5776 % 1,5929 % 1,6084 % 1,6241 % 1,6400 % 1,6561 % 1,6724 % 1,6889 % 1,7056 % 1,7225 % 1,7396 % 1,7569 % 1,7744 % 1,7921 % 1,8100 % 1,8281 % 1,8464 % 1,8649 % 1,8836 % 1,9025 % 1,9216 % 1,9409 % 1,9604 % 1,9801 % 1,10000 % 1,10201 % 1,10404 % 1,10609 % 1,10816 % 1,11025 % 1,11236 % 1,11449 % 1,11664 % 1,11881 % 1,12100 % 1,12321 % 1,12544 % 1,12769 % 1,12996 % 1,13225 % 1,13456 % 1,13689 % 1,13924 % 1,14161 % 1,14400 % 1,14641 % 1,14884 % 1,15129 % 1,15376 % 1,15625 % 1,15876 % 1,16129 % 1,16384 % 1,16641 % 1,16900 % 1,17161 % 1,17424 % 1,17689 % 1,17956 % 1,18225 % 1,18496 % 1,18769 % 1,19044 % 1,19321 % 1,19600 % 1,19881 % 1,20164 % 1,20449 % 1,20736 % 1,21025 % 1,21316 % 1,21609 % 1,21904 % 1,22201 % 1,22500 % 1,22801 % 1,23104 % 1,23409 % 1,23716 % 1,24025 % 1,24336 % 1,24649 % 1,24964 % 1,25281 % 1,25600 % 1,25921 % 1,26244 % 1,26569 % 1,26896 % 1,27225 % 1,27556 % 1,27889 % 1,28224 % 1,28561 % 1,28900 % 1,29241 % 1,29584 % 1,29929 % 1,30276 % 1,30625 % 1,30976 % 1,31329 % 1,31684 % 1,32041 % 1,32400 % 1,32761 % 1,33124 % 1,33489 % 1,33856 % 1,34225 % 1,34596 % 1,34969 % 1,35344 % 1,35721 % 1,36100 % 1,36481 % 1,36864 % 1,37249 % 1,37636 % 1,38025 % 1,38416 % 1,38809 % 1,39204 % 1,39601 % 1,40000 % 1,40401 % 1,40804 % 1,41209 % 1,41616 % 1,42025 % 1,42436 % 1,42849 % 1,43264 % 1,43681 % 1,44100 % 1,44521 % 1,44944 % 1,45369 % 1,45796 % 1,46225 % 1,46656 % 1,47089 % 1,47524 % 1,47961 % 1,48400 % 1,48841 % 1,49284 % 1,49729 % 1,50176 % 1,50625 % 1,51076 % 1,51529 % 1,51984 % 1,52441 % 1,52900 % 1,53361 % 1,53824 % 1,54289 % 1,54756 % 1,55225 % 1,55696 % 1,56169 % 1,56644 % 1,57121 % 1,57600 % 1,58081 % 1,58564 % 1,59049 % 1,59536 % 1,60025 % 1,60516 % 1,61009 % 1,61504 % 1,62001 % 1,62500 % 1,63001 % 1,63504 % 1,64009 % 1,64516 % 1,65025 % 1,65536 % 1,66049 % 1,66564 % 1,67081 % 1,67600 % 1,68121 % 1,68644 % 1,69169 % 1,69696 % 1,70225 % 1,70756 % 1,71289 % 1,71824 % 1,72361 % 1,72900 % 1,73441 % 1,73984 % 1,74529 % 1,75076 % 1,75625 % 1,76176 % 1,76729 % 1,77284 % 1,77841 % 1,78400 % 1,78961 % 1,79524 % 1,80089 % 1,80656 % 1,81225 % 1,81796 % 1,82369 % 1,82944 % 1,83521 % 1,84100 % 1,84681 % 1,85264 % 1,85849 % 1,86436 % 1,87025 % 1,87616 % 1,88209 % 1,88804 % 1,89401 % 1,90000 % 1,90601 % 1,91204 % 1,91809 % 1,92416 % 1,93025 % 1,93636 % 1,94249 % 1,94864 % 1,95481 % 1,96100 % 1,96721 % 1,97344 % 1,97969 % 1,98596 % 1,99225 % 1,99856 % 1,100489 % 1,101124 % 1,101761 % 1,102400 % 1,103041 % 1,103684 % 1,104329 % 1,104976 % 1,105625 % 1,106276 % 1,106929 % 1,107584 % 1,108241 % 1,108900 % 1,109561 % 1,110224 % 1,110889 % 1,111556 % 1,112225 % 1,112896 % 1,113569 % 1,114244 % 1,114921 % 1,115600 % 1,116281 % 1,116964 % 1,117649 % 1,118336 % 1,119025 % 1,119716 % 1,120409 % 1,121104 % 1,121801 % 1,122500 % 1,123201 % 1,123904 % 1,124609 % 1,125316 % 1,126025 % 1,126736 % 1,127449 % 1,128164 % 1,128881 % 1,129600 % 1,130321 % 1,131044 % 1,131769 % 1,132496 % 1,133225 % 1,133956 % 1,134689 % 1,135424 % 1,136161 % 1,136900 % 1,137641 % 1,138384 % 1,139129 % 1,139876 % 1,140625 % 1,141376 % 1,142129 % 1,142884 % 1,143641 % 1,144400 % 1,145161 % 1,145924 % 1,146689 % 1,147456 % 1,148225 % 1,148996 % 1,149769 % 1,150544 % 1,151321 % 1,152100 % 1,152881 % 1,153664 % 1,154449 % 1,155236 % 1,156025 % 1,156816 % 1,157609 % 1,158404 % 1,159201 % 1,160000 % 1,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5,3 % 5]
-
diff --git a/ghc/tests/codeGen/should_run/cg027.hs b/ghc/tests/codeGen/should_run/cg027.hs
deleted file mode 100644 (file)
index 646d05c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! simple test of 0-method classes
---
-
-class (Num a, Integral a) => Foo a
-
-main = putStr (shows (f ((fromInteger 21)::Int)
-                       ((fromInteger 37))) "\n")
-
-instance Foo Int
-
-f :: Foo a => a -> a -> Integer
-
-f a b = toInteger (a + b)
diff --git a/ghc/tests/codeGen/should_run/cg027.stdout b/ghc/tests/codeGen/should_run/cg027.stdout
deleted file mode 100644 (file)
index 8c61d23..0000000
+++ /dev/null
@@ -1 +0,0 @@
-58
diff --git a/ghc/tests/codeGen/should_run/cg028.hs b/ghc/tests/codeGen/should_run/cg028.hs
deleted file mode 100644 (file)
index 3fa877c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-main = putStr (shows (f (read "42.0")) "\n")
-
--- f compiled to bogus code with ghc 0.18 and earlier
--- switch() on a DoubleReg
-
-f :: Double -> Int
-f 1.0 = 1
-f 2.0 = 2
-f 3.0 = 3
-f x = round x
diff --git a/ghc/tests/codeGen/should_run/cg028.stdout b/ghc/tests/codeGen/should_run/cg028.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg029.hs b/ghc/tests/codeGen/should_run/cg029.hs
deleted file mode 100644 (file)
index faa9f2f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module Main(main) where
-
--- In 0.19, we lost the ability to do ccalls with more than 6 arguments
--- on the Sparc.  Just to make sure it never happens again...
-
-import CString
-
-main = 
-       _ccall_ printf (packString "Testing %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n")
-       (01::Int) (02::Int) (03::Int) (04::Int) (05::Int) (06::Int) (07::Int) (08::Int)
-       (11::Int) (12::Int) (13::Int) (14::Int) (15::Int) (16::Int) (17::Int) (18::Int)
-       (21::Int) (22::Int) (23::Int) (24::Int) (25::Int) (26::Int) (27::Int) (28::Int)
-       (31::Int) (32::Int) (33::Int) (34::Int) (35::Int) (36::Int) (37::Int) (38::Int)
-       >>
-       return ()
diff --git a/ghc/tests/codeGen/should_run/cg029.stdout b/ghc/tests/codeGen/should_run/cg029.stdout
deleted file mode 100644 (file)
index d00a3d3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Testing 1 2 3 4 5 6 7 8 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38
diff --git a/ghc/tests/codeGen/should_run/cg030.hs b/ghc/tests/codeGen/should_run/cg030.hs
deleted file mode 100644 (file)
index 62ca025..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module PrelMain(mainIO) where
-
-import ST
-import CString
-
-mainIO = _ccall_ puts (packString "123\n") >> return ()
diff --git a/ghc/tests/codeGen/should_run/cg030.stdout b/ghc/tests/codeGen/should_run/cg030.stdout
deleted file mode 100644 (file)
index cc12087..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-123
-
diff --git a/ghc/tests/codeGen/should_run/cg031.hs b/ghc/tests/codeGen/should_run/cg031.hs
deleted file mode 100644 (file)
index 2aa3c26..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
--- !! test GEN reps w/ unboxed values in them
--- !! NB: it was the static ones that were hosed...
---
-module Main ( main ) where
-
-import PrelBase
-
-main = do
-    putStr (shows (sum ([1..1{-30-}]++[1..1{-40-}]++[11,22])) "\n")
-    putStr (shows (prog 1{-30-} 1{-40-}) "\n")
-
-data Foo a
-  = MkFoo [a] Int# [Int] Int# [(a,Int)] Int#
-  -- The above will cause a *horrible* GEN rep'n.
-
-prog :: Int -> Int -> Int
-
-prog size_1 size_2
-  = let
-       list1 = static1 : (map mk_foo [1 .. size_1])
-       list2 = static2 : (map mk_foo [1 .. size_2])
-    in
-    I# (add_up 0# list1 (reverse list2))
-
-static1 = MkFoo (error "static11") 11# [] 11# (error "static12") 11#
-static2 = MkFoo (error "static21") 22# [] 22# (error "static22") 22#
-
-one, two :: Int
-one = 1; two = 2
-
-mk_foo i@(I# i#)
-  = MkFoo (error "list1") i# [i,i] i# (error "list2") i#
-
-add_up :: Int# -> [Foo a] -> [Foo a] -> Int#
-
-add_up acc [] [] = acc
-add_up acc [] ys  = add_up acc ys []
-add_up acc (x:xs) (y:ys) = add_up (acc +# add x y) xs ys
-add_up acc (x:xs) [] = add_up acc xs []
-
-add :: Foo a -> Foo a -> Int#
-add (MkFoo _ _ _ _ _ x) (MkFoo _ _ _ _ _ y)
-  = x +# y
diff --git a/ghc/tests/codeGen/should_run/cg031.stdout b/ghc/tests/codeGen/should_run/cg031.stdout
deleted file mode 100644 (file)
index a91166f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-35
-35
diff --git a/ghc/tests/codeGen/should_run/cg032.hs b/ghc/tests/codeGen/should_run/cg032.hs
deleted file mode 100644 (file)
index b61feb8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- !! pattern-matching failure on functions that return Int#
-
-import PrelBase --ghc1.3
-
-main = putStr (shows (I# (foo bar1 bar2)) "\n")
-  where
-    bar1 = Bar1 40 (39,38) resps
-    bar2 = Bar1  2 ( 1, 0) resps
-    resps = error "1.2 responses"
-
-data Response = Response -- stub
-
-data Bar
-  = Bar1 Int (Int,Int) [Response]
-  | Bar2 Int Int#
-  | Bar3 Int
-
-foo :: Bar -> Bar -> Int#
-
-foo (Bar1 (I# i) _ _) (Bar1 (I# j) _ _) = i +# j
diff --git a/ghc/tests/codeGen/should_run/cg032.stdout b/ghc/tests/codeGen/should_run/cg032.stdout
deleted file mode 100644 (file)
index d81cc07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42
diff --git a/ghc/tests/codeGen/should_run/cg033.hs b/ghc/tests/codeGen/should_run/cg033.hs
deleted file mode 100644 (file)
index 8b333a0..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
--- !! worker/wrapper turns ( \ <absent> -> Int# ) function
--- !! into Int# -- WRONG
-
-import PrelBase --ghc1.3
-
-main = putStr (shows true_or_false "\n")
-  where
-    true_or_false
-      = case (cmp_name True imp1 imp2) of
-         -1# -> False
-         0#  -> True
-         1#  -> False
-   
-    imp1 = Imp s "Imp1" s s
-    imp2 = Imp s "Imp2" s s
-
-    s = "String!"
-
--- taken from compiler: basicTypes/ProtoName.lhs
-
-cmp_name :: Bool -> ProtoName -> ProtoName -> Int#
-
-cmp_name by_local (Unk n1) (Unk n2)        = cmpString n1 n2
-cmp_name by_local (Unk n1) (Imp m n2 _ o2) = cmpString n1 (if by_local then o2 else n2)
-cmp_name by_local (Unk n1) (Prel nm)
-  =  let  (_, n2) = getOrigName nm  in
-     cmpString n1 n2
-
-cmp_name by_local (Prel n1) (Prel n2) = cmpName n1 n2
-
-cmp_name True  (Imp _ _ _ o1) (Imp _ _ _ o2) = cmpString o1 o2
-
-cmp_name False (Imp m1 n1 _ _) (Imp m2 n2 _ _)
-  = case cmpString n1 n2 of {
-      -1# -> -1#;
-      0# -> case cmpString m1 m2 of {
-              0# -> 0#;
-              xxx -> if null m1 || null m2
-                     then 0#
-                     else xxx
-            };
-      _ -> 1#
-    }
-
-cmp_name True (Imp _ _ _ o1) (Prel nm)
-  = let
-       (_, n2) = getOrigName nm
-    in
-    cmpString o1 n2
-
-cmp_name False (Imp m1 n1 _ _) (Prel nm)
-  = case getOrigName nm   of { (m2, n2) ->
-    case cmpString n1 n2 of { -1# -> -1#; 0# -> cmpString m1 m2; _ -> 1# }}
-
-cmp_name by_local other_p1 other_p2
-  = case cmp_name by_local other_p2 other_p1 of -- compare the other way around
-      -1#  -> 1#
-      0#  -> 0#
-      _ -> -1#
-
-data ProtoName
-  = Unk                String  -- local name in module
-
-  | Imp                String  -- name of defining module 
-               String  -- name used in defining name
-               String  -- name of the module whose interface told me
-                       -- about this thing
-               String  -- occurrence name
-
-  | Prel       String{-Name-}
-
-cmpString, cmpName :: String -> String -> Int#
-cmpString a b = 0#
-cmpName = cmpString
-
-getOrigName :: String -> (String, String)
-getOrigName x = ("MODULE", x)
diff --git a/ghc/tests/codeGen/should_run/cg033.stdout b/ghc/tests/codeGen/should_run/cg033.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/codeGen/should_run/cg034.hs b/ghc/tests/codeGen/should_run/cg034.hs
deleted file mode 100644 (file)
index d1016d3..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
--- !! fromRational woes
-import Ratio -- 1.3
-
-main = putStr (
-   shows tinyFloat  ( '\n'
- : shows t_f       ( '\n'
- : shows hugeFloat  ( '\n'
- : shows h_f       ( '\n'
- : shows tinyDouble ( '\n'
- : shows t_d       ( '\n'
- : shows hugeDouble ( '\n'
- : shows h_d       ( '\n'
- : shows x_f       ( '\n'
- : shows x_d       ( '\n'
- : shows y_f       ( '\n'
- : shows y_d       ( "\n"
- )))))))))))))
-  where
-    t_f :: Float
-    t_d :: Double
-    h_f :: Float
-    h_d :: Double
-    x_f :: Float
-    x_d :: Double
-    y_f :: Float
-    y_d :: Double
-    t_f = fromRationalX (toRational tinyFloat)
-    t_d = fromRationalX (toRational tinyDouble)
-    h_f = fromRationalX (toRational hugeFloat)
-    h_d = fromRationalX (toRational hugeDouble)
-    x_f = fromRationalX (1.82173691287639817263897126389712638972163e-300 :: Rational)
-    x_d = fromRationalX (1.82173691287639817263897126389712638972163e-300 :: Rational)
-    y_f = 1.82173691287639817263897126389712638972163e-300
-    y_d = 1.82173691287639817263897126389712638972163e-300
-
-fromRationalX :: (RealFloat a) => Rational -> a
-fromRationalX r =
-       let 
-           h = ceiling (huge `asTypeOf` x)
-           b = toInteger (floatRadix x)
-           x = fromRat 0 r
-           fromRat e0 r' =
-               let d = denominator r'
-                   n = numerator r'
-               in  if d > h then
-                      let e = integerLogBase b (d `div` h) + 1
-                      in  fromRat (e0-e) (n % (d `div` (b^e)))
-                   else if abs n > h then
-                      let e = integerLogBase b (abs n `div` h) + 1
-                      in  fromRat (e0+e) ((n `div` (b^e)) % d)
-                   else
-                      scaleFloat e0 (rationalToRealFloat {-fromRational-} r')
-       in  x
-
-{-
-fromRationalX r =
-  rationalToRealFloat r
-{- Hmmm...
-       let 
-           h = ceiling (huge `asTypeOf` x)
-           b = toInteger (floatRadix x)
-           x = fromRat 0 r
-
-           fromRat e0 r' =
-{--}           trace (shows e0 ('/' : shows r' ('/' : shows h "\n"))) (
-               let d = denominator r'
-                   n = numerator r'
-               in  if d > h then
-                      let e = integerLogBase b (d `div` h) + 1
-                      in  fromRat (e0-e) (n % (d `div` (b^e)))
-                   else if abs n > h then
-                      let e = integerLogBase b (abs n `div` h) + 1
-                      in  fromRat (e0+e) ((n `div` (b^e)) % d)
-                   else
-                      scaleFloat e0 (rationalToRealFloat r')
-                      -- now that we know things are in-bounds,
-                      -- we use the "old" Prelude code.
-{--}           )
-       in  x
--}
--}
-
--- Compute the discrete log of i in base b.
--- Simplest way would be just divide i by b until it's smaller then b, but that would
--- be very slow!  We are just slightly more clever.
-integerLogBase :: Integer -> Integer -> Int
-integerLogBase b i =
-     if i < b then
-        0
-     else
-       -- Try squaring the base first to cut down the number of divisions.
-        let l = 2 * integerLogBase (b*b) i
-           doDiv :: Integer -> Int -> Int
-           doDiv i l = if i < b then l else doDiv (i `div` b) (l+1)
-       in  doDiv (i `div` (b^l)) l
-
-
-------------
-
--- Compute smallest and largest floating point values.
-tiny :: (RealFloat a) => a
-tiny =
-       let (l, _) = floatRange x
-           x = encodeFloat 1 (l-1)
-       in  x
-
-huge :: (RealFloat a) => a
-huge =
-       let (_, u) = floatRange x
-           d = floatDigits x
-           x = encodeFloat (floatRadix x ^ d - 1) (u - d)
-       in  x
-
-tinyDouble = tiny :: Double
-tinyFloat  = tiny :: Float
-hugeDouble = huge :: Double
-hugeFloat  = huge :: Float
-
-{-
-[In response to a request by simonpj, Joe Fasel writes:]
-
-A quite reasonable request!  This code was added to the Prelude just
-before the 1.2 release, when Lennart, working with an early version
-of hbi, noticed that (read . show) was not the identity for
-floating-point numbers.         (There was a one-bit error about half the time.)
-The original version of the conversion function was in fact simply
-a floating-point divide, as you suggest above. The new version is,
-I grant you, somewhat denser.
-
-How's this?
-
---Joe
--}
-
-
-rationalToRealFloat :: (RealFloat a) => Rational -> a
-
-rationalToRealFloat x  =  x'
-       where x'    = f e
-
---             If the exponent of the nearest floating-point number to x 
---             is e, then the significand is the integer nearest xb^(-e),
---             where b is the floating-point radix.  We start with a good
---             guess for e, and if it is correct, the exponent of the
---             floating-point number we construct will again be e.  If
---             not, one more iteration is needed.
-
-             f e   = if e' == e then y else f e'
-                     where y      = encodeFloat (round (x * (1%b)^^e)) e
-                           (_,e') = decodeFloat y
-             b     = floatRadix x'
-
---             We obtain a trial exponent by doing a floating-point
---             division of x's numerator by its denominator.  The
---             result of this division may not itself be the ultimate
---             result, because of an accumulation of three rounding
---             errors.
-
-             (s,e) = decodeFloat (fromInteger (numerator x) `asTypeOf` x'
-                                       / fromInteger (denominator x))
-
diff --git a/ghc/tests/codeGen/should_run/cg034.stdout b/ghc/tests/codeGen/should_run/cg034.stdout
deleted file mode 100644 (file)
index 0c2be1c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-1.1754944e-38
-1.1754944e-38
-3.4028235e38
-3.4028235e38
-2.2250738585072014e-308
-2.2250738585072014e-308
-1.7976931348623157e308
-1.7976931348623157e308
-0.0
-1.821736912876398e-300
-0.0
-1.821736912876398e-300
diff --git a/ghc/tests/codeGen/should_run/cg035.hs b/ghc/tests/codeGen/should_run/cg035.hs
deleted file mode 100644 (file)
index 487b8b4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-module Main (main) where
-
-import IOExts ( unsafePerformIO )
-
-po :: Double -> Double
-po rd = 0.5 + 0.5 * erf ((rd / 1.04) / sqrt 2)
-  where
-    erf :: Double -> Double
-    erf x = unsafePerformIO (_ccall_ erf x)
-
-main = putStr (shows (po 2.0) "\n")
diff --git a/ghc/tests/codeGen/should_run/cg035.stdout b/ghc/tests/codeGen/should_run/cg035.stdout
deleted file mode 100644 (file)
index a00e9a2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0.9727648049862613
diff --git a/ghc/tests/codeGen/should_run/cg036.hs b/ghc/tests/codeGen/should_run/cg036.hs
deleted file mode 100644 (file)
index 40bfa74..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !! Won't compile unless the compile succeeds on
--- !! the "single occurrence of big thing in a duplicated small thing"
--- !! inlining old-chestnut.  WDP 95/03
---
-module Main ( main, g ) where
-
-main = putStr (shows (g 42 45 45) "\n")
-
-g :: Int -> Int -> Int -> [Int]
-
-g x y z
-  = let
-       f a b = a + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b + b * a * b - a + a + b
-       g c = f c c
-    in
-    [g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y, g z, g x, g y]
diff --git a/ghc/tests/codeGen/should_run/cg036.stdout b/ghc/tests/codeGen/should_run/cg036.stdout
deleted file mode 100644 (file)
index 7b74638..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425,1276425,1037862,1276425]
diff --git a/ghc/tests/codeGen/should_run/cg037.hs b/ghc/tests/codeGen/should_run/cg037.hs
deleted file mode 100644 (file)
index 9c16f37..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- Andy Gill bug report 95/08:
--- Constant strings with '\0' in them don't work :-
---
-main = putStrLn "hello\0 world"
---main = putStrLn "hello0 world"
-
diff --git a/ghc/tests/codeGen/should_run/cg037.stdout b/ghc/tests/codeGen/should_run/cg037.stdout
deleted file mode 100644 (file)
index fa50190..0000000
Binary files a/ghc/tests/codeGen/should_run/cg037.stdout and /dev/null differ
diff --git a/ghc/tests/codeGen/should_run/cg038.hs b/ghc/tests/codeGen/should_run/cg038.hs
deleted file mode 100644 (file)
index 57669c6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{-
-From: Rajiv Mirani <mirani>
-Date: Sat, 26 Aug 95 21:14:47 -0400
-Subject: GHC bug
-
-GHC can't parse the following program when there is no newline at the 
-end of the last line:
--}
-
-module Main where
-main :: IO ()
-main = return ()
--- random comment
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg038.stdout b/ghc/tests/codeGen/should_run/cg038.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/codeGen/should_run/cg039.hs b/ghc/tests/codeGen/should_run/cg039.hs
deleted file mode 100644 (file)
index b7b3017..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! From a Rick Morgan bug report:
--- !!! Single-method class with a locally-polymorphic
--- !!! method.
-
-module Main where
-
-class Poly a where
-   poly :: a -> b -> b
-
-instance Poly [a] where
-   poly [] y = y
-   poly x  y = y
-
-main = print ("hurrah" `poly` "Hello, world!\n")
diff --git a/ghc/tests/codeGen/should_run/cg039.stdout b/ghc/tests/codeGen/should_run/cg039.stdout
deleted file mode 100644 (file)
index 1c2d5d6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"Hello, world!\n"
diff --git a/ghc/tests/codeGen/should_run/cg040.hs b/ghc/tests/codeGen/should_run/cg040.hs
deleted file mode 100644 (file)
index d747d4a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module Main(main) where
-
-data Burble a = B1 { op1 :: a -> Int, op2 :: Int -> a, op3 :: Int}
-             | B2 { op2 :: Int -> a, op4 :: Int -> Int } 
-
-
-f1 :: Int -> Burble Int
-f1 n = B1 { op1 = \x->x+n, op2 = \x -> x, op3 = n }
-
-f2 :: Burble a -> Int -> Int
-f2 r@(B1 {op1 = op1 , op2 = op2 }) n = op1 (op2 n) + op3 r
-
-f3 :: Burble a -> Burble a
-f3 x@(B1 {op3=op3}) = x {op3 = op3+1}
-
-main = print (f2 (f3 (f1 3)) 4)
diff --git a/ghc/tests/codeGen/should_run/cg040.stdout b/ghc/tests/codeGen/should_run/cg040.stdout
deleted file mode 100644 (file)
index b4de394..0000000
+++ /dev/null
@@ -1 +0,0 @@
-11
diff --git a/ghc/tests/codeGen/should_run/cg042.hs b/ghc/tests/codeGen/should_run/cg042.hs
deleted file mode 100644 (file)
index 3371be4..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
--- !!! mutable Double array test (ncg test)
---
-module Main ( main ) where
-
-import PrelBase --ghc1.3
-import IOExts
-import ByteArray
-import MutableArray
-import ST
-import Int( fromInt )
-
-import Ratio   -- 1.3
-import Array   -- 1.3
-
-main = --primIOToIO (newDoubleArray (0,1) >>= \ arr -> readDoubleArray arr 0) >>= print
- putStr test_doubles
-
-
-test_doubles :: String
-test_doubles
-  = let arr# = f 1000
-    in
-       shows (lookup_range arr# 42# 416#) "\n"
-  where
-    f :: Int -> ByteArray Int
-
-    f size@(I# size#)
-      = runST (
-           -- allocate an array of the specified size
-         newDoubleArray (0, (size-1))  >>= \ arr# ->
-
-           -- fill in all elements; elem i has "i * pi" put in it
-         fill_in arr# 0# (size# -# 1#) >>
-
-           -- freeze the puppy:
-         freezeByteArray arr#
-       )
-
-    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
-
-    fill_in arr_in# first# last#
-      = if (first# ># last#)
-       then return ()
-       else writeDoubleArray arr_in# (I# first#) ((fromInt (I# first#)) * pi) >>
-            fill_in arr_in# (first# +# 1#) last#
-
-    lookup_range :: ByteArray Int -> Int# -> Int# -> [Double]
-    lookup_range arr from# to#
-      = if (from# ># to#)
-       then []
-       else (indexDoubleArray arr (I# from#))
-            : (lookup_range arr (from# +# 1#) to#)
diff --git a/ghc/tests/codeGen/should_run/cg042.stdout b/ghc/tests/codeGen/should_run/cg042.stdout
deleted file mode 100644 (file)
index 7f606f7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[131.94689145077132,135.0884841043611,138.23007675795088,141.3716694115407,144.51326206513048,147.6548547187203,150.79644737231007,153.93804002589985,157.07963267948966,160.22122533307945,163.36281798666926,166.50441064025904,169.64600329384882,172.78759594743863,175.92918860102841,179.0707812546182,182.212373908208,185.3539665617978,188.49555921538757,191.63715186897738,194.77874452256717,197.92033717615698,201.06192982974676,204.20352248333654,207.34511513692635,210.48670779051614,213.62830044410595,216.76989309769573,219.9114857512855,223.05307840487532,226.1946710584651,229.3362637120549,232.4778563656447,235.61944901923448,238.76104167282426,241.90263432641407,245.04422698000386,248.18581963359367,251.32741228718345,254.46900494077323,257.610597594363,260.75219024795285,263.89378290154264,267.0353755551324,270.1769682087222,273.318560862312,276.46015351590177,279.6017461694916,282.7433388230814,285.88493147667117,289.02652413026095,292.16811678385073,295.3097094374406,298.45130209103036,301.59289474462014,304.7344873982099,307.8760800517997,311.01767270538954,314.1592653589793,317.3008580125691,320.4424506661589,323.5840433197487,326.7256359733385,329.8672286269283,333.0088212805181,336.15041393410786,339.29200658769764,342.4335992412874,345.57519189487726,348.71678454846705,351.85837720205683,354.9999698556466,358.1415625092364,361.28315516282623,364.424747816416,367.5663404700058,370.7079331235956,373.84952577718536,376.99111843077515,380.132711084365,383.27430373795477,386.41589639154455,389.55748904513433,392.6990816987241,395.84067435231395,398.98226700590374,402.1238596594935,405.2654523130833,408.4070449666731,411.5486376202629,414.6902302738527,417.8318229274425,420.97341558103227,424.11500823462205,427.2566008882119,430.3981935418017,433.53978619539146,436.68137884898124,439.822971502571,442.9645641561608,446.10615680975064,449.2477494633404,452.3893421169302,455.53093477052,458.6725274241098,461.8141200776996,464.9557127312894,468.0973053848792,471.23889803846896,474.38049069205874,477.5220833456485,480.66367599923836,483.80526865282815,486.94686130641793,490.0884539600077,493.2300466135975,496.37163926718733,499.5132319207771,502.6548245743669,505.7964172279567,508.93800988154646,512.0796025351362,515.221195188726,518.3627878423158,521.5043804959057,524.6459731494955,527.7875658030853,530.929158456675,534.0707511102648,537.2123437638546,540.3539364174444,543.4955290710342,546.637121724624,549.7787143782137,552.9203070318035,556.0618996853934,559.2034923389832,562.345084992573,565.4866776461628,568.6282702997526,571.7698629533423,574.9114556069321,578.0530482605219,581.1946409141117,584.3362335677015,587.4778262212914,590.6194188748811,593.7610115284709,596.9026041820607,600.0441968356505,603.1857894892403,606.3273821428301,609.4689747964198,612.6105674500096,615.7521601035994,618.8937527571892,622.0353454107791,625.1769380643689,628.3185307179587,631.4601233715484,634.6017160251382,637.743308678728,640.8849013323178,644.0264939859076,647.1680866394973,650.3096792930871,653.451271946677,656.5928646002668,659.7344572538566,662.8760499074464,666.0176425610362,669.1592352146259,672.3008278682157,675.4424205218055,678.5840131753953,681.7256058289851,684.8671984825748,688.0087911361647,691.1503837897545,694.2919764433443,697.4335690969341,700.5751617505239,703.7167544041137,706.8583470577034,709.9999397112932,713.141532364883,716.2831250184728,719.4247176720626,722.5663103256525,725.7079029792422,728.849495632832,731.9910882864218,735.1326809400116,738.2742735936014,741.4158662471912,744.557458900781,747.6990515543707,750.8406442079605,753.9822368615503,757.1238295151402,760.26542216873,763.4070148223198,766.5486074759095,769.6902001294993,772.8317927830891,775.9733854366789,779.1149780902687,782.2565707438584,785.3981633974482,788.5397560510381,791.6813487046279,794.8229413582177,797.9645340118075,801.1061266653973,804.247719318987,807.3893119725768,810.5309046261666,813.6724972797564,816.8140899333462,819.955682586936,823.0972752405258,826.2388678941156,829.3804605477054,832.5220532012952,835.663645854885,838.8052385084748,841.9468311620645,845.0884238156543,848.2300164692441,851.3716091228339,854.5132017764238,857.6547944300136,860.7963870836033,863.9379797371931,867.0795723907829,870.2211650443727,873.3627576979625,876.5043503515523,879.645943005142,882.7875356587318,885.9291283123216,889.0707209659115,892.2123136195013,895.3539062730911,898.4954989266809,901.6370915802706,904.7786842338604,907.9202768874502,911.06186954104,914.2034621946298,917.3450548482195,920.4866475018093,923.6282401553992,926.769832808989,929.9114254625788,933.0530181161686,936.1946107697584,939.3362034233481,942.4777960769379,945.6193887305277,948.7609813841175,951.9025740377073,955.044166691297,958.185759344887,961.3273519984767,964.4689446520665,967.6105373056563,970.7521299592461,973.8937226128359,977.0353152664256,980.1769079200154,983.3185005736052,986.460093227195,989.6016858807849,992.7432785343747,995.8848711879644,999.0264638415542,1002.168056495144,1005.3096491487338,1008.4512418023236,1011.5928344559134,1014.7344271095031,1017.8760197630929,1021.0176124166827,1024.1592050702725,1027.3007977238624,1030.442390377452,1033.583983031042,1036.7255756846316,1039.8671683382215,1043.0087609918114,1046.150353645401,1049.291946298991,1052.4335389525806,1055.5751316061705,1058.7167242597602,1061.85831691335,1064.9999095669398,1068.1415022205297,1071.2830948741193,1074.4246875277092,1077.5662801812991,1080.7078728348888,1083.8494654884787,1086.9910581420684,1090.1326507956583,1093.274243449248,1096.4158361028378,1099.5574287564275,1102.6990214100174,1105.840614063607,1108.982206717197,1112.1237993707869,1115.2653920243765,1118.4069846779664,1121.548577331556,1124.690169985146,1127.8317626387357,1130.9733552923256,1134.1149479459152,1137.2565405995051,1140.398133253095,1143.5397259066847,1146.6813185602746,1149.8229112138642,1152.9645038674541,1156.1060965210438,1159.2476891746337,1162.3892818282234,1165.5308744818133,1168.672467135403,1171.8140597889928,1174.9556524425827,1178.0972450961724,1181.2388377497623,1184.380430403352,1187.5220230569419,1190.6636157105315,1193.8052083641214,1196.946801017711,1200.088393671301,1203.2299863248907,1206.3715789784806,1209.5131716320705,1212.6547642856601,1215.79635693925,1218.9379495928397,1222.0795422464296,1225.2211349000193,1228.3627275536091,1231.5043202071988,1234.6459128607887,1237.7875055143784,1240.9290981679683,1244.0706908215582,1247.2122834751478,1250.3538761287377,1253.4954687823274,1256.6370614359173,1259.778654089507,1262.9202467430969,1266.0618393966865,1269.2034320502764,1272.345024703866,1275.486617357456,1278.628210011046,1281.7698026646356,1284.9113953182255,1288.0529879718151,1291.194580625405,1294.3361732789947,1297.4777659325846,1300.6193585861743,1303.7609512397642,1306.902543893354]
diff --git a/ghc/tests/codeGen/should_run/cg043.hs b/ghc/tests/codeGen/should_run/cg043.hs
deleted file mode 100644 (file)
index 88de4c9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! Tickled a bug in core2stg 
--- !!! (CoreSyn.Coerce constructors were not peeled off
--- !!! when converting CoreSyn.App)
-
-module Main where
-
-getData :: String -> IO ()
-getData filename = case leng filename of {0 -> return ()}
-leng :: String -> Int
-leng [] = 0 --case ls of {[] -> 0 ; (_:xs) -> 1 + leng xs }
-leng ls = leng ls
-
-f [] [] = []
-f xs ys = f xs ys
-
-main =
-     return ()  >>= \ _ ->
-     case f [] [] of { [] -> getData [] }
diff --git a/ghc/tests/codeGen/should_run/cg044.hs b/ghc/tests/codeGen/should_run/cg044.hs
deleted file mode 100644 (file)
index aace857..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
--- !!! Testing IEEE Float and Double extremity predicates.
-module Main(main) where
-
-import Char
-import ST
-import MutableArray
-
-main :: IO ()
-main = do
- sequence_ (map putStrLn double_tests)
- sequence_ (map putStrLn float_tests)
-  where
-   double_tests = run_tests double_numbers
-   float_tests  = run_tests float_numbers  
-
-   run_tests nums =
-    map ($nums)
-        [ denorm
-        , pos_inf
-        , neg_inf
-        , nan
-        , neg_zero
-        , pos_zero
-        ]
-
--------------
-double_numbers :: [Double]
-double_numbers =
-      [ 0
-      , encodeFloat 0 0     -- 0 using encodeFloat method
-      , mkDouble (map chr [0,0,0,0,0,0, 0xf0, 0x7f])  -- +inf
-      , encodeFloat 1 2047  -- +Inf 
-      , encodeFloat 1 2048
-      , encodeFloat 1  2047              -- signalling NaN
-      , encodeFloat 0xf000000000000 2047  -- quiet NaN
-      , 0/(0::Double)
-        -- misc
-      , 1.82173691287639817263897126389712638972163e-300
-      , 1.82173691287639817263897126389712638972163e+300
-      , 4.9406564558412465e-324  -- smallest possible denorm number 
-                                -- (as reported by enquire running
-                                --  on a i686-pc-linux.)
-      , 2.2250738585072014e-308
-      , 0.11
-      , 0.100
-      , -3.4
-        -- smallest 
-      , let (l, _) = floatRange x
-            x = encodeFloat 1 (l-1)
-       in x
-        -- largest
-      , let (_, u) = floatRange x
-           d = floatDigits x
-           x = encodeFloat (floatRadix x ^ d - 1) (u - d)
-       in x
-      ]
-
-float_numbers :: [Float]
-float_numbers =
-      [ 0
-      , encodeFloat 0 0     -- 0 using encodeFloat method
-      , encodeFloat 1 255  -- +Inf 
-      , encodeFloat 1 256
-      , encodeFloat 11 255       -- signalling NaN
-      , encodeFloat 0xf00000 255  -- quiet NaN
-      , 0/(0::Float)
-        -- misc
-      , 1.82173691287639817263897126389712638972163e-300
-      , 1.82173691287639817263897126389712638972163e+300
-      , 1.40129846e-45
-      , 1.17549435e-38
-      , 2.98023259e-08
-      , 0.11
-      , 0.100
-      , -3.4
-        -- smallest 
-      , let (l, _) = floatRange x
-            x = encodeFloat 1 (l-1)
-       in x
-        -- largest
-      , let (_, u) = floatRange x
-           d = floatDigits x
-           x = encodeFloat (floatRadix x ^ d - 1) (u - d)
-       in x
-      ]
-
--------------
-
-denorm :: RealFloat a => [a] -> String
-denorm numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("Denormalised numbers: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (isDenormalized) "isDenormalised"
-
-pos_inf :: RealFloat a => [a] -> String
-pos_inf numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("Positive Infinity: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (isInfinite) "isInfinite"
-
-neg_inf :: RealFloat a => [a] -> String
-neg_inf numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("Negative Infinity: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (\ x -> isInfinite x && x < 0) "isNegInfinite"
-
-nan :: RealFloat a => [a] -> String
-nan numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("NaN: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (isNaN) "isNaN"
-
-pos_zero :: RealFloat a => [a] -> String
-pos_zero numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("Positive zero: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (==0) "isPosZero"
-
-neg_zero :: RealFloat a => [a] -> String
-neg_zero numbers =
-  unlines
-     ( ""
-     : "*********************************"
-     : ("Negative zero: " ++ doubleOrFloat numbers)
-     : ""
-     : map showPerform numbers)
- where
-   showPerform = showAndPerform (isNegativeZero) "isNegativeZero"
-
--- what a hack.
-doubleOrFloat :: RealFloat a => [a] -> String
-doubleOrFloat ls
- | (floatDigits atType) == (floatDigits (0::Double)) = "Double"
- | (floatDigits atType) == (floatDigits (0::Float))  = "Float"
- | otherwise = "unknown RealFloat type"
- where
-   atType = undefined `asTypeOf` (head ls)
-
--- make a double from a list of 8 bytes
--- (caller deals with byte ordering.)
-mkDouble :: [Char] -> Double
-mkDouble ls = 
- runST ( do
-   arr <- newCharArray (0,7)
-   sequence (zipWith (writeCharArray arr) [(0::Int)..] (take 8 ls))
-   readDoubleArray arr 0
- )
-
-showAndPerform :: (Show a, Show b)
-              => (a -> b)
-              -> String
-              -> a
-              -> String
-showAndPerform fun name_fun val =
-  name_fun ++ ' ':show val ++ " = " ++ show (fun val)
-
diff --git a/ghc/tests/codeGen/should_run/cg044.stdout b/ghc/tests/codeGen/should_run/cg044.stdout
deleted file mode 100644 (file)
index 0eb505e..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-
-*********************************
-Denormalised numbers: Double
-
-isDenormalised 0.0 = False
-isDenormalised 0.0 = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised NaN = False
-isDenormalised 1.821736912876398e-300 = False
-isDenormalised 1.8217369128763983e300 = False
-isDenormalised 5.0e-324 = True
-isDenormalised 2.2250738585072014e-308 = False
-isDenormalised 0.11 = False
-isDenormalised 0.1 = False
-isDenormalised -3.4 = False
-isDenormalised 2.2250738585072014e-308 = False
-isDenormalised 1.7976931348623157e308 = False
-
-
-*********************************
-Positive Infinity: Double
-
-isInfinite 0.0 = False
-isInfinite 0.0 = False
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite NaN = False
-isInfinite 1.821736912876398e-300 = False
-isInfinite 1.8217369128763983e300 = False
-isInfinite 5.0e-324 = False
-isInfinite 2.2250738585072014e-308 = False
-isInfinite 0.11 = False
-isInfinite 0.1 = False
-isInfinite -3.4 = False
-isInfinite 2.2250738585072014e-308 = False
-isInfinite 1.7976931348623157e308 = False
-
-
-*********************************
-Negative Infinity: Double
-
-isNegInfinite 0.0 = False
-isNegInfinite 0.0 = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite NaN = False
-isNegInfinite 1.821736912876398e-300 = False
-isNegInfinite 1.8217369128763983e300 = False
-isNegInfinite 5.0e-324 = False
-isNegInfinite 2.2250738585072014e-308 = False
-isNegInfinite 0.11 = False
-isNegInfinite 0.1 = False
-isNegInfinite -3.4 = False
-isNegInfinite 2.2250738585072014e-308 = False
-isNegInfinite 1.7976931348623157e308 = False
-
-
-*********************************
-NaN: Double
-
-isNaN 0.0 = False
-isNaN 0.0 = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN NaN = True
-isNaN 1.821736912876398e-300 = False
-isNaN 1.8217369128763983e300 = False
-isNaN 5.0e-324 = False
-isNaN 2.2250738585072014e-308 = False
-isNaN 0.11 = False
-isNaN 0.1 = False
-isNaN -3.4 = False
-isNaN 2.2250738585072014e-308 = False
-isNaN 1.7976931348623157e308 = False
-
-
-*********************************
-Negative zero: Double
-
-isNegativeZero 0.0 = False
-isNegativeZero 0.0 = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero NaN = False
-isNegativeZero 1.821736912876398e-300 = False
-isNegativeZero 1.8217369128763983e300 = False
-isNegativeZero 5.0e-324 = False
-isNegativeZero 2.2250738585072014e-308 = False
-isNegativeZero 0.11 = False
-isNegativeZero 0.1 = False
-isNegativeZero -3.4 = False
-isNegativeZero 2.2250738585072014e-308 = False
-isNegativeZero 1.7976931348623157e308 = False
-
-
-*********************************
-Positive zero: Double
-
-isPosZero 0.0 = True
-isPosZero 0.0 = True
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero NaN = False
-isPosZero 1.821736912876398e-300 = False
-isPosZero 1.8217369128763983e300 = False
-isPosZero 5.0e-324 = False
-isPosZero 2.2250738585072014e-308 = False
-isPosZero 0.11 = False
-isPosZero 0.1 = False
-isPosZero -3.4 = False
-isPosZero 2.2250738585072014e-308 = False
-isPosZero 1.7976931348623157e308 = False
-
-
-*********************************
-Denormalised numbers: Float
-
-isDenormalised 0.0 = False
-isDenormalised 0.0 = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised Infinity = False
-isDenormalised NaN = False
-isDenormalised 0.0 = False
-isDenormalised Infinity = False
-isDenormalised 1.0e-45 = True
-isDenormalised 1.1754944e-38 = False
-isDenormalised 2.9802326e-8 = False
-isDenormalised 0.11 = False
-isDenormalised 0.1 = False
-isDenormalised -3.4 = False
-isDenormalised 1.1754944e-38 = False
-isDenormalised 3.4028235e38 = False
-
-
-*********************************
-Positive Infinity: Float
-
-isInfinite 0.0 = False
-isInfinite 0.0 = False
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite Infinity = True
-isInfinite NaN = False
-isInfinite 0.0 = False
-isInfinite Infinity = True
-isInfinite 1.0e-45 = False
-isInfinite 1.1754944e-38 = False
-isInfinite 2.9802326e-8 = False
-isInfinite 0.11 = False
-isInfinite 0.1 = False
-isInfinite -3.4 = False
-isInfinite 1.1754944e-38 = False
-isInfinite 3.4028235e38 = False
-
-
-*********************************
-Negative Infinity: Float
-
-isNegInfinite 0.0 = False
-isNegInfinite 0.0 = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite Infinity = False
-isNegInfinite NaN = False
-isNegInfinite 0.0 = False
-isNegInfinite Infinity = False
-isNegInfinite 1.0e-45 = False
-isNegInfinite 1.1754944e-38 = False
-isNegInfinite 2.9802326e-8 = False
-isNegInfinite 0.11 = False
-isNegInfinite 0.1 = False
-isNegInfinite -3.4 = False
-isNegInfinite 1.1754944e-38 = False
-isNegInfinite 3.4028235e38 = False
-
-
-*********************************
-NaN: Float
-
-isNaN 0.0 = False
-isNaN 0.0 = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN Infinity = False
-isNaN NaN = True
-isNaN 0.0 = False
-isNaN Infinity = False
-isNaN 1.0e-45 = False
-isNaN 1.1754944e-38 = False
-isNaN 2.9802326e-8 = False
-isNaN 0.11 = False
-isNaN 0.1 = False
-isNaN -3.4 = False
-isNaN 1.1754944e-38 = False
-isNaN 3.4028235e38 = False
-
-
-*********************************
-Negative zero: Float
-
-isNegativeZero 0.0 = False
-isNegativeZero 0.0 = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero Infinity = False
-isNegativeZero NaN = False
-isNegativeZero 0.0 = False
-isNegativeZero Infinity = False
-isNegativeZero 1.0e-45 = False
-isNegativeZero 1.1754944e-38 = False
-isNegativeZero 2.9802326e-8 = False
-isNegativeZero 0.11 = False
-isNegativeZero 0.1 = False
-isNegativeZero -3.4 = False
-isNegativeZero 1.1754944e-38 = False
-isNegativeZero 3.4028235e38 = False
-
-
-*********************************
-Positive zero: Float
-
-isPosZero 0.0 = True
-isPosZero 0.0 = True
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero Infinity = False
-isPosZero NaN = False
-isPosZero 0.0 = True
-isPosZero Infinity = False
-isPosZero 1.0e-45 = False
-isPosZero 1.1754944e-38 = False
-isPosZero 2.9802326e-8 = False
-isPosZero 0.11 = False
-isPosZero 0.1 = False
-isPosZero -3.4 = False
-isPosZero 1.1754944e-38 = False
-isPosZero 3.4028235e38 = False
-
diff --git a/ghc/tests/codeGen/should_run/cg045.hs b/ghc/tests/codeGen/should_run/cg045.hs
deleted file mode 100644 (file)
index 431a7eb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main (main,myseq) where
-
-import PrelGHC
-import PrelErr
-
-main :: IO ()
-main = seq (error "hello world!" :: Int) (return ())
-
-myseq :: a -> b -> b
-myseq  x y = case (seq#  x) of { 0# -> seqError; _ -> y }
diff --git a/ghc/tests/codeGen/should_run/cg045.stderr b/ghc/tests/codeGen/should_run/cg045.stderr
deleted file mode 100644 (file)
index 479570d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: hello world!
diff --git a/ghc/tests/codeGen/should_run/cg046.hs b/ghc/tests/codeGen/should_run/cg046.hs
deleted file mode 100644 (file)
index 9c9e882..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module Main where
-
-import IO
-
--- !!! CAF space leaks
-
-main = lots_of_xs 10000
-
-lots_of_xs 0 = return ()
-lots_of_xs n = putChar 'x' >> lots_of_xs (n-1)
diff --git a/ghc/tests/codeGen/should_run/cg046.stdout b/ghc/tests/codeGen/should_run/cg046.stdout
deleted file mode 100644 (file)
index f2776bd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg047.hs b/ghc/tests/codeGen/should_run/cg047.hs
deleted file mode 100644 (file)
index 275bdf2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module Main where
-
---             GHC 4.04
--- I've been having problems getting GHC to compile some code I'm working
--- on with optimisation (-O) turned on.  Compilation is fine without -O
--- specified.  Through a process of elimination I've managed to reproduce
--- the problemin the following (much simpler) piece of code: 
-
-import List
-
-test es = 
-  concat (groupBy eq (zip [0..(length es) - 1] es))
-  where
-  eq a b = (fst a) == (fst b)
-
-main = putStr (show (test [1,2,3,4]))
-
-
diff --git a/ghc/tests/codeGen/should_run/cg047.stdout b/ghc/tests/codeGen/should_run/cg047.stdout
deleted file mode 100644 (file)
index 732d4fe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[(0,1),(1,2),(2,3),(3,4)]
\ No newline at end of file
diff --git a/ghc/tests/codeGen/should_run/cg048.hs b/ghc/tests/codeGen/should_run/cg048.hs
deleted file mode 100644 (file)
index 30f0b3e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
--- The new register allocator in 4.08 had a bug wherein
--- flow edges away from an insn which does a jump through
--- a switch table were not being added to the flow graph,
--- which causes computation of live ranges and thus register
--- assignment to be wrong in the alternatives and default.
--- This was fixed properly in the head branch (pre 4.09)
--- and avoided in 4.08.1 by disabling jump table generation
--- in the NCG -- it generates trees of ifs instead.
-
-module Main ( main ) where
-
-main = print (map f [1 .. 7])
-
-
-
-{-# NOINLINE f #-}
-f :: Int -> Bool
-f 7 = False
-f 1 = False
-f 4 = False
-f 6 = False
-f 5 = False
-f x = if x * 10 == 20 then True else False
diff --git a/ghc/tests/codeGen/should_run/cg048.stdout b/ghc/tests/codeGen/should_run/cg048.stdout
deleted file mode 100644 (file)
index ff59649..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[False,True,False,False,False,False,False]
diff --git a/ghc/tests/codeGen/should_run/cg049.hs b/ghc/tests/codeGen/should_run/cg049.hs
deleted file mode 100644 (file)
index d4b6a77..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
--- !! Data constructors with strict fields
--- This test should use -funbox-strict-fields
-
-module Main ( main ) where
-
-main = print (g (f t))
-
-t = MkT 1 2 (3,4) (MkS 5 6)
-
-g (MkT x _ _ _) = x
-
-data T = MkT Int !Int !(Int,Int) !(S Int)
-
-data S a = MkS a a 
-
-
-{-# NOINLINE f #-}
-f :: T -> T    -- Takes apart the thing and puts it
-               -- back together differently
-f (MkT x y (a,b) (MkS p q)) = MkT a b (p,q) (MkS x y)
-
-
diff --git a/ghc/tests/codeGen/should_run/cg049.stdout b/ghc/tests/codeGen/should_run/cg049.stdout
deleted file mode 100644 (file)
index 00750ed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/ghc/tests/codeGen/should_run/cg050.hs b/ghc/tests/codeGen/should_run/cg050.hs
deleted file mode 100644 (file)
index e505938..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fvia-C #-}
-
--- test that the code generator can correctly compile code with
--- non-ASCII characters in it. (5.00 couldn't).
-
-module Main (main, héllö_wòrld) where
-
-main = héllö_wòrld
-
-héllö_wòrld = print "héllö_wòrld\n"
diff --git a/ghc/tests/codeGen/should_run/cg050.stdout b/ghc/tests/codeGen/should_run/cg050.stdout
deleted file mode 100644 (file)
index dd9562d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"h\233ll\246_w\242rld\n"
diff --git a/ghc/tests/concurrent/Makefile b/ghc/tests/concurrent/Makefile
deleted file mode 100644 (file)
index 2d0e394..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 1998/06/04 16:15:10 simonm Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_run
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/concurrent/should_run/Makefile b/ghc/tests/concurrent/should_run/Makefile
deleted file mode 100644 (file)
index 4d7c4ce..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.10 2001/02/13 15:12:42 rrt Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-# conc020 *should* work
-OMITTED_RUNTESTS = conc020.run conc021.run
-endif
-
-include $(TOP)/mk/should_run.mk
-
-conc007_RUNTEST_OPTS = +RTS -H128M -RTS
-conc009_RUNTEST_OPTS = -x 1
-conc021_RUNTEST_OPTS = -x 250 -o2 conc021.stderr-mingw
-
-SRC_HC_OPTS += -dcore-lint -package concurrent -fglasgow-exts
-
-CLEAN_FILES += PrelMain.hi
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/concurrent/should_run/conc001.hs b/ghc/tests/concurrent/should_run/conc001.hs
deleted file mode 100644 (file)
index 0468727..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module Main where
-
-import Concurrent
-
--- two processes, one MVar communication.
-
-main = do
-  s <- newEmptyMVar
-  let 
-    write = do
-       putMVar s "hello world\n"
-
-  forkIO write
-  str <- takeMVar s
-  putStr str
diff --git a/ghc/tests/concurrent/should_run/conc001.stdout b/ghc/tests/concurrent/should_run/conc001.stdout
deleted file mode 100644 (file)
index 3b18e51..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hello world
diff --git a/ghc/tests/concurrent/should_run/conc002.hs b/ghc/tests/concurrent/should_run/conc002.hs
deleted file mode 100644 (file)
index 7008802..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module Main where
-
-import Concurrent
-
-main = do
-  c <- newChan
-  let  writer = writeList2Chan c "Hello World\n"
-  forkIO writer
-  let  reader = do  char <- readChan c
-                   if (char == '\n') 
-                       then return () 
-                       else do putChar char; reader    
-  reader
-
diff --git a/ghc/tests/concurrent/should_run/conc002.stdout b/ghc/tests/concurrent/should_run/conc002.stdout
deleted file mode 100644 (file)
index 5e1c309..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc003.hs b/ghc/tests/concurrent/should_run/conc003.hs
deleted file mode 100644 (file)
index dcd7222..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-module Main where
-
-import Concurrent
-
--- simple handshaking using two MVars, 
--- must context switch twice for each character.
-
-main = do
-  ready <- newEmptyMVar
-  datum <- newEmptyMVar
-  let 
-    reader = do
-       putMVar ready ()
-       char <- takeMVar datum
-       if (char == '\n') 
-               then return () 
-               else do putChar char; reader
-
-    writer "" = do
-       takeMVar ready
-       putMVar datum '\n'
-    writer (c:cs) = do
-       takeMVar ready
-       putMVar datum c
-       writer cs
-
-  forkIO reader
-  writer "Hello World"
diff --git a/ghc/tests/concurrent/should_run/conc003.stdout b/ghc/tests/concurrent/should_run/conc003.stdout
deleted file mode 100644 (file)
index 5e1c309..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc004.hs b/ghc/tests/concurrent/should_run/conc004.hs
deleted file mode 100644 (file)
index bffa3cc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-module Main where
-
--- Test thread creation.
--- (from: Einar Wolfgang Karlsen <ewk@Informatik.Uni-Bremen.DE>)
-
-import Concurrent
-
-main :: IO ()
-main = do
-   mvar <- newEmptyMVar
-
-   let 
-       spawner :: (IO () -> IO ThreadId) -> Int -> IO ()
-       spawner c 0 = putMVar mvar ()
-       spawner c n = do { c (spawner c (n-1)); return ()}
-
-   spawner forkIO 10000000
-   takeMVar mvar
-   putStr "done"
diff --git a/ghc/tests/concurrent/should_run/conc004.stdout b/ghc/tests/concurrent/should_run/conc004.stdout
deleted file mode 100644 (file)
index 348ebd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-done
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc005.hs b/ghc/tests/concurrent/should_run/conc005.hs
deleted file mode 100644 (file)
index ba7d2ad..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module Main where
-
-import Concurrent
-
--- same as conc004, but using the ChannelVar abstraction
-
-main = do
-  v <- newCVar
-  done <- newEmptyMVar
-  let
-       reader = do
-           c <- readCVar v
-           if (c == '\n') 
-               then putMVar done ()
-               else do putChar c; reader
-
-       writer []     = do writeCVar v '\n'; return ()
-       writer (c:cs) = do writeCVar v c;    writer cs
-
-  forkIO reader
-  writer "Hello World"
-  takeMVar done
-  
diff --git a/ghc/tests/concurrent/should_run/conc005.stdout b/ghc/tests/concurrent/should_run/conc005.stdout
deleted file mode 100644 (file)
index 5e1c309..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello World
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc006.hs b/ghc/tests/concurrent/should_run/conc006.hs
deleted file mode 100644 (file)
index 63008e1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module Main where
-
-import Concurrent
-
--- This test hopefully exercises the black hole code.  The main thread
--- forks off another thread and starts on a large computation.  
--- The child thread attempts to get the result of the same large
--- computation (and should get blocked doing so, because the parent
--- won't have evaluated it yet).  When the result is available, the
--- child passes it back to the parent who prints it out.
-
-test = sum [1..10000]
-
-main = do
-  x <- newEmptyMVar
-  forkIO (if test > 0 
-               then putMVar x test
-               else error "proc"
-         )
-  if test > 0  -- evaluate test
-       then do result <- takeMVar x
-               print result
-       else error "main"
diff --git a/ghc/tests/concurrent/should_run/conc006.stdout b/ghc/tests/concurrent/should_run/conc006.stdout
deleted file mode 100644 (file)
index b9d5693..0000000
+++ /dev/null
@@ -1 +0,0 @@
-50005000
diff --git a/ghc/tests/concurrent/should_run/conc007.hs b/ghc/tests/concurrent/should_run/conc007.hs
deleted file mode 100644 (file)
index 77421ca..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import Concurrent
-import Exception
-import IOExts
-
-choose :: a -> a -> IO a
-choose a b = do
-   ready <- newMVar ()
-   answer <- newEmptyMVar
-   a_id <- myForkIO (a `seq` takeMVar ready >> putMVar answer a)
-   b_id <- myForkIO (b `seq` takeMVar ready >> putMVar answer b)
-   it <- takeMVar answer
-   killThread a_id
-   killThread b_id
-   return it
-
--- We need to catch the exception raised by killThread and ignore it.
--- Otherwise the default handler will exit the program when this
--- exception is raised in any thread.
-
-myForkIO :: IO () -> IO ThreadId
-myForkIO io = forkIO (Exception.catch io (\e -> return ()))
-
-main = do
-   let big = sum [1..]
-       small = sum [1..42]
-   test1 <- choose big small
-   test2 <- choose small big
-   print (test1,test2)
diff --git a/ghc/tests/concurrent/should_run/conc007.stdout b/ghc/tests/concurrent/should_run/conc007.stdout
deleted file mode 100644 (file)
index ee81b5e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(903,903)
diff --git a/ghc/tests/concurrent/should_run/conc008.hs b/ghc/tests/concurrent/should_run/conc008.hs
deleted file mode 100644 (file)
index abbdf18..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import Concurrent
-import Exception
-
--- Send ourselves a KillThread signal, catch it and recover.
-
-main = do 
-  id <- myThreadId
-  Exception.catch (killThread id) (\e -> putStr (show e))
diff --git a/ghc/tests/concurrent/should_run/conc008.stdout b/ghc/tests/concurrent/should_run/conc008.stdout
deleted file mode 100644 (file)
index faed5b8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-thread killed
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc009.hs b/ghc/tests/concurrent/should_run/conc009.hs
deleted file mode 100644 (file)
index ee8017f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import Concurrent
-import Exception
-
-main = do 
-  id <- myThreadId
-  throwTo id (ErrorCall "hello")
diff --git a/ghc/tests/concurrent/should_run/conc009.stderr b/ghc/tests/concurrent/should_run/conc009.stderr
deleted file mode 100644 (file)
index 29c7abc..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: hello
diff --git a/ghc/tests/concurrent/should_run/conc010.hs b/ghc/tests/concurrent/should_run/conc010.hs
deleted file mode 100644 (file)
index bb97b96..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import Concurrent
-import Exception
-
--- Raise an exception in another thread.  We need a lot of synchronisation here:
-
---   - an MVar for the second thread to block on which it waits for the
---     signal (block)
-
---   - an MVar to signal the main thread that the second thread is ready to
---     accept the signal (ready)
-
---   - an MVar to signal the main thread that the second thread has received
---     the signal (ready2).  If we don't have this MVar, then the main
---     thread could exit before the second thread has time to print
---     the result.
-
-main = do 
-  block  <- newEmptyMVar
-  ready  <- newEmptyMVar
-  ready2 <- newEmptyMVar
-  id <- forkIO (Exception.catch (putMVar ready () >> takeMVar block) 
-               (\e -> putStr (show e) >> putMVar ready2 ()))
-  takeMVar ready
-  throwTo id (ErrorCall "hello")
-  takeMVar ready2
diff --git a/ghc/tests/concurrent/should_run/conc010.stdout b/ghc/tests/concurrent/should_run/conc010.stdout
deleted file mode 100644 (file)
index b6fc4c6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hello
\ No newline at end of file
diff --git a/ghc/tests/concurrent/should_run/conc012.hs b/ghc/tests/concurrent/should_run/conc012.hs
deleted file mode 100644 (file)
index e94d91b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module Main where
-
-import Concurrent
-import Exception
-import GlaExts
-
-data Result = Died Exception | Finished
-
--- Test stack overflow catching.  Should print "Died: stack overflow".
-
-stackoverflow :: Int -> Int
-stackoverflow 0 = 1
-stackoverflow n = n + stackoverflow n
-
-main = do
-  let x = stackoverflow 1
-  result <- newEmptyMVar 
-  forkIO (Exception.catch (x `seq` putMVar result Finished) 
-                    (\e -> putMVar result (Died e)))
-  res <- takeMVar result
-  case res of
-       Died e -> putStr ("Died: " ++ show e ++ "\n")
-       Finished -> putStr "Ok.\n"
diff --git a/ghc/tests/concurrent/should_run/conc012.stdout b/ghc/tests/concurrent/should_run/conc012.stdout
deleted file mode 100644 (file)
index 12e0c90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Died: stack overflow
diff --git a/ghc/tests/concurrent/should_run/conc013.hs b/ghc/tests/concurrent/should_run/conc013.hs
deleted file mode 100644 (file)
index 78c07a9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module Main where
-
--- !!! test Eq and Ord instances over thread Ids.
-
-import Concurrent
-
-main = do
-  tso1 <- forkIO (return ())
-  tso2 <- forkIO (return ())
-  print [compare tso1 tso2, compare tso1 tso1, compare tso2 tso1]
diff --git a/ghc/tests/concurrent/should_run/conc013.stdout b/ghc/tests/concurrent/should_run/conc013.stdout
deleted file mode 100644 (file)
index 98ab9c1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[LT,EQ,GT]
diff --git a/ghc/tests/concurrent/should_run/conc014.hs b/ghc/tests/concurrent/should_run/conc014.hs
deleted file mode 100644 (file)
index e7b38d6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import Concurrent
-import Exception
-
--- Test blocking of async exceptions in an exception handler.
--- The exception raised in the main thread should not be delivered
--- until the first exception handler finishes.
-main = do
-  main_thread <- myThreadId
-  m <- newEmptyMVar
-  forkIO (do { takeMVar m;  throwTo main_thread (ErrorCall "foo") })
-  (error "wibble")
-       `Exception.catch` (\e -> do putMVar m ()
-                                   sum [1..10000] `seq` putStrLn "done.")
-  (threadDelay 500000)
-       `Exception.catch` (\e -> putStrLn ("caught: " ++ show e))
-
diff --git a/ghc/tests/concurrent/should_run/conc014.stdout b/ghc/tests/concurrent/should_run/conc014.stdout
deleted file mode 100644 (file)
index 807edef..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-done.
-caught: foo
diff --git a/ghc/tests/concurrent/should_run/conc015.hs b/ghc/tests/concurrent/should_run/conc015.hs
deleted file mode 100644 (file)
index 07b2fcd..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-import Concurrent
-import Exception
-
--- test blocking & unblocking of async exceptions.
-
--- the first exception "foo" should be caught by the "caught1" handler,
--- since async exceptions are blocked outside this handler.
-
--- the second exception "bar" should be caught by the outer "caught2" handler,
--- (i.e. this tests that async exceptions are properly unblocked after
--- being blocked).
-
-main = do
-  main_thread <- myThreadId
-  m <- newEmptyMVar
-  m2 <- newEmptyMVar
-  forkIO (do takeMVar m
-            throwTo main_thread (ErrorCall "foo")
-            throwTo main_thread (ErrorCall "bar") 
-            putMVar m2 ()
-        )
-  ( do
-    block (do
-       putMVar m ()
-       sum [1..10000] `seq` -- give 'foo' a chance to be raised
-         (unblock (threadDelay 500000))
-               `Exception.catch` (\e -> putStrLn ("caught1: " ++ show e))
-     )
-    takeMVar m2
-   )
-    `Exception.catch`
-    (\e -> putStrLn ("caught2: " ++ show e))
diff --git a/ghc/tests/concurrent/should_run/conc015.stdout b/ghc/tests/concurrent/should_run/conc015.stdout
deleted file mode 100644 (file)
index f04a8f7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-caught1: foo
-caught2: bar
diff --git a/ghc/tests/concurrent/should_run/conc016.hs b/ghc/tests/concurrent/should_run/conc016.hs
deleted file mode 100644 (file)
index 3990d0c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-import Concurrent
-import Exception
-
--- check that we can still kill a thread that is blocked on
--- delivering an exception to us.
-main = do
-  main_thread <- myThreadId
-  m <- newEmptyMVar
-  sub_thread <- forkIO (do
-                        takeMVar m
-                        throwTo main_thread (ErrorCall "foo")
-                       )
-  block (do
-    putMVar m ()
-    sum [1..10000] `seq` -- to be sure the other thread is now blocked
-      killThread sub_thread
-   )
-  putStrLn "ok"
diff --git a/ghc/tests/concurrent/should_run/conc016.stdout b/ghc/tests/concurrent/should_run/conc016.stdout
deleted file mode 100644 (file)
index 9766475..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ok
diff --git a/ghc/tests/concurrent/should_run/conc017.hs b/ghc/tests/concurrent/should_run/conc017.hs
deleted file mode 100644 (file)
index 4dbda4e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-import Concurrent
-import Exception
-
--- check that async exceptions are restored to their previous
--- state after an exception is raised and handled.
-
-main = do
-  main_thread <- myThreadId
-  m1 <- newEmptyMVar
-  m2 <- newEmptyMVar
-  m3 <- newEmptyMVar
-  forkIO (do 
-            takeMVar m1
-            throwTo main_thread (ErrorCall "foo")
-            takeMVar m2
-            throwTo main_thread (ErrorCall "bar")
-            putMVar m3 ()
-        )
-  (do 
-    block (do
-       (do putMVar m1 () 
-           unblock (
-               -- unblocked, "foo" delivered to "caught1"
-              threadDelay 100000
-            )
-        ) `Exception.catch` (\e -> putStrLn ("caught1: " ++ show e))
-       putMVar m2 ()
-       -- blocked here, "bar" can't be delivered
-       (sum [1..10000] `seq` return ())
-         `Exception.catch` (\e -> putStrLn ("caught2: " ++ show e))
-     )
-    -- unblocked here, "bar" delivered to "caught3"
-    takeMVar m3
-   ) 
-   `Exception.catch` (\e -> putStrLn ("caught3: " ++ show e))
diff --git a/ghc/tests/concurrent/should_run/conc017.stdout b/ghc/tests/concurrent/should_run/conc017.stdout
deleted file mode 100644 (file)
index 7fca279..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-caught1: foo
-caught3: bar
diff --git a/ghc/tests/concurrent/should_run/conc018.hs b/ghc/tests/concurrent/should_run/conc018.hs
deleted file mode 100644 (file)
index 34894e1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import Concurrent
-import Exception
-
--- test that putMVar blocks on a full MVar rather than raising an
--- exception.
-
-main = do
-  t <- forkIO (
-           Exception.catch (do
-               m <- newMVar ()
-               putMVar m ()
-            )
-            (\e -> print e)
-          )
-  threadDelay 500000
-  killThread t
diff --git a/ghc/tests/concurrent/should_run/conc018.stdout b/ghc/tests/concurrent/should_run/conc018.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/concurrent/should_run/conc019.hs b/ghc/tests/concurrent/should_run/conc019.hs
deleted file mode 100644 (file)
index 51f640e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-import IO
-import Concurrent
-import Exception
-
-main = do
-  forkIO (Exception.catch (do { m <- newEmptyMVar; takeMVar m })
-                         (\e -> putStrLn ("caught: " ++ show e)))
-  let x = sum [1..10000]
-  x `seq` print x
diff --git a/ghc/tests/concurrent/should_run/conc019.stdout b/ghc/tests/concurrent/should_run/conc019.stdout
deleted file mode 100644 (file)
index afc24a6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-caught: thread blocked indefinitely
-50005000
diff --git a/ghc/tests/concurrent/should_run/conc020.hs b/ghc/tests/concurrent/should_run/conc020.hs
deleted file mode 100644 (file)
index 29e3418..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-import Concurrent
-import Exception
-
-main = do
-  m <- newEmptyMVar
-  t <- forkIO (block $ takeMVar m)
-  threadDelay 100000
-  throwTo t (ErrorCall "I'm Interruptible")
-  threadDelay 100000
-  putMVar m ()  -- to avoid t being garbage collected
diff --git a/ghc/tests/concurrent/should_run/conc020.stderr b/ghc/tests/concurrent/should_run/conc020.stderr
deleted file mode 100644 (file)
index be1a6af..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Fail: I'm Interruptible
diff --git a/ghc/tests/concurrent/should_run/conc021.hs b/ghc/tests/concurrent/should_run/conc021.hs
deleted file mode 100644 (file)
index cd41dd6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module PrelMain where
-
--- !!! test for uncaught exception
-
-mainIO = error "wurble"
diff --git a/ghc/tests/concurrent/should_run/conc021.stderr b/ghc/tests/concurrent/should_run/conc021.stderr
deleted file mode 100644 (file)
index 959d0d8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-conc021.bin: main thread exited (uncaught exception)
diff --git a/ghc/tests/concurrent/should_run/conc021.stderr-mingw b/ghc/tests/concurrent/should_run/conc021.stderr-mingw
deleted file mode 100644 (file)
index 49ee2ae..0000000
+++ /dev/null
@@ -1 +0,0 @@
-C:\TEMP\fptools-head\fptools\ghc\tests\concurrent\should_run\conc021.bin: main thread exited (uncaught exception)
diff --git a/ghc/tests/concurrent/should_run/conc022.hs b/ghc/tests/concurrent/should_run/conc022.hs
deleted file mode 100644 (file)
index 8bbeaf6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
--- !!! test tryTakeMVar
-
-import Concurrent
-import Exception
-import IO
-
-import PrelIOBase
-import PrelConc
-import PrelGHC
-
-main = do
-  m <- newEmptyMVar
-  r <- timeout 5 (tryTakeMVar m) (putStrLn "timed out!" >> return Nothing)
-  print (r :: Maybe Int)
-
-
-timeout
-   :: Int      -- secs
-   -> IO a     -- action to run
-   -> IO a     -- action to run on timeout
-   -> IO a
-
-timeout secs action on_timeout 
-  = do
-    threadid <- myThreadId
-    timeout <- forkIOIgnoreExceptions (
-                           do threadDelay (secs * 1000000)
-                              throwTo threadid (ErrorCall "__timeout")
-                         )
-    ( do result <- action
-        killThread timeout
-        return result
-      ) 
-      `Exception.catch`
-      ( \exception -> case exception of
-                      ErrorCall "__timeout" -> on_timeout                     
-                      _other                -> do
-                                               killThread timeout
-                                               throw exception )
-
-forkIOIgnoreExceptions :: IO () -> IO ThreadId
-forkIOIgnoreExceptions action = IO $ \ s -> 
-   case (fork# action_plus s) of (# s1, id #) -> (# s1, ThreadId id #)
- where
-  action_plus = Exception.catch action (\_ -> return ())
-
diff --git a/ghc/tests/concurrent/should_run/conc022.stdout b/ghc/tests/concurrent/should_run/conc022.stdout
deleted file mode 100644 (file)
index 4a584e4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Nothing
diff --git a/ghc/tests/concurrent/should_run/conc023.hs b/ghc/tests/concurrent/should_run/conc023.hs
deleted file mode 100644 (file)
index d52bac2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
--- !!! test threadDelay, Random, and QSemN.
-
--- start a large number (n) of threads each of which will wait for a
--- random delay between 0 and m seconds.  We use a semaphore to wait
--- for all the threads to finish.
-
-import Random
-import Concurrent
-import Exception
-
-n = 5000  -- no. of threads
-m = 3000  -- maximum delay
-
-main = do
-   s <- newQSemN n
-   (is :: [Int]) <- sequence (take n (repeat (getStdRandom (randomR (1,m)))))
-   mapM (fork_sleep s) is
-   waitQSemN s n
-   where
-       fork_sleep s i = forkIO (do waitQSemN s 1
-                                   threadDelay (i*1000)
-                                   signalQSemN s 1)
diff --git a/ghc/tests/concurrent/should_run/conc024.hs b/ghc/tests/concurrent/should_run/conc024.hs
deleted file mode 100644 (file)
index d195b97..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module Main where
-
-import Exception
-import Concurrent
-import Prelude hiding (catch)
-
--- illustrates the BlockOnDeadMVar exception
-
-main = do
-  id <- myThreadId
-  forkIO (catch (do m <- newEmptyMVar; takeMVar m)
-               (\e -> throwTo id e))
-  catch (print (sum [1..1000000]))
-       (\e -> print e)
diff --git a/ghc/tests/concurrent/should_run/conc024.stdout b/ghc/tests/concurrent/should_run/conc024.stdout
deleted file mode 100644 (file)
index fc393ed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-thread blocked indefinitely
diff --git a/ghc/tests/concurrent/should_run/conc025.hs b/ghc/tests/concurrent/should_run/conc025.hs
deleted file mode 100644 (file)
index 2ff5e93..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! Simple test of dupChan
--- Embarassingly, the published version fails!
-
-module Main where
-
-import Exception
-import Chan
-
-main = do
-         chan <- newChan
-         ch <- dupChan chan
-         writeChan chan "done"
-         x <- readChan chan
-         y <- readChan ch
-         print ("Got "++x ++" "++y) 
diff --git a/ghc/tests/concurrent/should_run/conc025.stdout b/ghc/tests/concurrent/should_run/conc025.stdout
deleted file mode 100644 (file)
index fb15692..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"Got done done"
diff --git a/ghc/tests/concurrent/should_run/conc026.hs b/ghc/tests/concurrent/should_run/conc026.hs
deleted file mode 100644 (file)
index ba86bf4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- test for blocking putMVar
-
-import Concurrent
-
-main = do
-  m <- newMVar ()
-  forkIO (threadDelay 100000 >> takeMVar m)
-  putMVar m ()  
diff --git a/ghc/tests/concurrent/should_run/conc027.hs b/ghc/tests/concurrent/should_run/conc027.hs
deleted file mode 100644 (file)
index 71e956e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-import Concurrent
-
-main = do
-  m <- newEmptyMVar
-  end <- newEmptyMVar
-  forkIO (sequence_ [ putMVar m () | _ <- [1 .. 10000] ])
-  forkIO (sequence_ [ takeMVar m   | _ <- [1 .. 10000] ] >> putMVar end ())
-  takeMVar end
diff --git a/ghc/tests/concurrent/should_run/conc028.hs b/ghc/tests/concurrent/should_run/conc028.hs
deleted file mode 100644 (file)
index ee39aad..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- test tryPutMVar
-
-import Concurrent
-
-main = do
-  m <- newMVar ()
-  r <- tryPutMVar m ()
-  print r
diff --git a/ghc/tests/concurrent/should_run/conc028.stdout b/ghc/tests/concurrent/should_run/conc028.stdout
deleted file mode 100644 (file)
index bc59c12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-False
diff --git a/ghc/tests/concurrent/should_run/conc029.hs b/ghc/tests/concurrent/should_run/conc029.hs
deleted file mode 100644 (file)
index b0fab12..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module Main where
-
-import Exception
-import Concurrent
-import Prelude hiding (catch)
-
--- the BlockOnDeadMVar exception doesn't cause any output by default
-
-main = do
-  forkIO (do m <- newEmptyMVar; takeMVar m)
-  print (sum [1..10000])
diff --git a/ghc/tests/concurrent/should_run/conc029.stdout b/ghc/tests/concurrent/should_run/conc029.stdout
deleted file mode 100644 (file)
index b9d5693..0000000
+++ /dev/null
@@ -1 +0,0 @@
-50005000
diff --git a/ghc/tests/concurrent/should_run/conc030.hs b/ghc/tests/concurrent/should_run/conc030.hs
deleted file mode 100644 (file)
index 1e56632..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module Main where
-
-import Exception
-import Concurrent
-import Prelude hiding (catch)
-
--- the ThreadKilled exception doesn't cause any output by default
-
-main = do
-  m <- newEmptyMVar
-  id <- forkIO (takeMVar m)
-  yield
-  killThread id
-  putMVar m ()
-  print (sum [1..50000])
diff --git a/ghc/tests/concurrent/should_run/conc030.stdout b/ghc/tests/concurrent/should_run/conc030.stdout
deleted file mode 100644 (file)
index ba6ee95..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1250025000
diff --git a/ghc/tests/concurrent/should_run/conc031.hs b/ghc/tests/concurrent/should_run/conc031.hs
deleted file mode 100644 (file)
index c992d57..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-import Concurrent
-import Exception
-import IOExts
-import Weak
-
-data P = P (MVar Bool)
-
--- Bug reported by Manuel Chakravarty, namely that we weren't checking
--- for runnable finalizers before declaring that the program is
--- deadlocked.
-
-main = do
---  gcThread  -- with this thread enabled, no error
-  mv <- newEmptyMVar
-  let p = P mv
-  addFinalizer p (set p)
-  takeMVar mv >>= print
-  putStrLn "End."
-  where
-    set (P mv) = putMVar mv True
-    --
-    -- this is just to demonstrate that it is only about the GC timing
-    --
-    gcThread = forkIO $ let gc = do
-                                  putStrLn "delay"
-                                  threadDelay 100000
-                                  putStrLn "gc"
-                                  performGC
-                                  gc 
-                       in gc
diff --git a/ghc/tests/concurrent/should_run/conc031.stdout b/ghc/tests/concurrent/should_run/conc031.stdout
deleted file mode 100644 (file)
index 8d45abf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-True
-End.
diff --git a/ghc/tests/concurrent/should_run/conc032.hs b/ghc/tests/concurrent/should_run/conc032.hs
deleted file mode 100644 (file)
index af4be51..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
--- !!! this test exposed a bug in the take/putMVar implementation in
--- !!! GHC 5.00.  It involves multiple blocking takes & puts on the
--- !!! same MVar.
-
-import Concurrent
-import IOExts
-
-awk True  True  z     = 1
-awk False y     True  = 2
-awk x     False False = 3
-
-awk'1 True  True  z     = 1
-awk'2 False y     True  = 2
-awk'3 x     False False = 3
-
-awk' x y z | ppm [a1'1,a1'2,a1'3] (x,y,z) = awk'1 x y z
-           | ppm [a2'1,a2'2,a2'3] (x,y,z) = awk'2 x y z
-           | ppm [a3'1,a3'2,a3'3] (x,y,z) = awk'3 x y z
-           | otherwise                      = 0
-
-a1'1 (True,y,z)  s = s True
-a1'1 (x,y,z)     s = s False
-
-a1'2 (x,True,z)  s = s True
-a1'2 (x,y,z)     s = s False
-
-a1'3 (x,y,z)     s = s True
-
-a2'1 (False,y,z) s = s True
-a2'1 (x,y,z)     s = s False
-
-a2'2 (x,y,z)     s = s True
-
-a2'3 (x,y,True)  s = s True
-a2'3 (x,y,z)     s = s False
-
-a3'1 (x,y,z)     s = s True
-
-a3'2 (x,False,z) s = s True
-a3'2 (x,y,z)     s = s False
-
-a3'3 (x,y,False) s = s True
-a3'3 (x,y,z)     s = s False
-
-ppm fs as = unsafePerformIO (ppm' fs as)
-
-ppm' fs as = do m <- newEmptyMVar
-                let s = putMVar m
-                hs <- sequence [forkIO (f as s)|f <- fs]
-                result <- assess (length fs) m
-                sequence (map killThread hs)
-                return result
-                  where assess 0 m = return True
-                        assess n m = do h <- takeMVar m
-                                        if h then (assess (n-1) m)
-                                             else return False
-
-main = do sequence [putStrLn (show (awk' x y z))|(x,y,z) <- args]
-            where args = [
-                          (t,t,t),
-                          (t,t,f),
-                          (t,f,t),
-                          (t,f,f),
-                          (f,t,t),
-                          (f,t,f),
-                          (f,f,t),
-                          (f,f,f),
-                          (t,t,n)
-                          --(f,n,t),
-                          --(n,f,f),
-                         ]
-                  t    = True
-                  f    = False
-                  n    = odd (last [1..])
diff --git a/ghc/tests/concurrent/should_run/conc032.stdout b/ghc/tests/concurrent/should_run/conc032.stdout
deleted file mode 100644 (file)
index a357bc8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-1
-1
-0
-3
-2
-0
-2
-3
-1
diff --git a/ghc/tests/cpranal/Makefile b/ghc/tests/cpranal/Makefile
deleted file mode 100644 (file)
index 5268832..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/cpranal/should_compile/Cpr001.hs b/ghc/tests/cpranal/should_compile/Cpr001.hs
deleted file mode 100644 (file)
index 0871205..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module Cpr001
-    (intpInstr) where
-
-import Cpr001_imp
-
--- -------------------------------------------------------------------
-
-intpInstr      :: Instr -> MST ()
-
-intpInstr (SysCall "exit")
-    = setMTerminated
-
-intpInstr (SysCall call)
-    = setMSvc call
-
--- -------------------------------------------------------------------
diff --git a/ghc/tests/cpranal/should_compile/Cpr001_imp.hs b/ghc/tests/cpranal/should_compile/Cpr001_imp.hs
deleted file mode 100644 (file)
index 0b48d89..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
--- $Id: Cpr001_imp.hs,v 1.1 2001/03/28 05:07:34 kglynn Exp $
-
-module Cpr001_imp where
-
-data MS                = MS { instr    :: String
-                    , pc       :: Int
-                    , mem      :: String
-                    , stack    :: String
-                    , frames   :: [String]
-                    , status   :: Maybe String
-                    }
-
-
-newtype StateTrans s a = ST ( s -> (s, Maybe a))
-
--- state monad with error handling
--- in case of an error, the state remains
--- as it is and Nothing is returned as value
--- else execution continues
-
-instance Monad (StateTrans s) where
-    (ST p) >>= k
-       = ST (\s0 -> let
-                    (s1, r0)   = p s0
-                    in
-                    case r0 of
-                    Just v -> let
-                               (ST q) = k v
-                              in
-                              q s1
-                    Nothing -> (s1, Nothing)
-            )
-    return v
-       = ST (\s -> (s, Just v))
-
-
--- machine state transitions
-
-type MachineStateTrans = StateTrans MS
-
-type MST = MachineStateTrans
-
-{-# NOINLINE setMTerminated #-}
-setMTerminated
-    = ST (\ms -> (ms { status = Just "Terminated" }, Just ()))
-
-setMSvc call
-    = ST (\ms -> (ms { status = Just "Service" }, Just ()))
-
--- -------------------------------------------------------------------
-
-data Instr
-    = LoadI            Int             -- load int const
-    | SysCall          String          -- system call (svc)
-
diff --git a/ghc/tests/cpranal/should_compile/Makefile b/ghc/tests/cpranal/should_compile/Makefile
deleted file mode 100644 (file)
index e989a83..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -O -prof -auto-all
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deSugar/Makefile b/ghc/tests/deSugar/Makefile
deleted file mode 100644 (file)
index 0ad5249..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 1997/12/16 17:15:23 simonm Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile should_run
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deSugar/should_compile/Makefile b/ghc/tests/deSugar/should_compile/Makefile
deleted file mode 100644 (file)
index 7ca54f7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-ds035_HC_OPTS = -fglasgow-exts -package lang
-ds046_HC_OPTS = -O -funbox-strict-fields
-ds049_HC_OPTS = -fvia-C -package lang
-ds050_HC_OPTS = -fglasgow-exts
-
-# mkdependHS doesn't understand OPTIONS pragmas...
-SRC_MKDEPENDHS_OPTS += -fglasgow-exts
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/Life2.lhs b/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/Life2.lhs
deleted file mode 100644 (file)
index 30de1a3..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-\section{Life2}
-
-\begin{code}
-module Life2 (life2) where 
-import UTypes
-import UCopy (copy_FI)
-
-life2 itLimit boardSize
- = (fBStr firstBoard) ++ (fBStr secondBoard)
-   where {- ... -}
-
-\end{code}
-
-\begin{code}
-   fBStr :: FI -> String
-   fBStr FIN = []
-
-{- OK
-   firstBoard :: FI
-   firstBoard = copy_FI boardSize (case 0 of
-                                    (MkInt x) -> x)
--}
-
-{- not happy about this -}
-   
-   firstBoard = copy_FI boardSize u0
-   u0 = unBoxInt 0
-   unBoxInt (MkInt x) = x
-{- end of not happy -}
-
-{- not happy with this either! -}
-
-   secondBoard = copy_FI boardSize u1
-
-   (MkInt u1) = 0
-{- end of second not happy -}
-\end{code}
-
-
diff --git a/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UCopy.hi b/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UCopy.hi
deleted file mode 100644 (file)
index 314de4e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-interface UCopy where
-import UTypes(F3I(..), FC(..), FI(..), LI(..), SC(..), SI(..))
-copy_FI :: Int -> IntPrim -> FI {-# ARITY _ = 2 #-}
-data F3I = F3IN | F3I1 IntPrim IntPrim IntPrim | F3I2 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I3 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I4 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I5 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim F3I
-data FC = FCN | FC1 Char# | FC2 Char# Char# | FC3 Char# Char# Char# | FC4 Char# Char# Char# Char# | FC5 Char# Char# Char# Char# Char# FC
-data FI = FIN | FI1 IntPrim | FI2 IntPrim IntPrim | FI3 IntPrim IntPrim IntPrim | FI4 IntPrim IntPrim IntPrim IntPrim | FI5 IntPrim IntPrim IntPrim IntPrim IntPrim FI
-data LI = LIN | LI1 IntPrim LI
-data SC = SCN | SC1 Char# SC | SC2 Char# Char# SC | SC3 Char# Char# Char# SC | SC4 Char# Char# Char# Char# SC | SC5 Char# Char# Char# Char# Char# SC
-data SI = SIN | SI1 IntPrim SI | SI2 IntPrim IntPrim SI | SI3 IntPrim IntPrim IntPrim SI | SI4 IntPrim IntPrim IntPrim IntPrim SI | SI5 IntPrim IntPrim IntPrim IntPrim IntPrim SI
diff --git a/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UTypes.hi b/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/UTypes.hi
deleted file mode 100644 (file)
index 896a29c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-interface UTypes where
-data F3I = F3IN | F3I1 IntPrim IntPrim IntPrim | F3I2 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I3 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I4 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim | F3I5 IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim IntPrim F3I
-data FC = FCN | FC1 Char# | FC2 Char# Char# | FC3 Char# Char# Char# | FC4 Char# Char# Char# Char# | FC5 Char# Char# Char# Char# Char# FC
-data FI = FIN | FI1 IntPrim | FI2 IntPrim IntPrim | FI3 IntPrim IntPrim IntPrim | FI4 IntPrim IntPrim IntPrim IntPrim | FI5 IntPrim IntPrim IntPrim IntPrim IntPrim FI
-data LI = LIN | LI1 IntPrim LI
-data SC = SCN | SC1 Char# SC | SC2 Char# Char# SC | SC3 Char# Char# Char# SC | SC4 Char# Char# Char# Char# SC | SC5 Char# Char# Char# Char# Char# SC
-data SI = SIN | SI1 IntPrim SI | SI2 IntPrim IntPrim SI | SI3 IntPrim IntPrim IntPrim SI | SI4 IntPrim IntPrim IntPrim IntPrim SI | SI5 IntPrim IntPrim IntPrim IntPrim IntPrim SI
diff --git a/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/cvh-unbox1.stderr b/ghc/tests/deSugar/should_compile/cvh-ds-unboxed/cvh-unbox1.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds-wildcard.hs b/ghc/tests/deSugar/should_compile/ds-wildcard.hs
deleted file mode 100644 (file)
index dae882c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldCompile where
-
-x@_ = x
diff --git a/ghc/tests/deSugar/should_compile/ds-wildcard.stderr b/ghc/tests/deSugar/should_compile/ds-wildcard.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds001.hs b/ghc/tests/deSugar/should_compile/ds001.hs
deleted file mode 100644 (file)
index d3f0b60..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! ds001 -- simple function and pattern bindings
---
--- this tests ultra-simple function and pattern bindings (no patterns)
-
-module ShouldCompile where
-
--- simple function bindings
-
-f x = x
-
-g x y z = f z
-
-j w x y z = g w x z
-
-h x y = f y
-  where
-    f a b = a
-
--- simple pattern bindings
-
-a = b
-
-b = f
-
-c = c
diff --git a/ghc/tests/deSugar/should_compile/ds001.stderr b/ghc/tests/deSugar/should_compile/ds001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds002.hs b/ghc/tests/deSugar/should_compile/ds002.hs
deleted file mode 100644 (file)
index 280674e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! ds002 -- overlapping equations and guards
---
--- this tests "overlapping" variables and guards
-
-module ShouldCompile where
-
-f x = x
-f y = y
-f z = z
-
-g x y z | True = f z
-       | True = f z
-       | True = f z
-g x y z | True = f z
-       | True = f z
-       | True = f z
diff --git a/ghc/tests/deSugar/should_compile/ds002.stderr b/ghc/tests/deSugar/should_compile/ds002.stderr
deleted file mode 100644 (file)
index 629217e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-ds002.hs:7: Warning: Pattern match(es) are overlapped
-    In the definition of `f':
-       f y = ...
-       f z = ...
-
-ds002.hs:11: Warning: Pattern match(es) are overlapped
-    In the definition of `g': g x y z = ...
diff --git a/ghc/tests/deSugar/should_compile/ds003.hs b/ghc/tests/deSugar/should_compile/ds003.hs
deleted file mode 100644 (file)
index dafeac9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! ds003 -- list, tuple, lazy, as patterns
---
-module ShouldCompile where
-
-f []           y        True  = []
-f x            a@(y,ys) ~z    = []
-f (x:x1:x2:x3) ~(y,ys)  z     = []
-f x            y        True  = []
diff --git a/ghc/tests/deSugar/should_compile/ds003.stderr b/ghc/tests/deSugar/should_compile/ds003.stderr
deleted file mode 100644 (file)
index 4eb1190..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-ds003.hs:5: Warning: Pattern match(es) are overlapped
-    In the definition of `f':
-       f (x : (x1 : (x2 : x3))) ~(y, ys) z = ...
-       f x y True = ...
diff --git a/ghc/tests/deSugar/should_compile/ds004.hs b/ghc/tests/deSugar/should_compile/ds004.hs
deleted file mode 100644 (file)
index ebbe8e0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! ds004 -- nodups from SLPJ p 79
---
-module ShouldCompile where
-
--- SLPJ, p 79
-nodups []                   = []
-nodups [x]                  = [x]
-nodups (y:x:xs) | y == x    = nodups (x:xs)
-               | True      = y : nodups (x:xs)
diff --git a/ghc/tests/deSugar/should_compile/ds004.stderr b/ghc/tests/deSugar/should_compile/ds004.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds005.hs b/ghc/tests/deSugar/should_compile/ds005.hs
deleted file mode 100644 (file)
index a02e8d9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! ds005 -- mappairs from SLPJ Ch 5'
---
--- this simply tests a "typical" example
-
-module ShouldCompile where
-
--- from SLPJ, p 78
-mappairs f []     ys     = []
-mappairs f (x:xs) []     = []
-mappairs f (x:xs) (y:ys) = f x y : mappairs f xs ys
-
--- from p 80
-mappairs' f []     ys     = []
-mappairs' f x      []     = []
-mappairs' f (x:xs) (y:ys) = f x y : mappairs' f xs ys
diff --git a/ghc/tests/deSugar/should_compile/ds005.stderr b/ghc/tests/deSugar/should_compile/ds005.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds006.hs b/ghc/tests/deSugar/should_compile/ds006.hs
deleted file mode 100644 (file)
index d66e7c1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! ds006 -- v | True = v+1 | False = v (dead code elim)
---
-module ShouldCompile where
-
-v | True  = v + 1
-  | False = v
diff --git a/ghc/tests/deSugar/should_compile/ds006.stderr b/ghc/tests/deSugar/should_compile/ds006.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds007.hs b/ghc/tests/deSugar/should_compile/ds007.hs
deleted file mode 100644 (file)
index ae12cf7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! ds007 -- simple local bindings
-
-module ShouldCompile where
-
-w = a where a = y
-            y = []
diff --git a/ghc/tests/deSugar/should_compile/ds007.stderr b/ghc/tests/deSugar/should_compile/ds007.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds008.hs b/ghc/tests/deSugar/should_compile/ds008.hs
deleted file mode 100644 (file)
index 73707ed..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! ds008 -- free tyvars on RHSs
---
--- these tests involve way-cool TyApps
-
-module ShouldCompile where
-
-f x = []
-
-g x = (f [],[],[],[])
-
-h x = g (1::Int)
diff --git a/ghc/tests/deSugar/should_compile/ds008.stderr b/ghc/tests/deSugar/should_compile/ds008.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds009.hs b/ghc/tests/deSugar/should_compile/ds009.hs
deleted file mode 100644 (file)
index 6ebcc96..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! ds009 -- simple list comprehensions
-
-module ShouldCompile where
-
-f xs = [ x | x <- xs ]
-
-g xs ys zs = [ (x,y,z) | x <- xs, y <- ys, z <- zs, True ]
-
-h xs ys = [ [x,y] | x <- xs, y <- ys, False ]
-
-i xs = [ x | all@(x,y) <- xs, all == ([],[]) ]
-
-j xs = [ (a,b) | (a,b,c,d) <- xs ]
diff --git a/ghc/tests/deSugar/should_compile/ds009.stderr b/ghc/tests/deSugar/should_compile/ds009.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds010.hs b/ghc/tests/deSugar/should_compile/ds010.hs
deleted file mode 100644 (file)
index 268610e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! ds010 -- deeply-nested list comprehensions
-
-module ShouldCompile where
-
-z = [ (a,b,c,d,e,f,g,h,i,j) | a <- "12",
-                             b <- "12",
-                             c <- "12",
-                             d <- "12",
-                             e <- "12",
-                             f <- "12",
-                             g <- "12",
-                             h <- "12",
-                             i <- "12",
-                             j <- "12"
-    ]
diff --git a/ghc/tests/deSugar/should_compile/ds010.stderr b/ghc/tests/deSugar/should_compile/ds010.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds011.hs b/ghc/tests/deSugar/should_compile/ds011.hs
deleted file mode 100644 (file)
index dab482f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! ds011 -- uses of "error"
-
-module ShouldCompile where
-
-f = error []
-
-g = error ""
-
-h = error "\""
-
-i = error "foo"
diff --git a/ghc/tests/deSugar/should_compile/ds011.stderr b/ghc/tests/deSugar/should_compile/ds011.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds012.hs b/ghc/tests/deSugar/should_compile/ds012.hs
deleted file mode 100644 (file)
index 4ef9d8c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! ds012 -- simple Integer arithmetic
---
-module ShouldCompile where
-
-f x = 1 + 2 - 3 + 4 * 5
-
-g x = x + (f x)
-
-h x = 111111111111111111111111111111111111111111111111111111111111
-    + 222222222222222222222222222222222222222222222222222222222222
diff --git a/ghc/tests/deSugar/should_compile/ds012.stderr b/ghc/tests/deSugar/should_compile/ds012.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds013.hs b/ghc/tests/deSugar/should_compile/ds013.hs
deleted file mode 100644 (file)
index 3fb55ab..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! ds013 -- simple Rational arithmetic
-
-module ShouldCompile where
-
-f = 1.5 + 2.0 - 3.14159265 + 4.2 * 5.111111111111111111111111111
-
-g :: Float
-g = 1.5 + 2.0 - 3.14159265 + 4.2 * 5.111111111111111111111111111
-
-h :: Double
-h = 1.5 + 2.0 - 3.14159265 + 4.2 * 5.111111111111111111111111111
-
-{- later
-g x = x + (f x)
-
-h x = 1.0e1000000000 + 1.0e1000000000
-
-i x = 1.0e-1000000000 + 1.0e-1000000000
-
-j x = 1111111111.222222222222222e333333333333333
-    * 4444444444.555555555555555e-66666666666666
--}
-
diff --git a/ghc/tests/deSugar/should_compile/ds013.stderr b/ghc/tests/deSugar/should_compile/ds013.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds014.hs b/ghc/tests/deSugar/should_compile/ds014.hs
deleted file mode 100644 (file)
index 23b3709..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
--- !!! ds014 -- character and string literals
--- !!!   really should add ALL weird forms...
-
-module ShouldCompile where
-
-a = 'a'
-b = "b"
-c = a:b
-d = b ++ b
-
-b1 = ""                -- examples from the Haskell report
-b2 = "\&"      -- the same thing
-b3 = "\SO\&H" ++ "\137\&9"
-
-a000 = '\NUL'
-a001 = '\SOH'
-a002 = '\STX'
-a003 = '\ETX'
-a004 = '\EOT'
-a005 = '\ENQ'
-a006 = '\ACK'
-a007 = '\BEL'
-a010 = '\BS'
-a011 = '\HT'
-a012 = '\LF'
-a013 = '\VT'
-a014 = '\FF'
-a015 = '\CR'
-a016 = '\SO'
-a017 = '\SI'
-a020 = '\DLE'
-a021 = '\DC1'
-a022 = '\DC2'
-a023 = '\DC3'
-a024 = '\DC4'
-a025 = '\NAK'
-a026 = '\SYN'
-a027 = '\ETB'
-a030 = '\CAN'
-a031 = '\EM'
-a032 = '\SUB'
-a033 = '\ESC'
-a034 = '\FS'
-a035 = '\GS'
-a036 = '\RS'
-a037 = '\US'
-a040 = '\SP'
-a042 = '"'
-a047 = '\''
-a134 = '\\'
-a177 = '\DEL'
-
-ascii = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK\BEL\
-       \\BS\HT\LF\VT\FF\CR\SO\SI\
-       \\DLE\DC1\DC2\DC3\DC4\NAK\SYN\ETB\
-       \\CAN\EM\SUB\ESC\FS\GS\RS\US\
-       \\SP!\"#$%&'\
-       \()*+,-./\
-       \01234567\
-       \89:;<=>?\
-       \@ABCDEFG\
-       \HIJKLMNO\
-       \PQRSTUVW\
-       \XYZ[\\]^_\
-       \`abcdefg\
-       \hijklmno\
-       \pqrstuvw\
-       \xyz{|}~\DEL"
-
-na200 = '\o200'
-na250 = '\o250'
-na300 = '\o300'
-na350 = '\o350'
-na377 = '\o377'
-
-eightbit = "\o200\o250\o300\o350\o377"
diff --git a/ghc/tests/deSugar/should_compile/ds014.stderr b/ghc/tests/deSugar/should_compile/ds014.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds015.hs b/ghc/tests/deSugar/should_compile/ds015.hs
deleted file mode 100644 (file)
index 2464577..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! ds015 -- lambdas
---
-module ShouldCompile where
-
-f x = ( \ x -> x ) x
-
-g x y = ( \ x y -> y x ) ( \ x -> x ) x
-
-h x y = ( \ (x:xs) -> x ) x
diff --git a/ghc/tests/deSugar/should_compile/ds015.stderr b/ghc/tests/deSugar/should_compile/ds015.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds016.hs b/ghc/tests/deSugar/should_compile/ds016.hs
deleted file mode 100644 (file)
index 41394e7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! ds016 -- case expressions
---
-module ShouldCompile where
-
-f x y z =
-    case ( x ++ x ++ x ++ x ++ x ) of
-       []      -> []
-       [a]     -> error "2"
-       [a,b,c] ->
-                   case ( (y,z,y,z) ) of
---                   (True, _, False, _) | True == False -> z
---                   (True, _, False, _) | True == False -> z
-                     _ -> z
-
-       (a:bs)  -> error "4"
diff --git a/ghc/tests/deSugar/should_compile/ds016.stderr b/ghc/tests/deSugar/should_compile/ds016.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds017.hs b/ghc/tests/deSugar/should_compile/ds017.hs
deleted file mode 100644 (file)
index e6fd6d0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! ds017 -- let expressions
---
-module ShouldCompile where
-
-f x y z
-  = let
-       a = x : []
-       b = x : a
-       c = y (let d = (z, z) in d)
-       result = (c, b)
-    in
-       result
diff --git a/ghc/tests/deSugar/should_compile/ds017.stderr b/ghc/tests/deSugar/should_compile/ds017.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds018.hs b/ghc/tests/deSugar/should_compile/ds018.hs
deleted file mode 100644 (file)
index 68a9e4c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
--- !!! ds018 -- explicit lists and tuples (with disabled LARGE tuples!)
---
-module ShouldCompile where
-
--- exprs
-
-f x y z = [x,y,z,x,y,z]
-f2 x y = []
-
-g1 x y  = ()
-
-{- Although GHC *should* provide arbitrary tuples, it currently doesn't
-   and probably won't in the near future, so this test is only a reminder.
-
-g x y z = (x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z,
-          x,y,z,x,y,z) -- hey, we love big tuples
--}
-
--- pats
-
-fa [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z] = x
-
-fb [] = []
-
-{- See above
-ga (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
-    aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,
-    an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az) = x
--}
-
-gb () x = x
-gb2 ()  = ()
-
--- need to think of some better ones...
diff --git a/ghc/tests/deSugar/should_compile/ds018.stderr b/ghc/tests/deSugar/should_compile/ds018.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds019.hs b/ghc/tests/deSugar/should_compile/ds019.hs
deleted file mode 100644 (file)
index 6bcf43f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! ds019 -- mixed var and uni-constructor pats
-
-module ShouldCompile where
-
-f (a,b,c) i     o = []
-f d       (j,k) p = []
-f (e,f,g) l     q = []
-f h       (m,n) r = []
diff --git a/ghc/tests/deSugar/should_compile/ds019.stderr b/ghc/tests/deSugar/should_compile/ds019.stderr
deleted file mode 100644 (file)
index f2ae2ad..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-ds019.hs:5: Warning: Pattern match(es) are overlapped
-    In the definition of `f':
-       f d (j, k) p = ...
-       f (e, f, g) l q = ...
-       f h (m, n) r = ...
diff --git a/ghc/tests/deSugar/should_compile/ds020.hs b/ghc/tests/deSugar/should_compile/ds020.hs
deleted file mode 100644 (file)
index 479d57a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
--- !!! ds020 -- lazy patterns (in detail)
---
-module ShouldCompile where
-
-a ~([],[],[])    = []
-a ~(~[],~[],~[]) = []
-
-b ~(x:xs:ys)      = []
-b ~(~x: ~xs: ~ys) = []
-
-c ~x ~ _ ~11111 ~3.14159265 = x
-
-d 11       = 4
-d 12       = 3
-d ~(n+4)    = 2
-d ~(n+43)   = 1
-d ~(n+999)  = 0
-
-f ~(x@[]) = []
-f x@(~[]) = []
-
-g ~(~(~(~([])))) = []
-
--- pattern bindings (implicitly lazy)
-
-([],[],[])    = ([],[],[])
-(~[],~[],~[]) = ([],[],[])
-
-(x1: xs1: ys1) = []
-(~x: ~xs: ~ys) = []
-
-(x2 : xs2: ys2) | eq2  = []
-               | eq3  = [x2]
-               | eq4  = [x2]
-               | True = []
-               where
-                 eq2 = (2::Int) == (4::Int)
-                 eq3 = (3::Int) == (3::Int)
-                 eq4 = (4::Int) == (2::Int)
-
-(x3,y3) | x3 >  3 = (4, 5)
-        | x3 <= 3 = (2, 3)
--- above: x & y should both be \bottom.
-
-(x4,(y4,(z4,a4))) | eq2  = ('a',('a',('a','a')))
-                 | eq3  = ('b',('b',('b','b')))
-                 | eq4  = ('c',('c',('c','c')))
-                 | True = ('d',('d',('d','d')))
-                 where
-                    eq2 = (2::Int) == (4::Int)
-                    eq3 = (3::Int) == (3::Int)
-                    eq4 = (4::Int) == (2::Int)
-
-
diff --git a/ghc/tests/deSugar/should_compile/ds020.stderr b/ghc/tests/deSugar/should_compile/ds020.stderr
deleted file mode 100644 (file)
index c838082..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-ds020.hs:5: Warning: Pattern match(es) are overlapped
-    In the definition of `a': a ~(~[], ~[], ~[]) = ...
-
-ds020.hs:8: Warning: Pattern match(es) are overlapped
-    In the definition of `b': b ~(~x : (~xs : ~ys)) = ...
-
-ds020.hs:13: Warning: Pattern match(es) are overlapped
-    In the definition of `d':
-       d ~(n+43) = ...
-       d ~(n+999) = ...
-
-ds020.hs:19: Warning: Pattern match(es) are overlapped
-    In the definition of `f': f (x@~[]) = ...
diff --git a/ghc/tests/deSugar/should_compile/ds021.hs b/ghc/tests/deSugar/should_compile/ds021.hs
deleted file mode 100644 (file)
index 4faaba5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! ds021 -- hairier uses of guards
-
-module ShouldCompile where
-
-f x y z | x == y     = []
-       | x /= z     = []
-       | True       = []
-       | False      = []
diff --git a/ghc/tests/deSugar/should_compile/ds021.stderr b/ghc/tests/deSugar/should_compile/ds021.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds022.hs b/ghc/tests/deSugar/should_compile/ds022.hs
deleted file mode 100644 (file)
index 2ac429f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
--- !!! ds022 -- literal patterns (wimp version)
---
-module ShouldCompile where
-
-f 1 1.1 = []
-f 2 2.2 = []
-f 3 3.3 = []
-f 4 4.4 = []
-
-g 11111111111111111111111 1.11111111111111111 = []
-g 22222222222222222222222 2.22222222222222222 = []
-g 33333333333333333333333 3.33333333333333333 = []
-g 44444444444444444444444 4.44444444444444444 = []
-
-h 'a'      ""                  = []
-h '\''     "foo"               = []
-h '"'      ('b':'a':'r':[])    = []
-h '\o250'   blob               = []
-
-i 1 1.1     = []
-i 2 2.2     = []
-i 1 0.011e2 = []
-i 2 2.20000 = []
-
-{-
-j one@1 oneone@1.1
-  | ((fromFloat oneone) - (fromIntegral (fromInt one)))
-       /= (fromIntegral (fromInt 0)) = []
-j two@2 twotwo@2.2
-  | ((fromFloat twotwo) * (fromIntegral (fromInt 2)))
-       == (fromIntegral (fromInt 4.4)) = []
--}
diff --git a/ghc/tests/deSugar/should_compile/ds022.stderr b/ghc/tests/deSugar/should_compile/ds022.stderr
deleted file mode 100644 (file)
index 83a94e1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-ds022.hs:20: Warning: Pattern match(es) are overlapped
-    In the definition of `i':
-       i 1 1.1 = ...
-       i 2 2.2 = ...
diff --git a/ghc/tests/deSugar/should_compile/ds023.hs b/ghc/tests/deSugar/should_compile/ds023.hs
deleted file mode 100644 (file)
index 736107d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! ds023 -- overloading eg from section 9.2
---
-module ShouldCompile where
-
-f x    = g (x == x) x
-g b x  = abs (f x)
---g b x        = (f x) + (f x)
diff --git a/ghc/tests/deSugar/should_compile/ds023.stderr b/ghc/tests/deSugar/should_compile/ds023.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds024.hs b/ghc/tests/deSugar/should_compile/ds024.hs
deleted file mode 100644 (file)
index 76606a9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! ds024 -- correct types on ConPatOuts
-
--- do all the right types get stuck on all the
--- Nils and Conses?
-
-module ShouldCompile where
-
-
-f x = [[], []]
-
-g x = ([], [], [])
diff --git a/ghc/tests/deSugar/should_compile/ds024.stderr b/ghc/tests/deSugar/should_compile/ds024.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds025.hs b/ghc/tests/deSugar/should_compile/ds025.hs
deleted file mode 100644 (file)
index fdbf0ff..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! ds025 -- overloaded assoc -- AbsBinds
-
-module ShouldCompile where
-
-ehead xs loc | null xs = error ("4"++loc)
-             | True = head xs
-
-assoc key lst loc
-   = if (null res) then error ("1"++loc++"2"++(show key))
-                   else (ehead res "3")
-     where res = [ val | (key',val) <- lst, key==key']
-
-assocMaybe :: (Eq a) => a -> [(a,b)] -> Maybe b
-assocMaybe key lst
- = if (null res) then Nothing else (Just (head res))
-   where res =  [ val | (key',val) <- lst, key==key']
diff --git a/ghc/tests/deSugar/should_compile/ds025.stderr b/ghc/tests/deSugar/should_compile/ds025.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds026.hs b/ghc/tests/deSugar/should_compile/ds026.hs
deleted file mode 100644 (file)
index f21ca0b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! ds026 -- classes -- incl. polymorphic method
-
-module ShouldCompile where
-
-class Foo a where
-  op :: a -> a
-
-class Foo a => Boo a where
-  op1 :: a -> a
-
-class Boo a => Noo a where
-  op2 :: (Eq b) => a -> b -> a
-
-f x y = op (op2 x y)
diff --git a/ghc/tests/deSugar/should_compile/ds026.stderr b/ghc/tests/deSugar/should_compile/ds026.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds027.hs b/ghc/tests/deSugar/should_compile/ds027.hs
deleted file mode 100644 (file)
index 436958e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! ds027 -- simple instances
---
-module ShouldCompile where
-
-data Foo = Bar | Baz
-
-instance Eq Foo where
-  Bar == Baz = True
-  Bar /= Baz = False
diff --git a/ghc/tests/deSugar/should_compile/ds027.stderr b/ghc/tests/deSugar/should_compile/ds027.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds028.hs b/ghc/tests/deSugar/should_compile/ds028.hs
deleted file mode 100644 (file)
index 4c7944a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! ds028: failable pats in top row
-
-module ShouldCompile where
-
-
--- when the first row of pats doesn't have convenient
--- variables to grab...
-
-mAp f []       = []
-mAp f (x:xs)   = f x : mAp f xs
-
-True  |||| _   =  True
-False |||| x   =  x
diff --git a/ghc/tests/deSugar/should_compile/ds028.stderr b/ghc/tests/deSugar/should_compile/ds028.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds029.hs b/ghc/tests/deSugar/should_compile/ds029.hs
deleted file mode 100644 (file)
index 0000523..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! ds029: pattern binding with guards (dubious but valid)
---
-
-module ShouldCompile where
-
-f x = y
-    where (y,z) | y < z     = (0,1)
-               | y > z     = (1,2)
-               | True      = (2,3)
diff --git a/ghc/tests/deSugar/should_compile/ds029.stderr b/ghc/tests/deSugar/should_compile/ds029.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds030.hs b/ghc/tests/deSugar/should_compile/ds030.hs
deleted file mode 100644 (file)
index 8475b55..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! ds030: checks that types substituted into binders
---
-module ShouldCompile where
-
-f x = case x of [] -> (3::Int) ; _ -> (4::Int)
diff --git a/ghc/tests/deSugar/should_compile/ds030.stderr b/ghc/tests/deSugar/should_compile/ds030.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds031.hs b/ghc/tests/deSugar/should_compile/ds031.hs
deleted file mode 100644 (file)
index 5f25c15..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldCompile where
-
-foldPair :: (a->a->a,b->b->b) -> (a,b) -> [(a,b)] -> (a,b)
-foldPair fg       ab [] = ab
-foldPair fg@(f,g) ab ((a,b):abs) = (f a u,g b v)
-                       where (u,v) = foldPair fg ab abs
-
diff --git a/ghc/tests/deSugar/should_compile/ds031.stderr b/ghc/tests/deSugar/should_compile/ds031.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds032.hs b/ghc/tests/deSugar/should_compile/ds032.hs
deleted file mode 100644 (file)
index 09e2de1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! recursive funs tangled in an AbsBind
-
-module ShouldCompile where
-
-
-flatten :: Int         -- Indentation
-        -> Bool                -- True => just had a newline
-        -> Float       -- Current seq to flatten
-        -> [(Int,Float)]-- Work list with indentation
-        -> String
-
-flatten n nlp 0.0 seqs = flattenS nlp seqs
-flatten n nlp 1.0 seqs = flatten n nlp 1.1 ((n,1.2) : seqs)
-
-flattenS :: Bool -> [(Int, Float)] -> String
-flattenS nlp [] = ""
-flattenS nlp ((col,seq):seqs) = flatten col nlp seq seqs
diff --git a/ghc/tests/deSugar/should_compile/ds032.stderr b/ghc/tests/deSugar/should_compile/ds032.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds033.hs b/ghc/tests/deSugar/should_compile/ds033.hs
deleted file mode 100644 (file)
index 9d89a93..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! getting top-level dependencies right
---
-module ShouldCompile where
-
-f1 x = g1 x
-g1 y = y
-
-g2 y = y
-f2 x = g2 x
-
-f3 x = g3 x
-g3 y = f3 y
-
-g4 y = f4 y
-f4 x = g4 x
diff --git a/ghc/tests/deSugar/should_compile/ds033.stderr b/ghc/tests/deSugar/should_compile/ds033.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds034.hs b/ghc/tests/deSugar/should_compile/ds034.hs
deleted file mode 100644 (file)
index 0725a7a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! mutually-recursive methods in an instance declaration
---
-module ShouldCompile where
-
-class Foo a where
-    op1 :: a -> a 
-    op2 :: a -> a 
-
-instance Foo Int where
-    op1 x = op2 x
-    op2 y = op1 y
diff --git a/ghc/tests/deSugar/should_compile/ds034.stderr b/ghc/tests/deSugar/should_compile/ds034.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds035.hs b/ghc/tests/deSugar/should_compile/ds035.hs
deleted file mode 100644 (file)
index 70721b7..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module ShouldCompile where
-
-import GlaExts
-
-data CList = CNil | CCons Int# CList
-
-mk :: Int# -> CList
-mk n = case (n ==# 0#) of
-       False -> CNil
-       _     -> CCons 1# (mk (n -# 1#))
-
-clen :: CList -> Int#
-clen CNil = 0#
-clen (CCons _ cl) = 1# +# (clen cl)
-
-main = putStr (case len4_twice of
-           8# -> "bingo\n"
-           _  -> "oops\n")
-  where
-    list4      = mk 4#
-    len4       = clen list4
-    len4_twice = len4 +# len4
diff --git a/ghc/tests/deSugar/should_compile/ds035.stderr b/ghc/tests/deSugar/should_compile/ds035.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds036.hs b/ghc/tests/deSugar/should_compile/ds036.hs
deleted file mode 100644 (file)
index a024402..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{-
-From dmc@minster.york.ac.uk Tue Mar 10 17:15:20 1992
-Via: uk.ac.york.minster; Tue, 10 Mar 92 17:15:14 GMT
-Message-Id: <swordfish.700247842@minster.york.ac.uk>
-From: dmc@minster.york.ac.uk
-To: partain
-Date:       10 Mar 1992 17:17:21 GMT
-
-Will,
-
-I have just started using Haskell at York and have found a compilation 
-error in the code below which disappears when the last line is 
-commented out
--}
-
-module ShouldCompile where
-
---brack :: (Eq a) => a -> a -> [a] -> ([a],[a])
---brack open close = brack' open close (1 :: Int)
-
-brack' :: (Eq a) => a -> a -> Int -> [a] -> ([a],[a])
-brack' open close 0 xs = ([],xs)
-brack' open close (n+1) [] = ([],[])
-brack' open close (n+1) (h:t) | h == open = ([],[])
-
-{-
-Is this something I have done wrong or a fault with the compiler?
-
-Cheers
-Dave
-
-
------------------------------------------------------------------------
-David Cattrall                 Telephone +44 904 432777
-Department of Computer Science 
-University of York             JANET:  dmc@uk.ac.york.minster
-YORK Y01 5DD
-United Kingdom                 UUNET:  uucp!ukc!minster!dmc
------------------------------------------------------------------------
--}
-
--- and this was Kevin's idea, subsequently...
-
-kh (n+2) x | x > n = x * 2
-kh (x+1) (m+1) = m
diff --git a/ghc/tests/deSugar/should_compile/ds036.stderr b/ghc/tests/deSugar/should_compile/ds036.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds037.hs b/ghc/tests/deSugar/should_compile/ds037.hs
deleted file mode 100644 (file)
index d5fc130..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! AbsBinds with tyvars, no dictvars, but some dict binds
---
-module ShouldCompile where
-
-f x y = (fst (g y x), x+(1::Int))
-g x y = (fst (f x y), y+(1::Int))
diff --git a/ghc/tests/deSugar/should_compile/ds037.stderr b/ghc/tests/deSugar/should_compile/ds037.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds038.hs b/ghc/tests/deSugar/should_compile/ds038.hs
deleted file mode 100644 (file)
index 04b043c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Jon Hill reported a bug in desugaring this in 0.09
--- !!! (recursive with n+k patts)
---
-module ShouldCompile where
-
-takeList :: Int -> [a] -> [a]
-takeList 0     _      = []
-takeList (n+1) []     = []
-takeList (n+1) (x:xs) = x : takeList n xs
diff --git a/ghc/tests/deSugar/should_compile/ds038.stderr b/ghc/tests/deSugar/should_compile/ds038.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds039.hs b/ghc/tests/deSugar/should_compile/ds039.hs
deleted file mode 100644 (file)
index ad000a5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! make sure correct type applications get put in
--- !!!   when (:) is saturated.
-
-module ShouldCompile where
-
-
-f = (:)
diff --git a/ghc/tests/deSugar/should_compile/ds039.stderr b/ghc/tests/deSugar/should_compile/ds039.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_compile/ds040.hs b/ghc/tests/deSugar/should_compile/ds040.hs
deleted file mode 100644 (file)
index c02f9f4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module ShouldCompile where
-
--- !!! Another bug in overloaded n+k patts
---
-
-main  = print ((4::Int) ^^^^ (6::Int))
-
-(^^^^)         :: (Num a, Integral b) => a -> b -> a
-x ^^^^ 0               =  1
-x ^^^^ (n+1)   =  f x n x
-                  where f _ 0 y = y
-                        f x n y = g x n  where
-                                  g x n | even n  = g (x*x) (n `quot` 2)
-                                        | otherwise = f x (n-1) (x*y)
-_ ^^^^ _               = error "(^^^^){Prelude}: negative exponent"
diff --git a/ghc/tests/deSugar/should_compile/ds040.stderr b/ghc/tests/deSugar/should_compile/ds040.stderr
deleted file mode 100644 (file)
index d492cb2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-ds040.hs:9: Warning: Pattern match(es) are overlapped
-    In the definition of `^^^^': ^^^^ _ _ = ...
diff --git a/ghc/tests/deSugar/should_compile/ds041.hs b/ghc/tests/deSugar/should_compile/ds041.hs
deleted file mode 100644 (file)
index 9fafd58..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{- In 2.05 this one crashed with
-
-       Fail: "basicTypes/Id.lhs", line 990: incomplete pattern(s) 
-               to match in function "dataConFieldLabels"
-
-   Reason: dsExpr (RecordCon ...) didn't extract 
-          the constructor properly.
--}
-
-module ShouldCompile where
-
-data Eq a => Foo a = Foo { x :: a }
-
-foo :: Eq a => Foo a
-foo = Foo{}
-
diff --git a/ghc/tests/deSugar/should_compile/ds041.stderr b/ghc/tests/deSugar/should_compile/ds041.stderr
deleted file mode 100644 (file)
index 69d5d1f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-ds041.hs:15:
-    Warning: Field `x' is not initialised
-            In the record construction: Foo {}
-            In the definition of `foo': Foo {}
diff --git a/ghc/tests/deSugar/should_compile/ds042.hs b/ghc/tests/deSugar/should_compile/ds042.hs
deleted file mode 100644 (file)
index e3f928d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Guard on a tuple pattern, broke 4.01 due to the
--- !!! special handling of unboxed tuples in desugarer.
-module ShouldCompile where
-
-f :: Int -> (Int,Int)
-f x = 
-  case f x of
-    (a,b) | a > 0 -> f (x-1)
diff --git a/ghc/tests/deSugar/should_compile/ds043.hs b/ghc/tests/deSugar/should_compile/ds043.hs
deleted file mode 100644 (file)
index 5c7d746..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! Checking the exhaustiveness of constructor
--- !!! with labelled fields.
-module ShouldCompile where
-
-data E = B { a,b,c,d,e,f :: Bool }
-
-bug x =
- case x of
-  B _ _ _ _ True False    -> undefined
-  B {e=True, f=False}     -> undefined
-  B {a=a,f=False,e=False} -> undefined
diff --git a/ghc/tests/deSugar/should_compile/ds043.stderr b/ghc/tests/deSugar/should_compile/ds043.stderr
deleted file mode 100644 (file)
index d5f74d7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-ds043.hs:8: Warning: Pattern match(es) are overlapped
-    In a case alternative (B _ _ _ _ True False):
-       B {e = True, f = False} -> ...
diff --git a/ghc/tests/deSugar/should_compile/ds044.hs b/ghc/tests/deSugar/should_compile/ds044.hs
deleted file mode 100644 (file)
index fddf194..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Use of empty record patterns for constructors
--- !!! that don't have any labelled fields. According
--- !!! to the report, this isn't illegal.
-module ShouldCompile where
-
-data F = F Int Int
-       | G
-
-isF F{} = True
-isF _   = False
diff --git a/ghc/tests/deSugar/should_compile/ds045.hs b/ghc/tests/deSugar/should_compile/ds045.hs
deleted file mode 100644 (file)
index 0bbc767..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! N-plus-K pattern in binding
-
--- From: Andreas Marth
--- Sent: Monday, June 07, 1999 5:02 PM
--- To: glasgow-haskell-bugs@majordomo.haskell.org
--- Subject: compiler-bug
-
-module ShouldCompile where
-
-erroR :: Int
-erroR = n where
-                (n+1,_) = (5,2)
-
--- Produced a -dcore-lint error in the desugarer output
--- (Was a missing case in DsHsSyn.collectTypedPatBinders)
diff --git a/ghc/tests/deSugar/should_compile/ds046.hs b/ghc/tests/deSugar/should_compile/ds046.hs
deleted file mode 100644 (file)
index 7096f2b..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-module ShouldCompile where
-
--- Strict field unpacking tests: compile with -O -funbox-strict-fields.
-
--- test 1: simple unboxed int field
-data T = T !Int
-t (T i) = i + 1
-
--- test 2: mutual recursion (should back off from unboxing either field)
-data R = R !S
-data S = S !R
-
-r (R s) = s
-
--- test 3: multi-level unboxing
-data A = A Int !B Int
-data B = B !Int
-
-f = A 1 (B 2) 1
-g (A x (B y) z) = A x (B (y+2)) z
-h (A x (B y) z) = y + 2
-
--- test 4: flattening nested tuples
-data C = C !(Int,Int)
-j (C (a,b)) = a + b
-
--- test 5: polymorphism, multiple strict fields
-data D a b = D Int !(a,b) !(E Int)
-data E a = E a
-k (D a (b,c) (E d)) = a + b + c + d
-
--- test 6: records
-data F a b = F { x :: !Int, y :: !(Float,Float), z :: !(a,b) }
-l F{x = a} = a
-m (F a b c) = a
-n F{z = (a,b)} = a
-
--- test 7: newtypes
-newtype G a b = G (F a b)
-data H a b = H !Int !(G a b) !Int
-o (H y (G (F{ x=x })) z) = x + z
diff --git a/ghc/tests/deSugar/should_compile/ds047.hs b/ghc/tests/deSugar/should_compile/ds047.hs
deleted file mode 100644 (file)
index f6ee2b5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Nullary rec-pats for constructors that hasn't got any labelled
--- !!! fields is legal Haskell, and requires extra care in the desugarer.
-module ShouldCompile where
-
-data X = X Int [Int]
-
-f :: X -> Int
-f (X _ []) = 0
-f X{}      = 1
diff --git a/ghc/tests/deSugar/should_compile/ds048.hs b/ghc/tests/deSugar/should_compile/ds048.hs
deleted file mode 100644 (file)
index 9274aac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! newtypes with a labelled field.
-module ShouldCompile where
-
-newtype Foo = Foo { x :: Int } deriving (Eq)
-
-f :: Foo -> Foo -> Int
-f a b = x a + x b
diff --git a/ghc/tests/deSugar/should_compile/ds049.hs b/ghc/tests/deSugar/should_compile/ds049.hs
deleted file mode 100644 (file)
index 75106ea..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldCompile where
-
--- !!! test lit-lits in patterns
-
-import Addr
-{- Litlits are deprecated, aren't they?!
-litlit_int    (``1''      :: Int)    = 42
-litlit_word   (``1''      :: Word)   = 42
-litlit_char   (`` '\n' '' :: Char)   = 42
-litlit_addr   (``NULL''   :: Addr)   = 42
-litlit_float  (``1.0''    :: Float)  = 42
-litlit_double (``1.0''    :: Double) = 42
--}
\ No newline at end of file
diff --git a/ghc/tests/deSugar/should_compile/ds050.hs b/ghc/tests/deSugar/should_compile/ds050.hs
deleted file mode 100644 (file)
index 4aa20a8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldCompile where
-
-data Q = Q {f :: forall a. a -> a}
-g1 = f
-g2 x = f x
-g3 x y = f x y
diff --git a/ghc/tests/deSugar/should_compile/ds051.hs b/ghc/tests/deSugar/should_compile/ds051.hs
deleted file mode 100644 (file)
index 70c51a7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-module ShouldCompile where
-
--- !!! test the overlapping patterns detection.
-
--- f1 overlaps
-f1 "ab" = []
-f1 "ab" = []
-f1 _ = []
-
--- f2 overlaps
-f2 "ab" = []
-f2 ('a':'b':[]) = []
-f2 _ = []
-
--- f3 overlaps
-f3 ('a':'b':[]) = []
-f3 "ab" = []
-f3 _ = []
-
--- f4 doesn't overlap
-f4 "ab" = []
-f4 ('a':'b':'c':[]) = []
-f4 _ = []
-
--- f5 doesn't overlap
-f5 ('a':'b':'c':[]) = []
-f5 "ab" = []
-f5 _ = []
-
--- f6 doesn't overlap
-f6 "ab" = []
-f6 ('a':[]) = []
-f6 _ = []
diff --git a/ghc/tests/deSugar/should_compile/ds051.stderr b/ghc/tests/deSugar/should_compile/ds051.stderr
deleted file mode 100644 (file)
index 6d4c714..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-ds051.hs:6: Warning: Pattern match(es) are overlapped
-    In the definition of `f1': f1 "ab" = ...
-
-ds051.hs:11: Warning: Pattern match(es) are overlapped
-    In the definition of `f2': f2 ('a' : ('b' : [])) = ...
-
-ds051.hs:16: Warning: Pattern match(es) are overlapped
-    In the definition of `f3': f3 "ab" = ...
diff --git a/ghc/tests/deSugar/should_run/Makefile b/ghc/tests/deSugar/should_run/Makefile
deleted file mode 100644 (file)
index 15977de..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-dsrun005_RUNTEST_OPTS = -x 1
-dsrun007_RUNTEST_OPTS = -x 1
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/deSugar/should_run/dsrun001.hs b/ghc/tests/deSugar/should_run/dsrun001.hs
deleted file mode 100644 (file)
index e40ea2a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-     Check that list comprehensions can be written
-       in do-notation. This actually broke 2.02, with
-       a pattern match failure in dsListComp!
--}
-
-module Main where
-
-main = putStrLn (show theList)
-theList = do x <- [1..3]
-             y <- [1..3]
-             return (x,y)
-
diff --git a/ghc/tests/deSugar/should_run/dsrun001.stdout b/ghc/tests/deSugar/should_run/dsrun001.stdout
deleted file mode 100644 (file)
index a375d0f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)]
diff --git a/ghc/tests/deSugar/should_run/dsrun002.hs b/ghc/tests/deSugar/should_run/dsrun002.hs
deleted file mode 100644 (file)
index acad275..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{- Tests let-expressions in do-statments -}
-
-module Main( main ) where
-
-foo = do
-       putStr "a"
-       let x = "b" in putStr x
-       putStr "c"
-
-main = do
-        putStr "a"
-        foo
-        let x = "b" in putStrLn x
-
diff --git a/ghc/tests/deSugar/should_run/dsrun002.stdout b/ghc/tests/deSugar/should_run/dsrun002.stdout
deleted file mode 100644 (file)
index 660eace..0000000
+++ /dev/null
@@ -1 +0,0 @@
-aabcb
diff --git a/ghc/tests/deSugar/should_run/dsrun003.hs b/ghc/tests/deSugar/should_run/dsrun003.hs
deleted file mode 100644 (file)
index d100bff..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- Tests match on empty field lists 
-
-module Main where
-
-data Person    =  Female {firstName, lastName :: String}
-               |  Male   {firstName, lastName :: String}
-               deriving (Show)
-
-isFemale (Female{})   =  True
-isFemale (Male{})     =  False
-
-main = print (isFemale (Female {firstName = "Jane", lastName = "Smith"}))
-
diff --git a/ghc/tests/deSugar/should_run/dsrun003.stdout b/ghc/tests/deSugar/should_run/dsrun003.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/deSugar/should_run/dsrun004.hs b/ghc/tests/deSugar/should_run/dsrun004.hs
deleted file mode 100644 (file)
index c70dd44..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- Test n+k patterns
-
-module Main where
-
-f (n+1) = n
-
-g :: Int -> Int
-g (n+4) = n
-
-main = print (f 3)     >>
-       print (g 9)
diff --git a/ghc/tests/deSugar/should_run/dsrun004.stdout b/ghc/tests/deSugar/should_run/dsrun004.stdout
deleted file mode 100644 (file)
index 49ae94b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-2
-5
diff --git a/ghc/tests/deSugar/should_run/dsrun005.hs b/ghc/tests/deSugar/should_run/dsrun005.hs
deleted file mode 100644 (file)
index 238a2c3..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-{- 
-
-From: Olaf Chitil <chitil@Informatik.RWTH-Aachen.DE>
-
-It is a problem with 0.29 (which we use for compiling 2.01), it is gone
-in 2.01.
-
-       f :: Eq a => a -> [b] -> [b] -> Bool
-       f a [] [] = (a==a)
-       main = print (f True "" "Hallo")
-
-
-when run after compilation with 0.29 you get:
-Fail: "test.hs", line 6: incomplete pattern(s) to match in function "ds.d5b4"
-
-while 2.01 gives you as desired
-Fail: In pattern-matching: function f{-aYw-}; at test.hs, line 6
-
-The problem is the dictionary, because for the program
-
-       f :: a -> [b] -> [b] -> Bool
-       f a [] [] = True
-       main = print (f True "" "Hallo")
-
-0.29 gives the function name "f" as well.
-
-So it's ok in 2.01, but why did you change the form of the error messages?
-"incomplete pattern(s) to match" is more informative then "In pattern-matching"!
-I even prefer the order of information in the 0.29 error messages.
-
-May I finally repeat that in my opinion the compiler should warn about
-incomplete patterns during compilation. However, I suppose the
-incomplete patterns are just recognised by the desugarer which does
-not produce error messages any more.
-
--}
-
-
-module Main where
-
-f :: Eq a => a -> [b] -> [b] -> Bool
-f a [] [] = (a==a)
-
-main = print (f True "" "Hallo")
-
-
diff --git a/ghc/tests/deSugar/should_run/dsrun005.stderr b/ghc/tests/deSugar/should_run/dsrun005.stderr
deleted file mode 100644 (file)
index 1b77cf3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Fail: dsrun005.hs:42: Non-exhaustive patterns in function f
-
-
diff --git a/ghc/tests/deSugar/should_run/dsrun005.stdout b/ghc/tests/deSugar/should_run/dsrun005.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deSugar/should_run/dsrun006.hs b/ghc/tests/deSugar/should_run/dsrun006.hs
deleted file mode 100644 (file)
index 759c9c5..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-{- 
-Date: Tue, 20 May 1997 05:10:04 GMT
-From: Tomasz Cholewo <tjchol01@mecca.spd.louisville.edu>
-
-ghc-2.03 cannot compile the following code, which I think is correct
-according to the Report
-
-       data X = A {a :: Int} | B {a :: Int}
-
-The error message is: 
-
-    Conflicting definitions for:  a
-       Defined at bug4.lhs:2
-       Defined at bug4.lhs:2
-
-In addition the following snippet
-
-       data X = A {a :: Int}
-       y = let A {a} = x
-           in a
-
-fails with:
-
-    bug4.lhs:4:5: Not a valid LHS on input: "in"
--}
---module Main(main) where
-
-data X = A {a :: Int} | B {a :: Int}
-
-f x = let A {a=a} = x
-      in a
-
-main = print (f (A {a = 3}))
diff --git a/ghc/tests/deSugar/should_run/dsrun006.stdout b/ghc/tests/deSugar/should_run/dsrun006.stdout
deleted file mode 100644 (file)
index 00750ed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/ghc/tests/deSugar/should_run/dsrun007.hs b/ghc/tests/deSugar/should_run/dsrun007.hs
deleted file mode 100644 (file)
index 19a0c64..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-data T = C Int
-
-unpick (C i) = i + 1
-
-main = print (unpick (C{}))
\ No newline at end of file
diff --git a/ghc/tests/deSugar/should_run/dsrun007.stderr b/ghc/tests/deSugar/should_run/dsrun007.stderr
deleted file mode 100644 (file)
index f8ad0ca..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Fail: dsrun007.hs:5: Missing field in record construction 
-
-
diff --git a/ghc/tests/deriving/Makefile b/ghc/tests/deriving/Makefile
deleted file mode 100644 (file)
index 8712974..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_fail should_compile should_run
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/deriving/should_compile/Makefile b/ghc/tests/deriving/should_compile/Makefile
deleted file mode 100644 (file)
index 5144794..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deriving/should_compile/drv001.hs b/ghc/tests/deriving/should_compile/drv001.hs
deleted file mode 100644 (file)
index 694af6a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
--- !!! canonical weird example for "deriving"
-module ShouldSucceed where
-
-data X a b
-  = C1 (T a)
-  | C2 (Y b)
-  | C3 (X b a)
-  deriving (Read, Show)
-
-data Y b
-  = D1
-  | D2 (X Int b)
-  deriving (Read, Show)
-
-data T a
-  = E1
-
-instance Eq a => Show (T a) where
-    showsPrec = error "show"
-instance Eq a => Read (T a) where
-    readsPrec = error "read"
diff --git a/ghc/tests/deriving/should_compile/drv001.stderr b/ghc/tests/deriving/should_compile/drv001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv002.hs b/ghc/tests/deriving/should_compile/drv002.hs
deleted file mode 100644 (file)
index 15eb2d9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module ShouldSucceed where
-
-data Z a b
-  = C1 (T a)
-  | C2 (Z [a] [b])
-  deriving (Show, Read)
-
-data T a
-  = E1
-
-instance Eq a => Show (T a) where
-    showsPrec = error "show"
-instance Eq a => Read (T a) where
-    readsPrec = error "read"
diff --git a/ghc/tests/deriving/should_compile/drv002.stderr b/ghc/tests/deriving/should_compile/drv002.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv003.hs b/ghc/tests/deriving/should_compile/drv003.hs
deleted file mode 100644 (file)
index 0b8149c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! This is the example given in TcDeriv
---
-module ShouldSucceed where
-
-data T a b
-  = C1 (Foo a) (Bar b) 
-  | C2 Int (T b a) 
-  | C3 (T a a)
-  deriving Eq
-
-data Foo a = MkFoo Double a deriving ()
-instance (Eq a) => Eq (Foo a)
-
-data Bar a = MkBar Int Int deriving ()
-instance (Ping b) => Eq (Bar b)
-
-class Ping a
diff --git a/ghc/tests/deriving/should_compile/drv003.stderr b/ghc/tests/deriving/should_compile/drv003.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv004.hs b/ghc/tests/deriving/should_compile/drv004.hs
deleted file mode 100644 (file)
index 324a7f8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! simple example of deriving Ord and Eq simultaneously
---
-module ShouldSucceed where
-
-data Foo a b c
-  = C1 a Int
-  | C2 b Double
-  | C3 c String
-  deriving (Eq, Ord)
diff --git a/ghc/tests/deriving/should_compile/drv004.stderr b/ghc/tests/deriving/should_compile/drv004.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv005.hs b/ghc/tests/deriving/should_compile/drv005.hs
deleted file mode 100644 (file)
index 527dde9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! simple example of deriving Enum
---
-module ShouldSucceed where
-
-data Foo = Foo1 | Foo2 | Foo3 | Foo4 | Foo5 | Foo6 | Foo7 | Foo8
-        deriving Enum
diff --git a/ghc/tests/deriving/should_compile/drv005.stderr b/ghc/tests/deriving/should_compile/drv005.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv006.hs b/ghc/tests/deriving/should_compile/drv006.hs
deleted file mode 100644 (file)
index d2a88fd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! simple examples of deriving Ix
---
-module ShouldSucceed where
-import Ix
-
-data Foo = Foo1 | Foo2 | Foo3 | Foo4 | Foo5 | Foo6 | Foo7 | Foo8
-        deriving (Eq, Ord, Ix, Show)
-
-data Bar a b = MkBar a Int b Integer a
diff --git a/ghc/tests/deriving/should_compile/drv006.stderr b/ghc/tests/deriving/should_compile/drv006.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv007.hs b/ghc/tests/deriving/should_compile/drv007.hs
deleted file mode 100644 (file)
index 22da5b4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! deriving Ord on d. type with a single nullary constructor.
--- (from ghc-2.10 panic - as reported by Sergey Mechveliani <mechvel@botik.ru>)
---  
-module ShouldSucceed where
-
-data D = D deriving (Eq,Ord)
diff --git a/ghc/tests/deriving/should_compile/drv007.stderr b/ghc/tests/deriving/should_compile/drv007.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv008.hs b/ghc/tests/deriving/should_compile/drv008.hs
deleted file mode 100644 (file)
index c374193..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! deriving Ix on d. type with nullary constructors
-module ShouldSucceed where
-
-import Ix
-
-data AD = A | B | C | D deriving (Show, Ord, Eq, Ix)
-
diff --git a/ghc/tests/deriving/should_compile/drv008.stderr b/ghc/tests/deriving/should_compile/drv008.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv009.hs b/ghc/tests/deriving/should_compile/drv009.hs
deleted file mode 100644 (file)
index 10e889e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! deriving Ix on d. type with one constructor
-module ShouldSucceed where
-
-import Ix
-
-data Pair a b = Pair a b deriving (Show, Ord, Eq, Ix)
diff --git a/ghc/tests/deriving/should_compile/drv009.stderr b/ghc/tests/deriving/should_compile/drv009.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv010.hs b/ghc/tests/deriving/should_compile/drv010.hs
deleted file mode 100644 (file)
index 1a3f9dc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! deriving Enum on d. type with nullary constructors
-module ShouldSucceed where
-
-data AD = A | B | C | D deriving (Enum)
diff --git a/ghc/tests/deriving/should_compile/drv010.stderr b/ghc/tests/deriving/should_compile/drv010.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/deriving/should_compile/drv011.hs b/ghc/tests/deriving/should_compile/drv011.hs
deleted file mode 100644 (file)
index bba25f5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! deriving Enum, but not Ord.
-module ShouldSucceed where
-
-data ABC = A | B | C deriving Enum
-
-x = [A ..C]
diff --git a/ghc/tests/deriving/should_fail/Makefile b/ghc/tests/deriving/should_fail/Makefile
deleted file mode 100644 (file)
index c2170a4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_fail.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deriving/should_fail/drvfail001.hs b/ghc/tests/deriving/should_fail/drvfail001.hs
deleted file mode 100644 (file)
index aa7867f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{-  From: Ian Bayley 
-    Sent: Tuesday, June 29, 1999 3:39 PM
-    To: hugs-bugs@haskell.org
-    Subject: Show for higher-order nested datatypes
-    
-    
-    Is "deriving Show" meant to work for higher-order nested datatypes ?
-    Hugs hangs when loading in the following file:
--}
-
-module Foo where
-
-type SqMat a = SM Nil a
-
-data SM f a = ZeroS (f (f a)) | SuccS (SM (Cons f) a) 
-                      deriving Show
-
-
-data Nil a = MkNil deriving Show
-
-data Cons f a = MkCons a (f a)
-                      deriving Show
-
-
-
diff --git a/ghc/tests/deriving/should_fail/drvfail001.stderr b/ghc/tests/deriving/should_fail/drvfail001.stderr
deleted file mode 100644 (file)
index bdbfca6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-drvfail001.hs:21:
-    No instance for `Show (f a)'
-    When deriving classes for `Cons'
diff --git a/ghc/tests/deriving/should_fail/drvfail004.hs b/ghc/tests/deriving/should_fail/drvfail004.hs
deleted file mode 100644 (file)
index 8716a58..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! deriving Ord without deriving Eq
---
-module ShouldFail where
-
-data Foo a b
-  = C1 a Int
-  | C2 b Double
-  deriving Ord
-
diff --git a/ghc/tests/deriving/should_fail/drvfail004.stderr b/ghc/tests/deriving/should_fail/drvfail004.stderr
deleted file mode 100644 (file)
index 523ddc9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-drvfail004.hs:5:
-    Could not deduce `Eq (Foo a b)' from the context (Ord a, Ord b)
-    Probable fix:
-       Add `Eq (Foo a b)' to the instance declaration context
-       Or add an instance declaration for `Eq (Foo a b)'
-    arising from the instance declaration at drvfail004.hs:5
-    In the instance declaration for `Ord (Foo a b)'
diff --git a/ghc/tests/deriving/should_fail/drvfail007.hs b/ghc/tests/deriving/should_fail/drvfail007.hs
deleted file mode 100644 (file)
index 74f9f03..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! buggy deriving with function type, reported by Sigbjorn Finne
-module ShouldFail where
-
-data Foo = Foo (Int -> Int) deriving Eq
diff --git a/ghc/tests/deriving/should_fail/drvfail007.stderr b/ghc/tests/deriving/should_fail/drvfail007.stderr
deleted file mode 100644 (file)
index 98445e4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-drvfail007.hs:4:
-    No instance for `Eq (Int -> Int)'
-    When deriving classes for `Foo'
diff --git a/ghc/tests/deriving/should_run/Makefile b/ghc/tests/deriving/should_run/Makefile
deleted file mode 100644 (file)
index 1723332..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-drvrun008_HC_OPTS += -funbox-strict-fields
-
-drvrun005_RUNTEST_OPTS += -fail
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/deriving/should_run/drvrun001.hs b/ghc/tests/deriving/should_run/drvrun001.hs
deleted file mode 100644 (file)
index b6bd259..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- Test newtype derived instances
-
-newtype Age = MkAge Int deriving (Eq, Show)
-
-instance Num Age where
-  (+) (MkAge a) (MkAge b) = MkAge (a+b)
-  (*)         = undefined
-  negate      = undefined
-  abs         = undefined
-  signum      = undefined
-  fromInteger = undefined
-
-main = print (MkAge 3 + MkAge 5)
diff --git a/ghc/tests/deriving/should_run/drvrun001.stdout b/ghc/tests/deriving/should_run/drvrun001.stdout
deleted file mode 100644 (file)
index bbfb2f6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-MkAge 8
diff --git a/ghc/tests/deriving/should_run/drvrun002.hs b/ghc/tests/deriving/should_run/drvrun002.hs
deleted file mode 100644 (file)
index 26497bd..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! Deriving Show/Read for type with labelled fields.
---     (based on a Hugs bug report.)
-module Main(main) where
-
-data Options = 
-   Options { s :: OptionKind } 
-   deriving (Show, Read)
-
-data OptionKind = 
-   SpecialOptions { test :: Int }
-   deriving (Show, Read)
-
-x = Options{s=SpecialOptions{test=42}}
-
-main = do
-  print x
-  print ((read (show x))::Options)
diff --git a/ghc/tests/deriving/should_run/drvrun002.stdout b/ghc/tests/deriving/should_run/drvrun002.stdout
deleted file mode 100644 (file)
index 183c213..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Options{s=(SpecialOptions{test=42})}
-Options{s=(SpecialOptions{test=42})}
diff --git a/ghc/tests/deriving/should_run/drvrun003.hs b/ghc/tests/deriving/should_run/drvrun003.hs
deleted file mode 100644 (file)
index bb74861..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--- !!! Deriving Show/Read for nullary constructors.
-module Main(main) where
-
-data A = B | C deriving ( Show, Read )
-
-data Opt = N | Y A deriving (Show, Read)
-
-x = Y B
-
-{-
- If the Haskell report's specification of how Show instances
- are to be derived is followed to the letter, the code for
- a nullary constructor would put parens around the constructor
- when (showsPrec 10) is used. This would cause
-
-      Y A
-
- to be showed as
-      Y (A)
-
- Overkill, so ghc's derived Show code treats nullary
- constructors specially.
--}
-
-main = do
-  print x
-  print ((read (show x))::Opt)
-  print ((read "Y (B)")::Opt)
-
diff --git a/ghc/tests/deriving/should_run/drvrun003.stdout b/ghc/tests/deriving/should_run/drvrun003.stdout
deleted file mode 100644 (file)
index 584cfcd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Y B
-Y B
-Y B
diff --git a/ghc/tests/deriving/should_run/drvrun004.hs b/ghc/tests/deriving/should_run/drvrun004.hs
deleted file mode 100644 (file)
index f530803..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module Main where
-
-data Hash = Hash{ (#) :: Int }
- deriving (Show, Read)
-
-main =
-  do print s
-     print (read s :: Hash)
- where
-  s = show (Hash 3)
diff --git a/ghc/tests/deriving/should_run/drvrun004.stdout b/ghc/tests/deriving/should_run/drvrun004.stdout
deleted file mode 100644 (file)
index c9f6f36..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-"Hash{(#)=3}"
-Hash{(#)=3}
diff --git a/ghc/tests/deriving/should_run/drvrun005.hs b/ghc/tests/deriving/should_run/drvrun005.hs
deleted file mode 100644 (file)
index a1014c5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-module Main where
-
-{-
-  If a fixity declaration hasn't been supplied for
-  an operator, it is defaulted to being "infixl 9".
-
-  The derived Read instances for data types containing
-  left-assoc constructors produces code that causes
-  non-termination if you use 'read' to evaluate them
-  ( (head (reads x)) is cool tho.)
-
-  ==> The inferred assoc for :++ below left & the derived
-  Read instance should fail to terminate (with ghc-4.xx,
-  this is exemplified by having the stack overflow.)
--}
--- infixl 9 :++
-data T = T1 |  T :++ T  deriving (Eq,Show, Read)
-
-t :: T
-t = read "T1"
-
-main = do
-  print ((fst (head (reads "T1"))) :: T)
-  print t
diff --git a/ghc/tests/deriving/should_run/drvrun005.stderr b/ghc/tests/deriving/should_run/drvrun005.stderr
deleted file mode 100644 (file)
index 68c824b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Stack space overflow: current size 1048576 bytes.
-Use `+RTS -Ksize' to increase it.
diff --git a/ghc/tests/deriving/should_run/drvrun005.stdout b/ghc/tests/deriving/should_run/drvrun005.stdout
deleted file mode 100644 (file)
index df24da6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-T1
diff --git a/ghc/tests/deriving/should_run/drvrun006.hs b/ghc/tests/deriving/should_run/drvrun006.hs
deleted file mode 100644 (file)
index 3d26801..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
--- !!! Show/Read deriving example given in the Haskell Report.
-module Main(main) where
-
-infix 4 :^:
-data Tree a 
-  =  Leaf a  | (Tree a) :^: (Tree a)
-     deriving (Show, Read)
-
-val1 :: Tree Int
-val1 = Leaf 2
-
-val2 :: Tree Int
-val2 = Leaf 2 :^: Leaf (-1)
-
-main = do
-  print val1
-  print val2
-
-  print ((read (show val1))::Tree Int)
-  print ((read (show val2))::Tree Int)
-  print ((read (show val1))::Tree Integer)
-  print ((read (show val2))::Tree Integer)
-
-{- What you'll want
-instance (Show a) => Show (Tree a) where
-
-        showsPrec d (Leaf m) = showParen (d >= 10) showStr
-         where
-             showStr = showString "Leaf " . showsPrec 10 m
-
-        showsPrec d (u :^: v) = showParen (d > 4) showStr
-         where
-             showStr = showsPrec 5 u . 
-                       showString " :^: " .
-                       showsPrec 5 v
-
-instance (Read a) => Read (Tree a) where
-
-       readsPrec d r =  readParen (d > 4)
-                        (\r -> [(u:^:v,w) |
-                                (u,s) <- readsPrec 5 r,
-                                (":^:",t) <- lex s,
-                                (v,w) <- readsPrec 5 t]) r
-
-                     ++ readParen (d > 9)
-                        (\r -> [(Leaf m,t) |
-                                ("Leaf",s) <- lex r,
-                                (m,t) <- readsPrec 10 s]) r
--}
diff --git a/ghc/tests/deriving/should_run/drvrun006.stdout b/ghc/tests/deriving/should_run/drvrun006.stdout
deleted file mode 100644 (file)
index fe1beee..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Leaf 2
-Leaf 2 :^: Leaf (-1)
-Leaf 2
-Leaf 2 :^: Leaf (-1)
-Leaf 2
-Leaf 2 :^: Leaf (-1)
diff --git a/ghc/tests/deriving/should_run/drvrun007.hs b/ghc/tests/deriving/should_run/drvrun007.hs
deleted file mode 100644 (file)
index 5c26c34..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Main( main ) where
--- This one crashed Hugs98
-
-data X = X | X :\ X  deriving Show
-
-main = putStrLn (show (X :\ X))
diff --git a/ghc/tests/deriving/should_run/drvrun007.stdout b/ghc/tests/deriving/should_run/drvrun007.stdout
deleted file mode 100644 (file)
index fe13f39..0000000
+++ /dev/null
@@ -1 +0,0 @@
-X :\ X
diff --git a/ghc/tests/deriving/should_run/drvrun008.hs b/ghc/tests/deriving/should_run/drvrun008.hs
deleted file mode 100644 (file)
index 7fe7799..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Check that -funbox-strict-fields doesn't mess up deriving (can't be in an options pragma, it's in the Makefile)
--- !!!  (it did in 4.04)
-
-module Main( main ) where
-
-data X = X !Int deriving Eq
-
-main = putStrLn (show (X 2 == X 2))
diff --git a/ghc/tests/deriving/should_run/drvrun008.stdout b/ghc/tests/deriving/should_run/drvrun008.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/lib/CPUTime/CPUTime001.hs b/ghc/tests/lib/CPUTime/CPUTime001.hs
deleted file mode 100644 (file)
index 807bbb7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! Test getCPUTime
-
-import IO
-import CPUTime
-
-main :: IO ()
-main = do
-    t28 <- timeFib 28
-    t29 <- timeFib 29
-    t30 <- timeFib 30
-    print (t28 <= t29, t29 <= t30)
-
-timeFib :: Integer -> IO Integer
-timeFib n = do
-    start <- getCPUTime
-    print (nfib n)
-    end <- getCPUTime
-    return (end - start)
-
-nfib :: Integer -> Integer
-nfib n 
-  | n <= 1 = 1
-  | otherwise = (n1 + n2 + 1)
-  where 
-    n1 = nfib (n-1) 
-    n2 = nfib (n-2)
diff --git a/ghc/tests/lib/CPUTime/CPUTime001.stdout b/ghc/tests/lib/CPUTime/CPUTime001.stdout
deleted file mode 100644 (file)
index 032e759..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-1028457
-1664079
-2692537
-(True,True)
diff --git a/ghc/tests/lib/CPUTime/Makefile b/ghc/tests/lib/CPUTime/Makefile
deleted file mode 100644 (file)
index 4846508..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:24 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/Directory/Makefile b/ghc/tests/lib/Directory/Makefile
deleted file mode 100644 (file)
index 4846508..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:24 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/Directory/currentDirectory001.hs b/ghc/tests/lib/Directory/currentDirectory001.hs
deleted file mode 100644 (file)
index bcf9b96..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import Directory (getCurrentDirectory, setCurrentDirectory, 
-                     createDirectory, removeDirectory, getDirectoryContents)
-
-main = do
-    oldpwd <- getCurrentDirectory
-    createDirectory "foo"
-    setCurrentDirectory "foo"
-    ~[n1, n2] <- getDirectoryContents "."
-    if dot n1 && dot n2 
-     then do
-        setCurrentDirectory oldpwd
-        removeDirectory "foo"
-        putStr "Okay\n"
-      else
-        ioError (userError "Oops")
-
-dot :: String -> Bool
-dot "." = True
-dot ".." = True
-dot _ = False
diff --git a/ghc/tests/lib/Directory/currentDirectory001.stdout b/ghc/tests/lib/Directory/currentDirectory001.stdout
deleted file mode 100644 (file)
index 1ddd42b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Okay
diff --git a/ghc/tests/lib/Directory/directory001.hs b/ghc/tests/lib/Directory/directory001.hs
deleted file mode 100644 (file)
index c04a015..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-import IO
-
-import Directory
-
-main = do
-    createDirectory "foo"
-    h <- openFile "foo/bar" WriteMode
-    hPutStr h "Okay\n"
-    hClose h
-    renameFile "foo/bar" "foo/baz"
-    renameDirectory "foo" "bar"
-    h <- openFile "bar/baz" ReadMode
-    stuff <- hGetContents h
-    putStr stuff
---    hClose h  -- an error !
-    removeFile "bar/baz"
-    removeDirectory "bar"
diff --git a/ghc/tests/lib/Directory/directory001.stdout b/ghc/tests/lib/Directory/directory001.stdout
deleted file mode 100644 (file)
index 1ddd42b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Okay
diff --git a/ghc/tests/lib/Directory/getDirectoryContents001.hs b/ghc/tests/lib/Directory/getDirectoryContents001.hs
deleted file mode 100644 (file)
index 7c48a93..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-import Directory (getDirectoryContents)
-import List (sort, isPrefixOf, isSuffixOf)
-
-main = do
-    names <- getDirectoryContents "."
-    putStrLn (unlines (sort (filter ok names)))
-
-ok name = "getDirectoryContents" `isPrefixOf` name 
-         && not ("bak" `isSuffixOf` name)
diff --git a/ghc/tests/lib/Directory/getDirectoryContents001.stdout b/ghc/tests/lib/Directory/getDirectoryContents001.stdout
deleted file mode 100644 (file)
index 0f93ceb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-getDirectoryContents001.bin
-getDirectoryContents001.hs
-getDirectoryContents001.o
-getDirectoryContents001.stdout
-
diff --git a/ghc/tests/lib/Directory/getPermissions001.hs b/ghc/tests/lib/Directory/getPermissions001.hs
deleted file mode 100644 (file)
index a52da9d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-import Directory
-
-main = do
-  p <- getPermissions "."
-  print p
-  p <- getPermissions "getPermissions001.hs"
-  print p
-  p <- getPermissions "getPermissions001.bin"
-  print p
diff --git a/ghc/tests/lib/Directory/getPermissions001.stdout b/ghc/tests/lib/Directory/getPermissions001.stdout
deleted file mode 100644 (file)
index b827957..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Permissions{readable=True,writable=True,executable=False,searchable=True}
-Permissions{readable=True,writable=True,executable=False,searchable=False}
-Permissions{readable=True,writable=True,executable=True,searchable=False}
diff --git a/ghc/tests/lib/Directory/getPermissions001.stdout-mingw b/ghc/tests/lib/Directory/getPermissions001.stdout-mingw
deleted file mode 100644 (file)
index b200d03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Permissions{readable=True,writable=True,executable=True,searchable=True}
-Permissions{readable=True,writable=True,executable=True,searchable=True}
-Permissions{readable=True,writable=True,executable=True,searchable=True}
diff --git a/ghc/tests/lib/IO/IOError001.hs b/ghc/tests/lib/IO/IOError001.hs
deleted file mode 100644 (file)
index dee7f31..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
--- test for a bug in GHC <= 4.08.2: handles were being left locked after
--- being shown in an error message.
-main = do
-  getContents
-  catch getChar (\e -> print e >> return 'x')
-  catch getChar (\e -> print e >> return 'x')
diff --git a/ghc/tests/lib/IO/IOError001.stdout b/ghc/tests/lib/IO/IOError001.stdout
deleted file mode 100644 (file)
index be4d8b8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-illegal operation
-Action: hGetChar
-Handle: {loc=<stdin>,type=semi-closed,binary=False,buffering=block (8192)}
-Reason: handle is closed
-File: <stdin>
-illegal operation
-Action: hGetChar
-Handle: {loc=<stdin>,type=semi-closed,binary=False,buffering=block (8192)}
-Reason: handle is closed
-File: <stdin>
diff --git a/ghc/tests/lib/IO/IOError001.stdout-mingw b/ghc/tests/lib/IO/IOError001.stdout-mingw
deleted file mode 100644 (file)
index 2a13bc1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-illegal operation
-Action: hGetChar
-Handle: {loc=<stdin>,type=semi-closed,binary=False,buffering=block (512)}
-Reason: handle is closed
-File: <stdin>
-illegal operation
-Action: hGetChar
-Handle: {loc=<stdin>,type=semi-closed,binary=False,buffering=block (512)}
-Reason: handle is closed
-File: <stdin>
diff --git a/ghc/tests/lib/IO/Makefile b/ghc/tests/lib/IO/Makefile
deleted file mode 100644 (file)
index 05bbe3b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.8 2001/06/07 10:45:30 sewardj Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint -cpp
-
-hGetBuffering001_RUNTEST_OPTS += -i hGetBuffering001.hs
-hSetBuffering002_RUNTEST_OPTS += -i hSetBuffering002.hs
-hSetBuffering003_RUNTEST_OPTS += -i hSetBuffering003.hs
-misc001_RUNTEST_OPTS          += misc001.hs misc001.out
-hGetChar001_RUNTEST_OPTS      += -i hGetChar001.stdin
-openFile002_RUNTEST_OPTS      += -x 1
-IOError001_RUNTEST_OPTS       += -i IOError001.hs -o1 IOError001.stdout-mingw
-readwrite002_RUNTEST_OPTS     += -i readwrite002.hs
-hGetLine001_RUNTEST_OPTS      += -i hGetLine001.hs -o1 hGetLine001.stdout-mingw
-hFileSize001_RUNTEST_OPTS     += -o1 hFileSize001.stdout-mingw
-hSeek004_RUNTEST_OPTS         += -o1 hSeek004.stdout-mingw
-hGetPosn001_RUNTEST_OPTS      += -o1 hGetPosn001.stdout-mingw
-openFile003_RUNTEST_OPTS      += -o1 openFile003.stdout-mingw
-openFile005_RUNTEST_OPTS      += -o1 openFile005.stdout-mingw
-
-.PRECIOUS: %.o %.bin
-
-CLEAN_FILES += *.out* *.inout
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/IO/finalization001.hs b/ghc/tests/lib/IO/finalization001.hs
deleted file mode 100644 (file)
index a4b4b28..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
---- !!! test for bug in handle finalization fixed in 
---- !!!  1.60      +1 -2      fptools/ghc/lib/std/PrelHandle.lhs
---- !!!  1.15      +4 -10     fptools/ghc/lib/std/PrelIO.lhs
-
-module Main (main) where
-
-import IO
-import System
-
-doTest :: IO ()
-doTest = do
-  sd <- openFile "finalization001.hs" ReadWriteMode
-  result <- hGetContents sd
-  slurp result
-  hClose sd
-  if "" `elem` lines (filter (/= '\r') result)
-   then
-    putStrLn "ok"
-   else
-    putStrLn "fail"
-
-slurp :: String -> IO ()
-slurp [] = return ()
-slurp (x:xs) = x `seq` slurp xs
-
-main :: IO ()
-main = sequence_ (take 200 (repeat doTest))
diff --git a/ghc/tests/lib/IO/finalization001.stdout b/ghc/tests/lib/IO/finalization001.stdout
deleted file mode 100644 (file)
index ec04732..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/ghc/tests/lib/IO/hClose001.hs b/ghc/tests/lib/IO/hClose001.hs
deleted file mode 100644 (file)
index fe237d3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-import IO
-
-main = do
-  hClose stderr
-  hPutStr stderr "junk" `catch` \ err -> if isIllegalOperation err then putStr "Okay\n" else error "Not okay\n"
diff --git a/ghc/tests/lib/IO/hClose001.stdout b/ghc/tests/lib/IO/hClose001.stdout
deleted file mode 100644 (file)
index 1ddd42b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Okay
diff --git a/ghc/tests/lib/IO/hFileSize001.hs b/ghc/tests/lib/IO/hFileSize001.hs
deleted file mode 100644 (file)
index 6326425..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-import IO
-
--- !!! test hFileSize
-
-main = do
-    h  <- openFile "hFileSize001.hs" ReadMode
-    sz <- hFileSize h
-    print sz
diff --git a/ghc/tests/lib/IO/hFileSize001.stdout b/ghc/tests/lib/IO/hFileSize001.stdout
deleted file mode 100644 (file)
index d136d6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-125
diff --git a/ghc/tests/lib/IO/hFileSize001.stdout-mingw b/ghc/tests/lib/IO/hFileSize001.stdout-mingw
deleted file mode 100644 (file)
index 6a4573e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-133
diff --git a/ghc/tests/lib/IO/hFileSize002.hs b/ghc/tests/lib/IO/hFileSize002.hs
deleted file mode 100644 (file)
index d2213bf..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
--- !!! Testing IO.hFileSize
-module Main(main) where
-
-import IO
-import Directory ( removeFile, doesFileExist )
-import Monad
-
-main = do
-  sz <- hFileSize stdin `catch` (\ _ -> return (-1))
-  print sz
-  let fn = "hFileSize002.out"
-  f <- doesFileExist fn
-  when f (removeFile fn)
-  hdl <- openFile fn WriteMode
-  hPutStr hdl "file_size"
-   -- with default buffering
-  sz <- hFileSize hdl
-  print sz
-
-  hSetBuffering hdl NoBuffering
-  hPutStr hdl "file_size"
-   -- with no buffering
-  sz <- hFileSize hdl
-  print sz
-  hSetBuffering hdl LineBuffering
-  hPutStr hdl "file_size"
-   -- with line buffering
-  sz <- hFileSize hdl
-  print sz
-  hSetBuffering hdl (BlockBuffering (Just 4))
-   -- with block buffering
-  hPutStr hdl "file_size"
-  sz <- hFileSize hdl
-  print sz
-  hClose hdl
diff --git a/ghc/tests/lib/IO/hFileSize002.stdout b/ghc/tests/lib/IO/hFileSize002.stdout
deleted file mode 100644 (file)
index 23dd734..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--1
-9
-18
-27
-36
diff --git a/ghc/tests/lib/IO/hFlush001.hs b/ghc/tests/lib/IO/hFlush001.hs
deleted file mode 100644 (file)
index 059b3ad..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
--- !!! Flushing
-module Main(main) where
-
-import IO
-import Directory ( removeFile, doesFileExist )
-import Monad
-
-main = do
-  hFlush stdin `catch` \ _ -> putStrLn "No can do - flushing read-only handles isn't legal"
-  putStr "Hello,"
-  hFlush stdout
-  putStr "Hello - "
-  hFlush stderr
-  hdl <- openFile "hFlush001.hs" ReadMode
-  hFlush hdl `catch` \ _ -> putStrLn "No can do - flushing read-only handles isn't legal"
-  hClose hdl
-  remove
-  hdl <- openFile "hFlush001.out" WriteMode
-  hFlush hdl
-  hClose hdl
-  remove
-  hdl <- openFile "hFlush001.out" AppendMode
-  hFlush hdl
-  hClose hdl
-  remove
-  hdl <- openFile "hFlush001.out" ReadWriteMode
-  hFlush hdl
-  hClose hdl
- where remove = do
-         f <- doesFileExist "hFlush001.out"
-         when f (removeFile "hFlush001.out")
diff --git a/ghc/tests/lib/IO/hFlush001.stdout b/ghc/tests/lib/IO/hFlush001.stdout
deleted file mode 100644 (file)
index 0954a7a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-No can do - flushing read-only handles isn't legal
-Hello,Hello - No can do - flushing read-only handles isn't legal
diff --git a/ghc/tests/lib/IO/hGetBuffering001.hs b/ghc/tests/lib/IO/hGetBuffering001.hs
deleted file mode 100644 (file)
index 9b956b0..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-import IO
-
-main = 
-    sequence (map hIsOpen [stdin, stdout, stderr]) >>= \ opens ->
-    print opens >>
-    sequence (map hIsClosed [stdin, stdout, stderr]) >>= \ closeds ->
-    print closeds >>
-    sequence (map hIsReadable [stdin, stdout, stderr]) >>= \ readables ->
-    print readables >>
-    sequence (map hIsWritable [stdin, stdout, stderr]) >>= \ writables ->
-    print writables >>
-    sequence (map hIsBlockBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    print buffereds >>
-    sequence (map hIsLineBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    print buffereds >>
-    sequence (map hIsNotBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    print buffereds
-  where
-    hIsBlockBuffered h = hGetBuffering h >>= \ b -> return $ case b of { BlockBuffering _ -> True; _ -> False }
-    hIsLineBuffered  h = hGetBuffering h >>= \ b -> return $ case b of { LineBuffering -> True; _ -> False }
-    hIsNotBuffered   h = hGetBuffering h >>= \ b -> return $ case b of { NoBuffering -> True; _ -> False }
diff --git a/ghc/tests/lib/IO/hGetBuffering001.stdout b/ghc/tests/lib/IO/hGetBuffering001.stdout
deleted file mode 100644 (file)
index 75b9a13..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[True,True,True]
-[False,False,False]
-[True,False,False]
-[False,True,True]
-[True,True,False]
-[False,False,False]
-[False,False,True]
diff --git a/ghc/tests/lib/IO/hGetChar001.hs b/ghc/tests/lib/IO/hGetChar001.hs
deleted file mode 100644 (file)
index 18ba4fe..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-import IO
-
-main = do
- hSetBuffering stdout NoBuffering
- putStr   "Enter an integer: "
- x1 <- readLine
- putStr   "Enter another integer: "
- x2 <- readLine
- putStr  ("Their sum is " ++ show (read x1 + read x2 :: Int) ++ "\n")
-
- where readLine = do
-           eof <- isEOF
-           if eof then return [] else do
-           c <- getChar
-          if c `elem` ['\n','\r'] 
-               then return []
-                else do cs <- readLine
-                        return (c:cs)
diff --git a/ghc/tests/lib/IO/hGetChar001.stdin b/ghc/tests/lib/IO/hGetChar001.stdin
deleted file mode 100644 (file)
index 2510fca..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-42
--7
diff --git a/ghc/tests/lib/IO/hGetChar001.stdout b/ghc/tests/lib/IO/hGetChar001.stdout
deleted file mode 100644 (file)
index 47d4185..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Enter an integer: Enter another integer: Their sum is 35
diff --git a/ghc/tests/lib/IO/hGetLine001.hs b/ghc/tests/lib/IO/hGetLine001.hs
deleted file mode 100644 (file)
index 2f612ad..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
diff --git a/ghc/tests/lib/IO/hGetLine001.stdout b/ghc/tests/lib/IO/hGetLine001.stdout
deleted file mode 100644 (file)
index a7171ce..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
diff --git a/ghc/tests/lib/IO/hGetLine001.stdout-mingw b/ghc/tests/lib/IO/hGetLine001.stdout-mingw
deleted file mode 100644 (file)
index d3dc4ef..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
--- !!! testing hGetLine
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- one version of 'cat'
-main = do
-  let loop h = do b <- hIsEOF h
-                 if b then return ()
-                      else do l <- hGetLine h; putStrLn l; loop h
-  loop stdin 
-
-  h <- openFile "hGetLine001.hs" ReadMode
-
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-
-  hSetBuffering h NoBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h LineBuffering
-  loop h
-
-  hSeek h AbsoluteSeek 0
-  hSetBuffering h (BlockBuffering (Just 83))
-  loop h
--- !!! testing hGetLine\r
-\r
-import IO\r
-#if defined(__MINGW32__)\r
-import PrelHandle(hSetBinaryMode)\r
-#endif\r
-\r
--- one version of 'cat'\r
-main = do\r
-  let loop h = do b <- hIsEOF h\r
-                 if b then return ()\r
-                      else do l <- hGetLine h; putStrLn l; loop h\r
-  loop stdin \r
-\r
-  h <- openFile "hGetLine001.hs" ReadMode\r
-\r
-# if defined(__MINGW32__)\r
-  hSetBinaryMode h True\r
-# endif\r
-\r
-  hSetBuffering h NoBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h LineBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h (BlockBuffering (Just 83))\r
-  loop h\r
--- !!! testing hGetLine\r
-\r
-import IO\r
-#if defined(__MINGW32__)\r
-import PrelHandle(hSetBinaryMode)\r
-#endif\r
-\r
--- one version of 'cat'\r
-main = do\r
-  let loop h = do b <- hIsEOF h\r
-                 if b then return ()\r
-                      else do l <- hGetLine h; putStrLn l; loop h\r
-  loop stdin \r
-\r
-  h <- openFile "hGetLine001.hs" ReadMode\r
-\r
-# if defined(__MINGW32__)\r
-  hSetBinaryMode h True\r
-# endif\r
-\r
-  hSetBuffering h NoBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h LineBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h (BlockBuffering (Just 83))\r
-  loop h\r
--- !!! testing hGetLine\r
-\r
-import IO\r
-#if defined(__MINGW32__)\r
-import PrelHandle(hSetBinaryMode)\r
-#endif\r
-\r
--- one version of 'cat'\r
-main = do\r
-  let loop h = do b <- hIsEOF h\r
-                 if b then return ()\r
-                      else do l <- hGetLine h; putStrLn l; loop h\r
-  loop stdin \r
-\r
-  h <- openFile "hGetLine001.hs" ReadMode\r
-\r
-# if defined(__MINGW32__)\r
-  hSetBinaryMode h True\r
-# endif\r
-\r
-  hSetBuffering h NoBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h LineBuffering\r
-  loop h\r
-\r
-  hSeek h AbsoluteSeek 0\r
-  hSetBuffering h (BlockBuffering (Just 83))\r
-  loop h\r
diff --git a/ghc/tests/lib/IO/hGetPosn001.hs b/ghc/tests/lib/IO/hGetPosn001.hs
deleted file mode 100644 (file)
index c1b6836..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
--- !!! Test file positioning
-
-module Main(main) where
-
-import IO
-import Monad
-import Directory (removeFile, doesFileExist)
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  hIn <- openFile "hGetPosn001.in" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode hIn True
-# endif
-  f <- doesFileExist "hGetPosn001.out"
-  when f (removeFile "hGetPosn001.out")
-  hOut <- openFile "hGetPosn001.out" ReadWriteMode
-# if defined(__MINGW32__)
-  hSetBinaryMode hOut True
-# endif
-  bof <- hGetPosn hIn
-  copy hIn hOut
-  hSetPosn bof
-  copy hIn hOut
-  hSeek hOut AbsoluteSeek 0
-  stuff <- hGetContents hOut
-  putStr stuff
-
-copy :: Handle -> Handle -> IO ()
-copy hIn hOut =
-    try (hGetChar hIn) >>=
-    either (\ err -> if isEOFError err then return () else error "copy")
-          ( \ x -> hPutChar hOut x >> copy hIn hOut)
diff --git a/ghc/tests/lib/IO/hGetPosn001.in b/ghc/tests/lib/IO/hGetPosn001.in
deleted file mode 100644 (file)
index 2e25371..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
-         1         2         3         4         5         6         7  
diff --git a/ghc/tests/lib/IO/hGetPosn001.stdout b/ghc/tests/lib/IO/hGetPosn001.stdout
deleted file mode 100644 (file)
index 7ac3cc5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
-         1         2         3         4         5         6         7  
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
-         1         2         3         4         5         6         7  
diff --git a/ghc/tests/lib/IO/hGetPosn001.stdout-mingw b/ghc/tests/lib/IO/hGetPosn001.stdout-mingw
deleted file mode 100644 (file)
index 6b5b1f8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12\r
-         1         2         3         4         5         6         7  \r
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12\r
-         1         2         3         4         5         6         7  \r
diff --git a/ghc/tests/lib/IO/hIsEOF001.hs b/ghc/tests/lib/IO/hIsEOF001.hs
deleted file mode 100644 (file)
index b63c1d4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! hIsEOF (on stdout)
-
-import IO ( hIsEOF, stdout )
-
-main = do
-  flg <- hIsEOF stdout `catch` \ _ -> putStrLn "hIsEOF failed" >> return False
-  print flg
diff --git a/ghc/tests/lib/IO/hIsEOF001.stdout b/ghc/tests/lib/IO/hIsEOF001.stdout
deleted file mode 100644 (file)
index 76460ac..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-hIsEOF failed
-False
diff --git a/ghc/tests/lib/IO/hIsEOF002.hs b/ghc/tests/lib/IO/hIsEOF002.hs
deleted file mode 100644 (file)
index d2c6070..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
--- !!! test hIsEOF in various buffering situations
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  h <- openFile "hIsEOF002.hs" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  hSetBuffering h NoBuffering
-  hSeek h SeekFromEnd 0
-  hIsEOF h >>= print
-  hSeek h SeekFromEnd (-1)
-  hIsEOF h >>= print
-  hGetChar h >>= print 
-
-  hSetBuffering h LineBuffering
-  hSeek h SeekFromEnd 0
-  hIsEOF h >>= print
-  hSeek h SeekFromEnd (-1)
-  hIsEOF h >>= print
-  hGetChar h >>= print  
-
-  hSetBuffering h (BlockBuffering (Just 1))
-  hSeek h SeekFromEnd 0
-  hIsEOF h >>= print
-  hSeek h SeekFromEnd (-1)
-  hIsEOF h >>= print
-  hGetChar h >>= print  
-
-  hSetBuffering h (BlockBuffering Nothing)
-  hSeek h SeekFromEnd 0
-  hIsEOF h >>= print
-  hSeek h SeekFromEnd (-1)
-  hIsEOF h >>= print
-  hGetChar h >>= print  
-  hClose h
-
-  h <- openFile "hIsEOF002.out" WriteMode
-  hPutStrLn h "hello, world"
-  hClose h
-
-  h <- openFile "hIsEOF002.out" ReadWriteMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  hSetBuffering h NoBuffering
-  hSeek h SeekFromEnd 0
-  hIsEOF h >>= print
-  hPutChar h 'x'
-  hIsEOF h >>= print
-  hSeek h SeekFromEnd (-1)
-  hIsEOF h >>= print
-  hGetChar h >>= print 
diff --git a/ghc/tests/lib/IO/hIsEOF002.stdout b/ghc/tests/lib/IO/hIsEOF002.stdout
deleted file mode 100644 (file)
index 3aa5e1a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-True
-False
-'\n'
-True
-False
-'\n'
-True
-False
-'\n'
-True
-False
-'\n'
-True
-True
-False
-'x'
diff --git a/ghc/tests/lib/IO/hReady001.hs b/ghc/tests/lib/IO/hReady001.hs
deleted file mode 100644 (file)
index 2c2431c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! hReady test
-
- -- hReady should probably return False at the end of a file,
- -- but in GHC it returns True (known bug).
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
- h <- openFile "hReady001.hs" ReadMode
-#if defined(__MINGW32__)
- hSetBinaryMode h True
-#endif
- hSeek h SeekFromEnd 0
- hReady h >>= print
diff --git a/ghc/tests/lib/IO/hSeek001.hs b/ghc/tests/lib/IO/hSeek001.hs
deleted file mode 100644 (file)
index 9bfd4ba..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
--- !!! Test seeking
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-    h  <- openFile "hSeek001.in" ReadMode
-#   if defined(__MINGW32__)
-    hSetBinaryMode h True
-#   endif
-    True <- hIsSeekable h
-    hSeek h SeekFromEnd (-1)
-    z <- hGetChar h
-    putStr (z:"\n")
-    hSeek h SeekFromEnd (-3)
-    x <- hGetChar h
-    putStr (x:"\n")
-    hSeek h RelativeSeek (-2)
-    w <- hGetChar h
-    putStr (w:"\n")
-    hSeek h RelativeSeek 2
-    z <- hGetChar h
-    putStr (z:"\n")
-    hSeek h AbsoluteSeek (0)
-    a <- hGetChar h
-    putStr (a:"\n")
-    hSeek h AbsoluteSeek (10)
-    k <- hGetChar h
-    putStr (k:"\n")
-    hSeek h AbsoluteSeek (25)
-    z <- hGetChar h
-    putStr (z:"\n")
-    hClose h
diff --git a/ghc/tests/lib/IO/hSeek001.in b/ghc/tests/lib/IO/hSeek001.in
deleted file mode 100644 (file)
index e85d5b4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-abcdefghijklmnopqrstuvwxyz
\ No newline at end of file
diff --git a/ghc/tests/lib/IO/hSeek001.stdout b/ghc/tests/lib/IO/hSeek001.stdout
deleted file mode 100644 (file)
index ab6c1d7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-z
-x
-w
-z
-a
-k
-z
diff --git a/ghc/tests/lib/IO/hSeek002.hs b/ghc/tests/lib/IO/hSeek002.hs
deleted file mode 100644 (file)
index c9b795f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--- !!! Testing EOF (and the clearing of it)
-module Main(main) where
-
-import IO
-import Directory ( removeFile )
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main :: IO ()
-main = do
-   hdl <- openFile "hSeek002.hs" ReadMode
-#  if defined(__MINGW32__)
-   hSetBinaryMode hdl True
-#  endif
-   flg <- hIsEOF hdl
-   print flg
-   hSeek hdl SeekFromEnd 0
-   flg <- hIsEOF hdl
-   print flg
-   hSeek hdl SeekFromEnd (-1)
-   flg <- hIsEOF hdl
-   print flg
-   hGetChar hdl
-   flg <- hIsEOF hdl
-   print flg
-   hSeek hdl SeekFromEnd (-1)
-   flg <- hIsEOF hdl
-   print flg
-   hClose hdl
diff --git a/ghc/tests/lib/IO/hSeek002.stdout b/ghc/tests/lib/IO/hSeek002.stdout
deleted file mode 100644 (file)
index 8069fe3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-False
-True
-False
-True
-False
diff --git a/ghc/tests/lib/IO/hSeek003.hs b/ghc/tests/lib/IO/hSeek003.hs
deleted file mode 100644 (file)
index 6ab3015..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
--- !!! file positions (hGetPosn and hSetPosn)
-module Main(main) where
-
-import IO
-import Monad ( sequence )
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-testPosns :: Handle -> BufferMode -> IO ()
-testPosns hdl bmo = do
-   hSetBuffering hdl bmo
-   putStrLn ("Testing positioning with buffer mode set to: " ++ show bmo)
-   testPositioning hdl
-
-bmo_ls = [NoBuffering, LineBuffering, BlockBuffering Nothing, 
-          BlockBuffering (Just 511),BlockBuffering (Just 3), BlockBuffering (Just 11)]
-
-main = do
-  hdl  <- openFile "hSeek003.hs" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode hdl True
-# endif
-  sequence (zipWith testPosns (repeat hdl) bmo_ls)
-  hClose hdl
-
-testPositioning hdl = do
-  hSeek hdl AbsoluteSeek 0  -- go to the beginning of the file again.
-  ps   <- getFilePosns 10 hdl
-  hSeek hdl AbsoluteSeek 0
-  putStr "First ten chars: "
-  ls   <- hGetChars 10 hdl
-  putStrLn ls
-    -- go to the end
-  hSeek hdl SeekFromEnd 0  
-  ls   <- sequence (map (\ p -> hSetPosn p >> hGetChar hdl) ps)
-  putStr "First ten chars: "
-  putStrLn ls
-
-    -- position ourselves in the middle.
-  sz <- hFileSize hdl
-  hSeek hdl AbsoluteSeek (sz `div` 2)
-  ls   <- sequence (map (\ p -> hSetPosn p >> hGetChar hdl) ps)
-  putStr "First ten chars: "
-  putStrLn ls
-
-hGetChars :: Int -> Handle -> IO String
-hGetChars n h = sequence (replicate n (hGetChar h))
-
-getFilePosns :: Int -> Handle -> IO [HandlePosn]
-getFilePosns 0 h = return []
-getFilePosns x h = do
-   p <- hGetPosn h
-   hGetChar h
-   ps <- getFilePosns (x-1) h
-   return (p:ps)
diff --git a/ghc/tests/lib/IO/hSeek003.stdout b/ghc/tests/lib/IO/hSeek003.stdout
deleted file mode 100644 (file)
index 7c765c5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-Testing positioning with buffer mode set to: NoBuffering
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: LineBuffering
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering Nothing
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 511)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 3)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 11)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
diff --git a/ghc/tests/lib/IO/hSeek004.hs b/ghc/tests/lib/IO/hSeek004.hs
deleted file mode 100644 (file)
index bce8105..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! can't seek an AppendMode handle
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  h <- openFile "hSeek004.out" AppendMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  try (hSeek h AbsoluteSeek 0) >>= print
diff --git a/ghc/tests/lib/IO/hSeek004.stdout b/ghc/tests/lib/IO/hSeek004.stdout
deleted file mode 100644 (file)
index a133631..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Left illegal operation
-Action: hSeek
-Handle: {loc=hSeek004.out,type=writable (append),binary=False,buffering=block (8192)}
-Reason: handle is not seekable
-File: hSeek004.out
diff --git a/ghc/tests/lib/IO/hSeek004.stdout-mingw b/ghc/tests/lib/IO/hSeek004.stdout-mingw
deleted file mode 100644 (file)
index 7d8e707..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Left illegal operation
-Action: hSeek
-Handle: {loc=hSeek004.out,type=writable (append),binary=True,buffering=block (512)}
-Reason: handle is not seekable
-File: hSeek004.out
diff --git a/ghc/tests/lib/IO/hSetBuffering002.hs b/ghc/tests/lib/IO/hSetBuffering002.hs
deleted file mode 100644 (file)
index 396d435..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import IO
-
-main = 
-    hSetBuffering stdin NoBuffering    >>
-    hSetBuffering stdout NoBuffering   >>
-    interact id
diff --git a/ghc/tests/lib/IO/hSetBuffering002.stdout b/ghc/tests/lib/IO/hSetBuffering002.stdout
deleted file mode 100644 (file)
index 396d435..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import IO
-
-main = 
-    hSetBuffering stdin NoBuffering    >>
-    hSetBuffering stdout NoBuffering   >>
-    interact id
diff --git a/ghc/tests/lib/IO/hSetBuffering003.hs b/ghc/tests/lib/IO/hSetBuffering003.hs
deleted file mode 100644 (file)
index 424be16..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
--- !!! Reconfiguring the buffering of a handle
-module Main(main) where
-
-import IO
-
-queryBuffering :: String -> Handle -> IO ()
-queryBuffering handle_nm handle = do
-  bufm  <- hGetBuffering handle
-  putStrLn ("Buffering for " ++ handle_nm ++ " is: " ++ show bufm)
-   
-main = do
-  queryBuffering "stdin" stdin
-  queryBuffering "stdout" stdout
-  queryBuffering "stderr" stderr
-
-   -- twiddling the setting for stdin.
-  hSetBuffering stdin NoBuffering
-  queryBuffering "stdin" stdin
-  hSetBuffering stdin LineBuffering
-  queryBuffering "stdin" stdin
-  hSetBuffering stdin (BlockBuffering (Just 2))
-  queryBuffering "stdin" stdin
-  hSetBuffering stdin (BlockBuffering Nothing)
-  queryBuffering "stdin" stdin
-  let bmo = BlockBuffering (Just (-3))
-  hSetBuffering stdin bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stdin " ++ showParen True (showsPrec 9 bmo) [])
-
-  putChar '\n'
-
-   -- twiddling the buffering for stdout
-  hPutStr stdout "Hello stdout 1"
-  hSetBuffering stdout NoBuffering
-  queryBuffering "stdout" stdout
-  hPutStr stdout "Hello stdout 2"
-  hSetBuffering stdout LineBuffering
-  queryBuffering "stdout" stdout
-  hPutStr stdout "Hello stdout 3"
-  hSetBuffering stdout (BlockBuffering (Just 2))
-  queryBuffering "stdout" stdout
-  hPutStr stdout "Hello stdout 4"
-  hSetBuffering stdout (BlockBuffering Nothing)
-  queryBuffering "stdout" stdout
-  hPutStr stdout "Hello stdout 5"
-  let bmo = BlockBuffering (Just (-3))
-  hSetBuffering stdout bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stdout " ++ showParen True (showsPrec 9 bmo) [])
-
-  putChar '\n'
-
-   -- twiddling the buffering for stderr
-  hPutStr stderr "Hello stderr 1"
-  hSetBuffering stderr NoBuffering
-  queryBuffering "stderr" stderr
-  hPutStr stderr "Hello stderr 2"
-  hSetBuffering stderr LineBuffering
-  queryBuffering "stderr" stderr
-  hPutStr stderr "Hello stderr 3"
-  hSetBuffering stderr (BlockBuffering (Just 2))
-  queryBuffering "stderr" stderr
-  hPutStr stderr "Hello stderr 4"
-  hSetBuffering stderr (BlockBuffering Nothing)
-  queryBuffering "stderr" stderr
-  hPutStr stderr "Hello stderr 5"
-  let bmo = BlockBuffering (Just (-3))
-  hSetBuffering stderr bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stderr " ++ showParen True (showsPrec 9 bmo) [])
-
-  ls  <- hGetContents stdin
-  ls' <- putLine ls
-  hSetBuffering stdin NoBuffering
-  putLine ls'
-  return ()
-
-putLine :: String -> IO String
-putLine [] = return []
-putLine (x:xs) = do
-   putChar x
-   case x of
-     '\n' -> return xs
-     _    -> putLine xs
-  
diff --git a/ghc/tests/lib/IO/hSetBuffering003.stderr b/ghc/tests/lib/IO/hSetBuffering003.stderr
deleted file mode 100644 (file)
index a4cf877..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello stderr 1Hello stderr 2Hello stderr 3Hello stderr 4Hello stderr 5
\ No newline at end of file
diff --git a/ghc/tests/lib/IO/hSetBuffering003.stdout b/ghc/tests/lib/IO/hSetBuffering003.stdout
deleted file mode 100644 (file)
index 7768773..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Buffering for stdin is: BlockBuffering Nothing
-Buffering for stdout is: BlockBuffering Nothing
-Buffering for stderr is: NoBuffering
-Buffering for stdin is: NoBuffering
-Buffering for stdin is: LineBuffering
-Buffering for stdin is: BlockBuffering (Just 2)
-Buffering for stdin is: BlockBuffering Nothing
-Caught illegal op: hSetBuffering stdin (BlockBuffering (Just (-3)))
-
-Hello stdout 1Buffering for stdout is: NoBuffering
-Hello stdout 2Buffering for stdout is: LineBuffering
-Hello stdout 3Buffering for stdout is: BlockBuffering (Just 2)
-Hello stdout 4Buffering for stdout is: BlockBuffering Nothing
-Hello stdout 5Caught illegal op: hSetBuffering stdout (BlockBuffering (Just (-3)))
-
-Buffering for stderr is: NoBuffering
-Buffering for stderr is: LineBuffering
-Buffering for stderr is: BlockBuffering (Just 2)
-Buffering for stderr is: BlockBuffering Nothing
-Caught illegal op: hSetBuffering stderr (BlockBuffering (Just (-3)))
--- !!! Reconfiguring the buffering of a handle
-module Main(main) where
diff --git a/ghc/tests/lib/IO/ioeGetErrorString001.hs b/ghc/tests/lib/IO/ioeGetErrorString001.hs
deleted file mode 100644 (file)
index 0a34e4b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! test ioeGetErrorString
-
-import IO
-import Maybe
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  h <- openFile "ioeGetErrorString001.hs" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  hSeek h SeekFromEnd 0
-  (hGetChar h >> return ()) `catch`
-       \e -> if isEOFError e
-               then print (ioeGetErrorString e)
-               else putStrLn "failed."
diff --git a/ghc/tests/lib/IO/ioeGetErrorString001.stdout b/ghc/tests/lib/IO/ioeGetErrorString001.stdout
deleted file mode 100644 (file)
index 0b8daea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"end of file"
diff --git a/ghc/tests/lib/IO/ioeGetFileName001.hs b/ghc/tests/lib/IO/ioeGetFileName001.hs
deleted file mode 100644 (file)
index dd60f68..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! test ioeGetFileName
-
-import IO
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  h <- openFile "ioeGetFileName001.hs" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  hSeek h SeekFromEnd 0
-  (hGetChar h >> return ()) `catch`
-       \e -> if isEOFError e 
-               then print (ioeGetFileName e)
-               else putStrLn "failed."
diff --git a/ghc/tests/lib/IO/ioeGetFileName001.stdout b/ghc/tests/lib/IO/ioeGetFileName001.stdout
deleted file mode 100644 (file)
index 7377ad4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Just "ioeGetFileName001.hs"
diff --git a/ghc/tests/lib/IO/ioeGetHandle001.hs b/ghc/tests/lib/IO/ioeGetHandle001.hs
deleted file mode 100644 (file)
index dc3d375..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! test ioeGetHandle
-
-import IO
-import Maybe
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  h <- openFile "ioeGetHandle001.hs" ReadMode
-# if defined(__MINGW32__)
-  hSetBinaryMode h True
-# endif
-  hSeek h SeekFromEnd 0
-  (hGetChar h >> return ()) `catch`
-       \e -> if isEOFError e && fromJust (ioeGetHandle e) == h
-               then putStrLn "ok."
-               else putStrLn "failed."
diff --git a/ghc/tests/lib/IO/ioeGetHandle001.stdout b/ghc/tests/lib/IO/ioeGetHandle001.stdout
deleted file mode 100644 (file)
index 90b5016..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ok.
diff --git a/ghc/tests/lib/IO/isEOF001.hs b/ghc/tests/lib/IO/isEOF001.hs
deleted file mode 100644 (file)
index c5f552f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import IO
-
-main = isEOF >>= print
diff --git a/ghc/tests/lib/IO/isEOF001.stdout b/ghc/tests/lib/IO/isEOF001.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/lib/IO/misc001.hs b/ghc/tests/lib/IO/misc001.hs
deleted file mode 100644 (file)
index c536f7d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-import IO
-
-import System (getArgs)
-import Char   (toUpper)
-import Directory (removeFile, doesFileExist)
-
-main   =  do
-  [f1,f2] <- getArgs
-  h1 <- openFile f1 ReadMode
-  f <- doesFileExist f2
-  if f then removeFile f2 else return ()
-  h2 <- openFile f2 WriteMode
-  copyFile h1 h2
-  hClose h1
-  hClose h2
-
-copyFile h1 h2 = do
-  eof <- hIsEOF h1
-  if eof 
-       then return ()
-       else do
-  c <- hGetChar h1
-  c <- hPutChar h2 (toUpper c)
-  copyFile h1 h2
diff --git a/ghc/tests/lib/IO/misc001.stdout b/ghc/tests/lib/IO/misc001.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/IO/openFile001.hs b/ghc/tests/lib/IO/openFile001.hs
deleted file mode 100644 (file)
index 02e1403..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! test that a file opened in ReadMode can't be written to
-
-import IO
-
-main = do
-  hIn <- openFile "openFile001.hs" ReadMode
-  hPutStr hIn "test" `catch` \ err ->
-      if isIllegalOperation err 
-       then putStrLn "ok."
-       else error "Oh dear\n"
diff --git a/ghc/tests/lib/IO/openFile001.stdout b/ghc/tests/lib/IO/openFile001.stdout
deleted file mode 100644 (file)
index 90b5016..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ok.
diff --git a/ghc/tests/lib/IO/openFile002.hs b/ghc/tests/lib/IO/openFile002.hs
deleted file mode 100644 (file)
index 615947e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import Char
-import IO
-
--- !!! Open a non-existent file for reading (should fail)
-
-main = openFile "nonexistent" ReadMode
diff --git a/ghc/tests/lib/IO/openFile002.stderr b/ghc/tests/lib/IO/openFile002.stderr
deleted file mode 100644 (file)
index f023a73..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-Fail: does not exist
-Action: openFile
-Reason: No such file or directory
-File: nonexistent
-
diff --git a/ghc/tests/lib/IO/openFile003.hs b/ghc/tests/lib/IO/openFile003.hs
deleted file mode 100644 (file)
index 77900f0..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-import IO
-
--- !!! Open a directory (should fail)
-
-main = do
-  r <- try (openFile "." ReadMode)
-  print r
-  r <- try (openFile "." WriteMode)
-  print r
-  r <- try (openFile "." AppendMode)
-  print r
-  r <- try (openFile "." ReadWriteMode)
-  print r
diff --git a/ghc/tests/lib/IO/openFile003.stdout b/ghc/tests/lib/IO/openFile003.stdout
deleted file mode 100644 (file)
index eb69ce3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Left inappropriate type
-Action: openFile
-Reason: is a directory
-File: .
-Left inappropriate type
-Action: openFile
-Reason: Is a directory
-File: .
-Left inappropriate type
-Action: openFile
-Reason: Is a directory
-File: .
-Left inappropriate type
-Action: openFile
-Reason: Is a directory
-File: .
diff --git a/ghc/tests/lib/IO/openFile003.stdout-mingw b/ghc/tests/lib/IO/openFile003.stdout-mingw
deleted file mode 100644 (file)
index f7d4410..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: .
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: .
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: .
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: .
diff --git a/ghc/tests/lib/IO/openFile004.hs b/ghc/tests/lib/IO/openFile004.hs
deleted file mode 100644 (file)
index da6443f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! Open a non-existent file for writing
-
-import Char
-import IO
-import Directory
-import Monad
-
-file = "openFile004.out"
-
-main = do
-  b <- doesFileExist file
-  when b (removeFile file)
-
-  h <- openFile file WriteMode
-  hPutStr h "hello world\n"
-  hClose h
-
-  h <- openFile file ReadMode
-  let loop = do
-       b <- hIsEOF h 
-       if b then return () 
-            else do c <- hGetChar h; putChar c; loop
-  loop
diff --git a/ghc/tests/lib/IO/openFile004.stdout b/ghc/tests/lib/IO/openFile004.stdout
deleted file mode 100644 (file)
index 3b18e51..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hello world
diff --git a/ghc/tests/lib/IO/openFile005.hs b/ghc/tests/lib/IO/openFile005.hs
deleted file mode 100644 (file)
index e75e5b8..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
--- !!! test multiple-reader single-writer locking semantics
-
-import IO
-
-file1 = "openFile005.out1"
-file2 = "openFile005.out2"
-
-main = do
-  putStrLn "two writes (should fail)"
-  h <- openFile file1 WriteMode
-  try (openFile file1 WriteMode) >>= print
-  hClose h
-
-  putStrLn "write and an append (should fail)"
-  h <- openFile file1 WriteMode
-  try (openFile file1 AppendMode) >>= print
-  hClose h
-
-  putStrLn "read/write and a write (should fail)"
-  h <- openFile file1 ReadWriteMode
-  try (openFile file1 WriteMode) >>= print
-  hClose h
-
-  putStrLn "read and a read/write (should fail)"
-  h <- openFile file1 ReadMode
-  try (openFile file1 ReadWriteMode) >>= print
-  hClose h
-
-  putStrLn "write and a read (should fail)"
-  h <- openFile file1 WriteMode
-  try (openFile file1 ReadMode) >>= print
-  hClose h
-
-  putStrLn "two writes, different files (silly, but should succeed)"
-  h1 <- openFile file1 WriteMode
-  h2 <- openFile file2 WriteMode
-  hClose h1
-  hClose h2
-
-  putStrLn "two reads, should succeed"
-  h1 <- openFile file1 ReadMode
-  h2 <- openFile file1 ReadMode
-  hClose h1
-  hClose h2
diff --git a/ghc/tests/lib/IO/openFile005.stdout b/ghc/tests/lib/IO/openFile005.stdout
deleted file mode 100644 (file)
index f32fff4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-two writes (should fail)
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile005.out1
-write and an append (should fail)
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile005.out1
-read/write and a write (should fail)
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile005.out1
-read and a read/write (should fail)
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile005.out1
-write and a read (should fail)
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile005.out1
-two writes, different files (silly, but should succeed)
-two reads, should succeed
diff --git a/ghc/tests/lib/IO/openFile005.stdout-mingw b/ghc/tests/lib/IO/openFile005.stdout-mingw
deleted file mode 100644 (file)
index 9c97133..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-two writes (should fail)
-Right {loc=openFile005.out1,type=writable,binary=False,buffering=block (512)}
-write and an append (should fail)
-Right {loc=openFile005.out1,type=writable (append),binary=False,buffering=block (512)}
-read/write and a write (should fail)
-Right {loc=openFile005.out1,type=writable,binary=False,buffering=block (512)}
-read and a read/write (should fail)
-Right {loc=openFile005.out1,type=read-writable,binary=False,buffering=block (512)}
-write and a read (should fail)
-Right {loc=openFile005.out1,type=readable,binary=False,buffering=block (512)}
-two writes, different files (silly, but should succeed)
-two reads, should succeed
diff --git a/ghc/tests/lib/IO/openFile006.hs b/ghc/tests/lib/IO/openFile006.hs
deleted file mode 100644 (file)
index 0b9eafc..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! opening a file in WriteMode better truncate it
-
-import IO
-
-main = do
-  h <- openFile "openFile006.out" AppendMode
-  hPutStr h "hello, world"
-  size <- hFileSize h
-  print size
-  hClose h
-  h <- openFile "openFile006.out" WriteMode
-  size <- hFileSize h
-  print size
diff --git a/ghc/tests/lib/IO/openFile006.stdout b/ghc/tests/lib/IO/openFile006.stdout
deleted file mode 100644 (file)
index 368283e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-12
-0
diff --git a/ghc/tests/lib/IO/openFile007.hs b/ghc/tests/lib/IO/openFile007.hs
deleted file mode 100644 (file)
index 9c3f8be..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! check that we don't truncate files if the open fails
-
-import IO
-import Monad
-
-tmp = "openFile007.out"
-
-main = do
-  h <- openFile tmp WriteMode
-  hPutStrLn h "hello, world"
-
-  -- second open in write mode better fail, but better not truncate the file
-  try (openFile tmp WriteMode) >>= print
-  
-  hClose h
-  s <- readFile tmp -- make sure our "hello, world" is still there
-  putStr s
diff --git a/ghc/tests/lib/IO/openFile007.stdout b/ghc/tests/lib/IO/openFile007.stdout
deleted file mode 100644 (file)
index a19d317..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: openFile007.out
-hello, world
diff --git a/ghc/tests/lib/IO/putStr001.hs b/ghc/tests/lib/IO/putStr001.hs
deleted file mode 100644 (file)
index 48b3add..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! Testing output on stdout
-
--- stdout is buffered, so test if its buffer
--- is flushed upon program termination.
-
-main = putStr "Hello, world\n"
diff --git a/ghc/tests/lib/IO/putStr001.stdout b/ghc/tests/lib/IO/putStr001.stdout
deleted file mode 100644 (file)
index a5c1966..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello, world
diff --git a/ghc/tests/lib/IO/readFile001.hs b/ghc/tests/lib/IO/readFile001.hs
deleted file mode 100644 (file)
index 6ce87ed..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! readFile test
-
-import IO
-
-source   = "readFile001.hs"
-filename = "readFile001.out"
-
-main = do
-  s <- readFile source
-  h <- openFile filename WriteMode
-  hPutStrLn h s
-  hClose h
-  s <- readFile filename
-
-  -- This open should fail, because the readFile hasn't been forced
-  -- and the file is therefore still locked.
-  try (openFile filename WriteMode) >>= print
-
-  putStrLn s
-
-  -- should be able to open it for writing now, because we've forced the
-  -- whole file.
-  h <- openFile filename WriteMode
-
-  print h
diff --git a/ghc/tests/lib/IO/readFile001.stdout b/ghc/tests/lib/IO/readFile001.stdout
deleted file mode 100644 (file)
index 9bb4f56..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Left resource busy
-Action: openFile
-Reason: file is locked
-File: readFile001.out
--- !!! readFile test
-
-import IO
-
-source   = "readFile001.hs"
-filename = "readFile001.out"
-
-main = do
-  s <- readFile source
-  h <- openFile filename WriteMode
-  hPutStrLn h s
-  hClose h
-  s <- readFile filename
-
-  -- This open should fail, because the readFile hasn't been forced
-  -- and the file is therefore still locked.
-  try (openFile filename WriteMode) >>= print
-
-  putStrLn s
-
-  -- should be able to open it for writing now, because we've forced the
-  -- whole file.
-  h <- openFile filename WriteMode
-
-  print h
-
-
-{loc=readFile001.out,type=writable,binary=False,buffering=block (8192)}
diff --git a/ghc/tests/lib/IO/readwrite001.hs b/ghc/tests/lib/IO/readwrite001.hs
deleted file mode 100644 (file)
index ebd80cf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
--- !!! RW files 
-module Main(main) where
-
-import IO
-import Directory ( removeFile, doesFileExist )
-import Monad
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
-main = do
-  f <- doesFileExist "readwrite001.inout" 
-  when f (removeFile "readwrite001.inout")
-  hdl <- openFile "readwrite001.inout" ReadWriteMode
-# if defined(__MINGW32__)
-  hSetBinaryMode hdl True
-# endif
-  hSetBuffering hdl LineBuffering
-  hPutStr hdl "as"
-  hSeek hdl AbsoluteSeek 0
-  ch <- hGetChar hdl
-  print ch
-  hPutStr hdl "ase"
-  hSeek hdl AbsoluteSeek 0
-  putChar '\n'
-  ls <- hGetContents hdl
-  putStrLn ls
-
diff --git a/ghc/tests/lib/IO/readwrite001.stdout b/ghc/tests/lib/IO/readwrite001.stdout
deleted file mode 100644 (file)
index e33ba06..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-'a'
-
-aase
diff --git a/ghc/tests/lib/IO/readwrite002.hs b/ghc/tests/lib/IO/readwrite002.hs
deleted file mode 100644 (file)
index cd6e34d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
--- !!! Testing RW handles 
-import IO
-import Directory (removeFile, doesFileExist)
-import Monad
-#if defined(__MINGW32__)
-import PrelHandle(hSetBinaryMode)
-#endif
-
--- This test is weird, full marks to whoever dreamt it up!
-
-main :: IO ()
-main = do
-   let username = "readwrite002.inout"
-   f <- doesFileExist username
-   when f (removeFile username)
-   cd <- openFile username ReadWriteMode
-#  if defined(__MINGW32__)
-   hSetBinaryMode cd True
-#  endif
-   hSetBuffering stdin NoBuffering
-   hSetBuffering stdout NoBuffering
-   hSetBuffering cd NoBuffering
-   hPutStr cd speakString
-   hSeek cd AbsoluteSeek 0
-   speak cd  `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
-   hSeek cd AbsoluteSeek 0
-   hSetBuffering cd LineBuffering
-   speak cd  `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
-   hSeek cd AbsoluteSeek 0
-   hSetBuffering cd (BlockBuffering Nothing)
-   speak cd  `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
-
-speakString = "##############################\n"
-
-speak cd = do
-     (do
-        ready <- hReady cd
-        if ready then 
-          hGetChar cd >>= putChar
-        else
-          return ()
-        ready <- hReady stdin
-        if ready then (do { ch <- getChar; hPutChar cd ch})
-         else return ())
-     speak cd
diff --git a/ghc/tests/lib/IO/readwrite002.stdout b/ghc/tests/lib/IO/readwrite002.stdout
deleted file mode 100644 (file)
index 9aed028..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-###############
-
-Caught EOF
-###############
-
-Caught EOF
-###############
-
-Caught EOF
diff --git a/ghc/tests/lib/IOExts/Makefile b/ghc/tests/lib/IOExts/Makefile
deleted file mode 100644 (file)
index 8881b92..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:25 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -package lang
-
-echo001_RUNTEST_OPTS += -i echo001.hs
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/IOExts/echo001.hs b/ghc/tests/lib/IOExts/echo001.hs
deleted file mode 100644 (file)
index a00ca35..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module Main(main) where
-
-import IO
-import IOExts
-import Char
-
-main = do
-  isT <- hIsTerminalDevice stdin
-  flg <- if not isT then return False else hGetEcho stdin
-  print flg
-  if not isT then hSetEcho stdin False else return ()
-  hSetBuffering stdin NoBuffering
-  interact (map toUpper)
-  
diff --git a/ghc/tests/lib/IOExts/echo001.stdout b/ghc/tests/lib/IOExts/echo001.stdout
deleted file mode 100644 (file)
index 73f06fd..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-False
-MODULE MAIN(MAIN) WHERE
-
-IMPORT IO
-IMPORT IOEXTS
-IMPORT CHAR
-
-MAIN = DO
-  IST <- HISTERMINALDEVICE STDIN
-  FLG <- IF NOT IST THEN RETURN FALSE ELSE HGETECHO STDIN
-  PRINT FLG
-  IF NOT IST THEN HSETECHO STDIN FALSE ELSE RETURN ()
-  HSETBUFFERING STDIN NOBUFFERING
-  INTERACT (MAP TOUPPER)
-  
diff --git a/ghc/tests/lib/IOExts/hTell001.hs b/ghc/tests/lib/IOExts/hTell001.hs
deleted file mode 100644 (file)
index b5a6033..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
--- !!! Testing hGetPosn and hSetPosn
-module Main(main) where
-
-import IO
-import IOExts
-
-getPosnAndPrint h = do
-  x <- hTell h
-  v <- hGetChar h
-  putStrLn ("At position: " ++ show x ++ ", found: " ++ show v)
-  return x
-
-recordDoAndRepos h a = do
-  x <- getPosnAndPrint h
-  a 
-  hSeek h AbsoluteSeek x
-  getPosnAndPrint h
-  return ()
-
-recordDoAndRepos2 h a = do
-  x <- getPosnAndPrint h
-  a 
-  hSeek h AbsoluteSeek x
-  getPosnAndPrint h
-  return ()
-
-recordDoAndRepos3 h a = do
-  x <- getPosnAndPrint h
-  a 
-  hSeek h SeekFromEnd (negate (x + 1))
-  getPosnAndPrint h
-  return ()
-
-file = "hTell001.hs"
-
-main :: IO ()
-main = do
-  h  <- openFile file ReadMode
-  recordDoAndRepos h $
-   recordDoAndRepos h $
-    recordDoAndRepos h $
-     recordDoAndRepos h $
-      recordDoAndRepos h $
-       putStrLn ""
-  hClose h
-  putStrLn ""
-  h  <- openFileEx file (BinaryMode ReadMode)
-  recordDoAndRepos h $
-   recordDoAndRepos h $
-    recordDoAndRepos h $
-     recordDoAndRepos h $
-      recordDoAndRepos h $
-       putStrLn ""
-  hClose h
-  putStrLn "\nUsing hSeek/AbsoluteSeek: "
-  h  <- openFile file ReadMode
-  recordDoAndRepos2 h $
-   recordDoAndRepos2 h $
-    recordDoAndRepos2 h $
-     recordDoAndRepos2 h $
-      recordDoAndRepos2 h $
-       putStrLn ""
-
-  hClose h
-  putStrLn "\nUsing hSeek/SeekFromEnd: "
-  putStrLn "(Don't worry if you're seeing differing numbers here, it might be down to '\\n' vs '\\r\\n')"
-  h  <- openFile file ReadMode
-  recordDoAndRepos3 h $
-   recordDoAndRepos3 h $
-    recordDoAndRepos3 h $
-     recordDoAndRepos3 h $
-      recordDoAndRepos3 h $
-       putStrLn ""
diff --git a/ghc/tests/lib/IOExts/hTell001.stdout b/ghc/tests/lib/IOExts/hTell001.stdout
deleted file mode 100644 (file)
index f7f2f28..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 4, found: '!'
-At position: 3, found: '!'
-At position: 2, found: ' '
-At position: 1, found: '-'
-At position: 0, found: '-'
-
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 4, found: '!'
-At position: 3, found: '!'
-At position: 2, found: ' '
-At position: 1, found: '-'
-At position: 0, found: '-'
-
-Using hSeek/AbsoluteSeek: 
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 4, found: '!'
-At position: 3, found: '!'
-At position: 2, found: ' '
-At position: 1, found: '-'
-At position: 0, found: '-'
-
-Using hSeek/SeekFromEnd: 
-(Don't worry if you're seeing differing numbers here, it might be down to '\n' vs '\r\n')
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 1580, found: 'n'
-At position: 1581, found: ' '
-At position: 1582, found: '"'
-At position: 1583, found: '"'
-At position: 1584, found: '\n'
diff --git a/ghc/tests/lib/IOExts/hTell002.hs b/ghc/tests/lib/IOExts/hTell002.hs
deleted file mode 100644 (file)
index 0bb0cac..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! Testing hSeek
-module Main(main) where
-
-import IO
-import IOExts
-import Directory
-
-main :: IO ()
-main = do
-  h <- openFile "tst-seek" WriteMode
-  hPutStr h "test string1"
-   -- seek to EOF should be cool..
-  hSeek h SeekFromEnd 0
-  hPutStr h "test string2"
-   -- seek past EOF should now also be cool..
-  hSeek h SeekFromEnd 3
-  hPutStr h "test string3"
-  hSeek h AbsoluteSeek 13
-  hPutStr h "test string4"
-  x <- hTell h
-  print x
-  hPutStr h "filler"
-  hClose h
-  ls <- readFile "tst-seek"
-  putStrLn ls
-  removeFile "tst-seek"
diff --git a/ghc/tests/lib/IOExts/hTell002.stdout b/ghc/tests/lib/IOExts/hTell002.stdout
deleted file mode 100644 (file)
index da4db70..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-25
-test string1ttest string4filler string3
diff --git a/ghc/tests/lib/IOExts/performGC001.hs b/ghc/tests/lib/IOExts/performGC001.hs
deleted file mode 100644 (file)
index e680eb8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! test IOExts.performGC
-
-import IOExts
-
-main = performGC
diff --git a/ghc/tests/lib/IOExts/performGC001.stdout b/ghc/tests/lib/IOExts/performGC001.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/IOExts/trace001.hs b/ghc/tests/lib/IOExts/trace001.hs
deleted file mode 100644 (file)
index 5e340e0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-import IO
-import IOExts
-
-main = do
-   hPutStr stderr
-       (trace (trace (trace (trace (trace (trace (trace
-         "one" "fish") "two") "fish") "red") "fish") "blue") "fish")
-   hPutStr stdout
-       (trace (trace (trace (trace (trace (trace (trace
-         "one" "fish") "two") "fish") "red") "fish") "blue") "fish")
diff --git a/ghc/tests/lib/IOExts/trace001.stderr b/ghc/tests/lib/IOExts/trace001.stderr
deleted file mode 100644 (file)
index 3b8ac7a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-one
-fish
-two
-fish
-red
-fish
-blue
-fishone
-fish
-two
-fish
-red
-fish
-blue
diff --git a/ghc/tests/lib/IOExts/trace001.stdout b/ghc/tests/lib/IOExts/trace001.stdout
deleted file mode 100644 (file)
index 5b19477..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fish
\ No newline at end of file
diff --git a/ghc/tests/lib/IORef/Makefile b/ghc/tests/lib/IORef/Makefile
deleted file mode 100644 (file)
index 7b26514..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:25 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -package lang
-
-ioref001_RUNTEST_OPTS += +RTS -K16m -RTS
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/IORef/ioref001.hs b/ghc/tests/lib/IORef/ioref001.hs
deleted file mode 100644 (file)
index 50bd747..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import IORef
-
-loop r 0 = return ()
-loop r c = loop r (c-1) >> writeIORef r 42
-
-main = newIORef 0 >>= \r -> loop r 1000000 >> putStrLn "done"
diff --git a/ghc/tests/lib/IORef/ioref001.stdout b/ghc/tests/lib/IORef/ioref001.stdout
deleted file mode 100644 (file)
index 19f86f4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-done
diff --git a/ghc/tests/lib/Makefile b/ghc/tests/lib/Makefile
deleted file mode 100644 (file)
index 8c933d2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.6 2001/05/21 15:25:24 simonmar Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_run net \
-       CPUTime Directory IO IOExts System Time TimeExts
-
-# posix009 hangs on Linux, disabled for now --SDM
-# posix
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/System/Makefile b/ghc/tests/lib/System/Makefile
deleted file mode 100644 (file)
index d360eed..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.2 2001/05/21 15:25:25 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-exitWith001_RUNTEST_OPTS += -x 42
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/System/exitWith001.hs b/ghc/tests/lib/System/exitWith001.hs
deleted file mode 100644 (file)
index 69d2221..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import System (exitWith, ExitCode(..))
-
-main = exitWith (ExitFailure 42)
diff --git a/ghc/tests/lib/System/exitWith001.stdout b/ghc/tests/lib/System/exitWith001.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/System/getArgs001.hs b/ghc/tests/lib/System/getArgs001.hs
deleted file mode 100644 (file)
index 93fff71..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-import System (getProgName, getArgs)
-
-main = 
-    getProgName >>= \ argv0 ->
-    putStr argv0 >>
-    getArgs >>= \ argv ->
-    sequence (map (\ x -> putChar ' ' >> putStr x) argv) >>
-    putChar '\n'
-
diff --git a/ghc/tests/lib/System/getArgs001.stdout b/ghc/tests/lib/System/getArgs001.stdout
deleted file mode 100644 (file)
index 7344155..0000000
+++ /dev/null
@@ -1 +0,0 @@
-getArgs001.bin
diff --git a/ghc/tests/lib/System/getArgs001.stdout-mingw b/ghc/tests/lib/System/getArgs001.stdout-mingw
deleted file mode 100644 (file)
index ef48076..0000000
+++ /dev/null
@@ -1 +0,0 @@
-C:\TEMP\fptools-head\fptools\ghc\tests\io\should_run\io003.bin
diff --git a/ghc/tests/lib/System/getEnv001.hs b/ghc/tests/lib/System/getEnv001.hs
deleted file mode 100644 (file)
index e06fe6c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-import System (getEnv)
-
-import IO ( isDoesNotExistError )
-
-main :: IO ()
-main = do
-    term <- getEnv "TERM"
-    putStrLn "Got $TERM"
-    fish <- getEnv "One fish, two fish, red fish, blue fish"  `catch` getEnv_except
-    putStrLn fish
-
-getEnv_except :: IOError -> IO String
-getEnv_except ioe
- | isDoesNotExistError ioe = return ""
- | otherwise              = ioError ioe
diff --git a/ghc/tests/lib/System/getEnv001.stdout b/ghc/tests/lib/System/getEnv001.stdout
deleted file mode 100644 (file)
index da3acde..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Got $TERM
-
diff --git a/ghc/tests/lib/System/system001.hs b/ghc/tests/lib/System/system001.hs
deleted file mode 100644 (file)
index f6a8b0d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- Not run on mingw, because of /dev/null use
-
-import System (system, ExitCode(..), exitWith)
-
-main = 
-    system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
-    case ec of
-        ExitSuccess   -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
-        ExitFailure _ ->
-            system "cat system001.hs 2>/dev/null" >>= \ ec ->
-           case ec of
-               ExitSuccess   -> exitWith ExitSuccess
-               ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")
diff --git a/ghc/tests/lib/System/system001.stdout b/ghc/tests/lib/System/system001.stdout
deleted file mode 100644 (file)
index f6a8b0d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- Not run on mingw, because of /dev/null use
-
-import System (system, ExitCode(..), exitWith)
-
-main = 
-    system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
-    case ec of
-        ExitSuccess   -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
-        ExitFailure _ ->
-            system "cat system001.hs 2>/dev/null" >>= \ ec ->
-           case ec of
-               ExitSuccess   -> exitWith ExitSuccess
-               ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")
diff --git a/ghc/tests/lib/Time/Makefile b/ghc/tests/lib/Time/Makefile
deleted file mode 100644 (file)
index fa2d723..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:25 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/Time/time002.hs b/ghc/tests/lib/Time/time002.hs
deleted file mode 100644 (file)
index d3c3e42..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import Time
-
--- !!! check that we can read the current ClockTime, convert it
--- !!! to CalendarTime and back again, and that all three times when
--- !!! converted to strings compare equal.
-
-main = do
-  t <- getClockTime
-  let clock = show t
-  c <- toCalendarTime t
-  let cal = calendarTimeToString c
-  let t2 = toClockTime c
-      clock2 = show t2
-  if (clock == cal && clock == clock2)
-       then putStrLn "Ok."
-       else putStrLn "Failed."
diff --git a/ghc/tests/lib/Time/time002.stdout b/ghc/tests/lib/Time/time002.stdout
deleted file mode 100644 (file)
index 587579a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Ok.
diff --git a/ghc/tests/lib/Time/time003.hs b/ghc/tests/lib/Time/time003.hs
deleted file mode 100644 (file)
index ac2c72d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-import Time
-
-main :: IO ()
-main = do
-    time <- getClockTime
-    let l = length (show time)
-    print (l == 28 || l == 29) -- "CEST" vs "UTC" vs "GMT" vs...
-    let (CalendarTime year month mday hour min sec psec 
-                      wday yday timezone gmtoff isdst) = toUTCTime time
-        time2 = wdays !! fromEnum wday ++
-               (' ' : months !! fromEnum month) ++
-               (' ' : shows2 mday (' ' : shows2 hour (':' : shows2 min (':' : shows2 sec
-               (' ' : timezone ++ ' ' : shows year "\n")))))
-        l2 = length time2
-    print (l == 28 || l == 29)
-
-  where
-    wdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
-    months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", 
-             "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
-    shows2 x = showString (pad2 x)
-    pad2 x = case show x of
-               c@[_] -> '0' : c
-               cs -> cs
diff --git a/ghc/tests/lib/Time/time003.stdout b/ghc/tests/lib/Time/time003.stdout
deleted file mode 100644 (file)
index dbde422..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-True
-True
diff --git a/ghc/tests/lib/Time/time004.hs b/ghc/tests/lib/Time/time004.hs
deleted file mode 100644 (file)
index 31fd567..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-import Time
-
-main :: IO ()
-main = do
-    time <- getClockTime
-    let (CalendarTime year month mday hour min sec psec 
-                      wday yday timezone gmtoff isdst) = toUTCTime time
-        time' = toClockTime (CalendarTime (year - 1) month mday hour min sec psec
-                             wday yday timezone gmtoff isdst)
-    print (length (show time) == length (show time'))
diff --git a/ghc/tests/lib/Time/time004.stdout b/ghc/tests/lib/Time/time004.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/lib/TimeExts/Makefile b/ghc/tests/lib/TimeExts/Makefile
deleted file mode 100644 (file)
index 66144ce..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/21 15:25:25 simonmar Exp $
-
-TOP = ../..
-
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -package lang
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/TimeExts/timeexts001.hs b/ghc/tests/lib/TimeExts/timeexts001.hs
deleted file mode 100644 (file)
index 30c7280..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-module Main(main) where
-
-import Time
-import TimeExts
-
-start = toClockTime(
-   CalendarTime {
-      ctYear = 1973,
-      ctMonth = December,
-      ctDay = 31,
-      ctHour = 11,
-      ctMin = 43,
-      ctSec = 55,
-      ctPicosec = 123123123123,
-      ctWDay = Monday,
-      ctYDay = 0,
-      ctTZName = "UTC",
-      ctTZ = 0,
-      ctIsDST = False
-      })
-
-pClock :: ClockTime -> IO()
-pClock c = 
-   do
-      putStr(calendarTimeToString(toUTCTime c))
-      putStr "\n"
-
-getDiff :: TimeAddable a => ClockTime -> a
-getDiff now = diffClock now start
-
-printSum :: TimeAddable a => a -> IO ()
-printSum diff = 
-   let
-      sum = addClock start diff
-   in
-      pClock sum
-      
-main =
-   do
-      -- now <- getClockTime
-       -- now fixed so we get reliable output (SDM)
-      let now = TOD 944662832 34398000000
-      putStr "Start: "
-      pClock start
-      putStr "End: "
-      pClock now
-      putStr "Whole Picos\n"
-      printSum((getDiff now)::DiffPico)
-      putStr "Whole Seconds\n"
-      printSum((getDiff now)::DiffPico)
-      putStr "Whole Minutes\n"
-      printSum((getDiff now)::DiffMinute)
-      putStr "Whole Hours\n"
-      printSum((getDiff now)::DiffHour)
-      putStr "Whole Days\n"
-      printSum((getDiff now)::DiffDay)
-      putStr "Whole Months\n"
-      printSum((getDiff now)::DiffMonth)
-      putStr "Whole Years\n"
-      printSum((getDiff now)::DiffYear)
-
-
-
diff --git a/ghc/tests/lib/TimeExts/timeexts001.stdout b/ghc/tests/lib/TimeExts/timeexts001.stdout
deleted file mode 100644 (file)
index c2e987e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Start: Mon Dec 31 11:43:55 UTC 1973
-End: Wed Dec  8 14:20:32 UTC 1999
-Whole Picos
-Wed Dec  8 14:20:32 UTC 1999
-Whole Seconds
-Wed Dec  8 14:20:32 UTC 1999
-Whole Minutes
-Wed Dec  8 14:19:55 UTC 1999
-Whole Hours
-Wed Dec  8 13:43:55 UTC 1999
-Whole Days
-Wed Dec  8 11:43:55 UTC 1999
-Whole Months
-Wed Dec  1 11:43:55 UTC 1999
-Whole Years
-Thu Dec 31 11:43:55 UTC 1998
diff --git a/ghc/tests/lib/net/Makefile b/ghc/tests/lib/net/Makefile
deleted file mode 100644 (file)
index 455110d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 2001/05/01 11:46:56 simonmar Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint -package net -fglasgow-exts
-
-.PRECIOUS: %.o %.bin
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/net/net001.hs b/ghc/tests/lib/net/net001.hs
deleted file mode 100644 (file)
index e5621c3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module Main where
-
-import Socket
-import Concurrent
-import IO
-
-main = do
-   forkIO server
-   yield
-   h <- connectTo "localhost" (PortNumber 22222)
-   l <- hGetLine h
-   hClose h
-   print l
- where
-   server = do
-         s <- listenOn (PortNumber 22222)
-         (h, host, port) <- accept s
-         hPutStrLn h "hello"
-         hClose h
-
diff --git a/ghc/tests/lib/net/net001.stdout b/ghc/tests/lib/net/net001.stdout
deleted file mode 100644 (file)
index 3580093..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"hello"
diff --git a/ghc/tests/lib/posix/Makefile b/ghc/tests/lib/posix/Makefile
deleted file mode 100644 (file)
index 044235b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint -package posix -fglasgow-exts
-
-# Posix007 is interactive, you'll have to issue a ^C on your tty.
-posix007_RUNTEST_OPTS += -i/dev/tty
-
-.PRECIOUS: %.o %.bin
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/posix/posix001.hs b/ghc/tests/lib/posix/posix001.hs
deleted file mode 100644 (file)
index ed20df7..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-module Main(main) where
-
-import Posix
-
-main :: IO ()
-main = do
-    ppid <- getParentProcessID
-    pid  <- getProcessID
-    putStr "Parent Process ID: "
-    print ppid
-    putStr "Process ID: "
-    print pid
-    putStr "forking ps ux"
-    print ppid
-    child <- forkProcess
-    case child of
-       Nothing -> executeFile "ps" True ["ux" ++ show ppid] Nothing
-       Just x -> doParent x pid
-
-doParent cpid pid = do
-    getProcessStatus True False cpid
-    putStr "\nChild finished.  Now exec'ing ps ux\n"
-    print pid
-    executeFile "ps" True ["ux" ++ show pid] Nothing
diff --git a/ghc/tests/lib/posix/posix001.stdout b/ghc/tests/lib/posix/posix001.stdout
deleted file mode 100644 (file)
index c9cd245..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-USER       PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
-sof      30160  0.0  0.2  1244   648  p0 S   15:09   0:00 /bin/sh -c ./posix001
-USER       PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
-sof      30161  0.0  0.1   892   336  p0 R   15:09   0:00 ps ux30161 
diff --git a/ghc/tests/lib/posix/posix002.hs b/ghc/tests/lib/posix/posix002.hs
deleted file mode 100644 (file)
index 8d01e8b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-import Posix
-
-main =
-    executeFile "printenv" True [] (Just [("ONE","1"),("TWO","2")])
diff --git a/ghc/tests/lib/posix/posix002.stdout b/ghc/tests/lib/posix/posix002.stdout
deleted file mode 100644 (file)
index 5e17a60..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-ONE=1
-TWO=2
diff --git a/ghc/tests/lib/posix/posix003.hs b/ghc/tests/lib/posix/posix003.hs
deleted file mode 100644 (file)
index dbea5e1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import IO
-import Posix
-
-main = 
-    openFile "po003.out" WriteMode >>= \ h ->
-    runProcess "pwd" [] Nothing (Just "/usr/tmp") Nothing (Just h) Nothing
diff --git a/ghc/tests/lib/posix/posix003.stdout b/ghc/tests/lib/posix/posix003.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/posix/posix004.hs b/ghc/tests/lib/posix/posix004.hs
deleted file mode 100644 (file)
index 2423f3f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-import Posix
-import System(ExitCode(..), exitWith)
-
-main = 
-    forkProcess >>= \ maybe_pid ->
-    case maybe_pid of
-       Nothing -> raiseSignal floatingPointException
-       _ -> doParent
-
-doParent =
-    getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
-    case tc of
-       Terminated sig | sig == floatingPointException -> forkChild2
-       _ -> fail (userError "unexpected termination cause")
-
-forkChild2 =
-    forkProcess >>= \ maybe_pid ->
-    case maybe_pid of
-       Nothing -> exitImmediately (ExitFailure 42)
-       _ -> doParent2
-    
-doParent2 =
-    getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
-    case tc of
-       Exited (ExitFailure 42) -> forkChild3
-       _ -> fail (userError "unexpected termination cause (2)")
-           
-forkChild3 =
-    forkProcess >>= \ maybe_pid ->
-    case maybe_pid of
-       Nothing -> exitImmediately (ExitSuccess)
-       _ -> doParent3
-    
-doParent3 =
-    getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
-    case tc of
-       Exited ExitSuccess -> forkChild4
-       _ -> fail (userError "unexpected termination cause (3)")
-           
-forkChild4 =
-    forkProcess >>= \ maybe_pid ->
-    case maybe_pid of
-       Nothing -> raiseSignal softwareStop
-       _ -> doParent4
-    
-doParent4 =
-    getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
-    case tc of
-       Stopped sig | sig == softwareStop -> enoughAlready pid
-       _ -> fail (userError "unexpected termination cause (4)")
-           
-enoughAlready pid =
-    signalProcess killProcess pid >>
-    getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
-    case tc of
-       Terminated sig | sig == killProcess -> putStr "I'm happy.\n"
-       _ -> fail (userError "unexpected termination cause (5)")
-    
diff --git a/ghc/tests/lib/posix/posix004.stdout b/ghc/tests/lib/posix/posix004.stdout
deleted file mode 100644 (file)
index 8ed7ee5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-I'm happy.
diff --git a/ghc/tests/lib/posix/posix005.hs b/ghc/tests/lib/posix/posix005.hs
deleted file mode 100644 (file)
index a531829..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-import Posix
-import IO
-main =
-    hSetBuffering stdout NoBuffering >>
-    getEnvVar "TERM" >>= \ term ->
-    putStrLn term >>
-    setEnvironment [("one","1"),("two","2")] >>
-    getEnvironment >>= \ env ->
-    print env >>
-    setEnvVar "foo" "bar" >>
-    getEnvironment >>= \ env ->
-    print env >>
-    setEnvVar "foo" "baz" >>
-    getEnvironment >>= \ env ->
-    print env >>
-    setEnvVar "fu" "bar" >>
-    getEnvironment >>= \ env ->
-    print env >>
-    removeEnvVar "foo" >>
-    getEnvironment >>= \ env ->
-    print env >>
-    setEnvironment [] >>
-    getEnvironment >>= \ env ->
-    print env
-
diff --git a/ghc/tests/lib/posix/posix005.stdout b/ghc/tests/lib/posix/posix005.stdout
deleted file mode 100644 (file)
index 9896f43..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-emacs
-[("one","1"),("two","2")]
-[("one","1"),("two","2"),("foo","bar")]
-[("one","1"),("two","2"),("foo","baz")]
-[("one","1"),("two","2"),("foo","baz"),("fu","bar")]
-[("one","1"),("two","2"),("fu","bar")]
-[]
diff --git a/ghc/tests/lib/posix/posix006.hs b/ghc/tests/lib/posix/posix006.hs
deleted file mode 100644 (file)
index eb6451d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-import Posix
-
-main = 
-    epochTime >>= \ start ->
-    sleep 5 >>
-    let timeleft = 0 in
-    epochTime >>= \ finish ->
-    putStr "Started: " >>
-    print start >>
-    putStr "\nSlept: " >>
-    print (5 - timeleft) >>
-    putStr "\nFinished: " >>
-    print finish >>
-    putChar '\n'
diff --git a/ghc/tests/lib/posix/posix006.stdout b/ghc/tests/lib/posix/posix006.stdout
deleted file mode 100644 (file)
index d66a4ff..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Started: 902585354
-
-Slept: 5
-
-Finished: 902585359
-
diff --git a/ghc/tests/lib/posix/posix007.hs b/ghc/tests/lib/posix/posix007.hs
deleted file mode 100644 (file)
index 2e62820..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-import Posix
-
--- This test is an example of where something more sophisticated than runstdtest
--- is required, as its interactive.
-
-main = do
-    installHandler keyboardSignal (Catch doCtrlC) Nothing
-    ta  <- getTerminalAttributes stdInput
-    case (controlChar ta Interrupt) of
-      Nothing -> fixMe ta
-      Just x  -> continue x
-
-fixMe ta = do
-    putStr "Oops...no interrupt character?\nI can fix that...\n"
-    setTerminalAttributes stdInput (withCC ta (Interrupt, '\ETX')) Immediately
-    ta   <- getTerminalAttributes stdInput
-    case (controlChar ta Interrupt) of
-      Nothing -> putStr "...Then again, maybe I can't\n"
-      Just x -> continue x
-
-continue x =
-    putStr "Press '"
-    putStr (ccStr x)
-    putStr "'.\n"
-    awaitSignal Nothing
-    putStr "How did I get here?\n"
-
-doCtrlC =
-    putStr "Caught an interrupt.\n"
-
-ccStr '\DEL' = "^?"
-ccStr x 
-  | x >= ' ' = [x]
-  | otherwise = ['^', (toEnum (fromEnum x + fromEnum '@'))]
diff --git a/ghc/tests/lib/posix/posix007.stdout b/ghc/tests/lib/posix/posix007.stdout
deleted file mode 100644 (file)
index a69478b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Press '^C'.
-Caught an interrupt.
diff --git a/ghc/tests/lib/posix/posix008.hs b/ghc/tests/lib/posix/posix008.hs
deleted file mode 100644 (file)
index 249e58e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-import Posix
-
-main =
-    installHandler realTimeAlarm (Catch alarmclock) Nothing >>
-    putStr "Scheduling an alarm in 5 seconds...\n" >>
-    scheduleAlarm 5 >>
-    putStr "Sleeping one minute.\n" >>
-    sleep 60 >>
-    putStr "How did I get here?\n"
-
-alarmclock =
-    putStr "The alarm went off.\n"
diff --git a/ghc/tests/lib/posix/posix008.stdout b/ghc/tests/lib/posix/posix008.stdout
deleted file mode 100644 (file)
index 582d22b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Scheduling an alarm in 5 seconds...
-Sleeping one minute.
-The alarm went off.
diff --git a/ghc/tests/lib/posix/posix009.hs b/ghc/tests/lib/posix/posix009.hs
deleted file mode 100644 (file)
index 1f230f6..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-import Posix
-
-main =
-    putStr "Blocking real time alarms.\n" >>
-    blockSignals (addSignal realTimeAlarm emptySignalSet) >>
-    putStr "Scheduling an alarm in 2 seconds...\n" >>
-    scheduleAlarm 2 >>
-    putStr "Sleeping 5 seconds.\n" >>
-    sleep 5 >>
-    putStrLn "Woken up" >>
-    getPendingSignals >>= \ ints ->
-    putStr "Checking pending interrupts for RealTimeAlarm\n" >>
-    print (inSignalSet realTimeAlarm ints) >>
-    putChar '\n'
-
diff --git a/ghc/tests/lib/posix/posix009.stdout b/ghc/tests/lib/posix/posix009.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/posix/posix010.hs b/ghc/tests/lib/posix/posix010.hs
deleted file mode 100644 (file)
index 83d5f27..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-import Posix
-
-main =
-    getUserEntryForName "sof"     >>= \ sof ->
-    getUserEntryForName "partain" >>= \ partain ->
-    putStr (ue2String sof) >>
-    putChar '\n' >>    
-    putStr (ue2String partain) >>
-    putChar '\n' >>    
-    getUserEntryForID (userID sof) >>= \ muid ->
-    getUserEntryForID (userID partain) >>= \ puid ->
-    putStr (ue2String muid) >>
-    putChar '\n' >>    
-    putStr (ue2String puid) >>
-    putChar '\n'
-
-ue2String ue =
-    name ++ (':' : (show uid) ++ (':' : (show gid) ++ (':' : home ++ (':' : shell))))
-  where
-    name = userName ue
-    uid = userID ue
-    gid = userGroupID ue
-    home = homeDirectory ue
-    shell = userShell ue
diff --git a/ghc/tests/lib/posix/posix010.stdout b/ghc/tests/lib/posix/posix010.stdout
deleted file mode 100644 (file)
index ec1d729..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-mattson:104:401:/users/fp/mattson:/bin/csh
-partain:184:401:/users/fp/partain:/usr/local/bin/tcsh
-mattson:104:401:/users/fp/mattson:/bin/csh
-partain:184:401:/users/fp/partain:/usr/local/bin/tcsh
diff --git a/ghc/tests/lib/posix/posix011.hs b/ghc/tests/lib/posix/posix011.hs
deleted file mode 100644 (file)
index f8baf1c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-import Posix
-
-main =
-    getGroupEntryForName "grasp" >>= \ grasp ->
-    getGroupEntryForName "staff" >>= \ staff ->
-    putStr (ge2String grasp) >>
-    putChar '\n' >>    
-    putStr (ge2String staff) >>
-    putChar '\n' >>    
-    getGroupEntryForID (groupID grasp) >>= \ guid ->
-    getGroupEntryForID (groupID staff) >>= \ suid ->
-    putStr (ge2String guid) >>
-    putChar '\n' >>    
-    putStr (ge2String suid) >>
-    putChar '\n'
-
-ge2String ge =
-    name ++ (':' : (show gid) ++ (':' : members))
-  where
-    name = groupName ge
-    gid = groupID ge
-    members = foldr (\x y -> x ++ (',' : y)) "" (groupMembers ge)
diff --git a/ghc/tests/lib/posix/posix011.stdout b/ghc/tests/lib/posix/posix011.stdout
deleted file mode 100644 (file)
index 11b5df4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-grasp:401:andre,andy,ap,areid,cvh,dm,dnt,gnik,grasp,hwloidl,jan,johan,jonathan,jtod,kh,laszlo,mattson,partain,sansom,satnam,sewardj,sharpkm,simonm,simonpj,sof,trinder,wadler,
-staff:9:aileen,alexa,ali,alison,andy,anne,ansftp,aran,arthur,audit,bill,botech,bw,carol,carron,cathy,conftp,cs2head,cvh,dam,darryn,daw,dcg,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,fido,finance,fiona,footsie,george,gilbert,gilles,gsm,handbook,harrismi,helen,hme,hmg,huw,iain,id,igr,iii,imis-doc,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jim,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kirsten,kmssys,laurent,lewis,lisa,lizbeth,logiej,love,lyons,maclib,macneisd,margaret,mark,mary,mattson,meurig,mjj,mmi,monica,mossin,mpa,muffy,nk,norman,partain,pd,pdg,pete,pp,ps,quintin,rab,ray,rdm,reh,replib,rff,rffingres,rich,rios,rjw,rn,ron,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonm,simonpj,slurry,softlib,stephen,steve,stevem,stuart,support,susan,tania,tech,teresa,tfm,tommyk,tracy,trinder,types,typesftp,wadler,wf,xadmin,
-grasp:401:andre,andy,ap,areid,cvh,dm,dnt,gnik,grasp,hwloidl,jan,johan,jonathan,jtod,kh,laszlo,mattson,partain,sansom,satnam,sewardj,sharpkm,simonm,simonpj,sof,trinder,wadler,
-staff:9:aileen,alexa,ali,alison,andy,anne,ansftp,aran,arthur,audit,bill,botech,bw,carol,carron,cathy,conftp,cs2head,cvh,dam,darryn,daw,dcg,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,fido,finance,fiona,footsie,george,gilbert,gilles,gsm,handbook,harrismi,helen,hme,hmg,huw,iain,id,igr,iii,imis-doc,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jim,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kirsten,kmssys,laurent,lewis,lisa,lizbeth,logiej,love,lyons,maclib,macneisd,margaret,mark,mary,mattson,meurig,mjj,mmi,monica,mossin,mpa,muffy,nk,norman,partain,pd,pdg,pete,pp,ps,quintin,rab,ray,rdm,reh,replib,rff,rffingres,rich,rios,rjw,rn,ron,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonm,simonpj,slurry,softlib,stephen,steve,stevem,stuart,support,susan,tania,tech,teresa,tfm,tommyk,tracy,trinder,types,typesftp,wadler,wf,xadmin,
diff --git a/ghc/tests/lib/posix/posix012.hs b/ghc/tests/lib/posix/posix012.hs
deleted file mode 100644 (file)
index 87f002a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-import Posix
-import IO -- 1.3
-
-main =
-    createFile "po012.out" stdFileMode >>= \ fd ->
-    installHandler processStatusChanged (Catch (reap1 fd)) Nothing >>
-    ls >>
-    awaitSignal Nothing
-
-ls =
-    runProcess "ls" ["-l"] Nothing Nothing Nothing Nothing Nothing
-
-reap1 fd =
-    hPutStrLn stderr "Reaper1"         >>
-    getAnyProcessStatus True False     >>
-    installHandler processStatusChanged (Catch (reap2 fd)) Nothing >>
-    fdWrite fd (take 666 (repeat 'x')) >>
-    ls                                 >>
-    awaitSignal Nothing
-    
-reap2 fd =
-    hPutStrLn stderr "Reaper2"     >>
-    getAnyProcessStatus True False >>
-    installHandler processStatusChanged (Catch (reap3 fd)) Nothing >>
-    setFileMode "po012.out" 
-       (foldr1 unionFileModes [ownerReadMode,ownerWriteMode,groupReadMode,otherReadMode]) >>
-    ls >>
-    awaitSignal Nothing
-    
-reap3 fd =
-    hPutStrLn stderr "Reaper3"     >>
-    getAnyProcessStatus True False >>
-    installHandler processStatusChanged (Catch (reap4 fd)) Nothing >>
-    setFileTimes "po012.out" 0 0 >>
-    ls >>
-    awaitSignal Nothing
-    
-reap4 fd =
-    hPutStrLn stderr "Reaper4"     >>
-    getAnyProcessStatus True False >>
-    installHandler processStatusChanged (Catch (reap5 fd)) Nothing >>
-    --removeLink "po012.out" >>
-    ls >>
-    awaitSignal Nothing
-
-reap5 fd =
-    hPutStrLn stderr "Reaper5"     >>
-    getAnyProcessStatus True False >>
-    fdSeek fd SeekFromEnd 0        >>= \ bytes ->
-    if bytes == 666 then
-       fdSeek fd AbsoluteSeek 0   >>
-       hPutStrLn stderr "Reaper5"     >>
-       fdRead fd 666             >>= \ (str, _) ->
-       if str == (take 666 (repeat 'x')) then
-           putStr "Okay\n"
-       else
-           putStr "Read failed\n"
-    else
-       putStr "Seek returned wrong size\n"
diff --git a/ghc/tests/lib/posix/posix012.stdout b/ghc/tests/lib/posix/posix012.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/posix/posix013.hs b/ghc/tests/lib/posix/posix013.hs
deleted file mode 100644 (file)
index b78930b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
---!! Querying for system information.
-module Main(main) where
-
-import Posix
-
-main = do
-  sid <- getSystemID
-  let
-   info =
-    [ "Node Name: "   , nodeName sid
-    , "OS: "         , systemName sid
-    , "Arch: "        , machine sid
-    , "Version: "     , version sid
-    , "Release: "     , release sid
-    ]
-  putStrLn2 info
-
-putStrLn2 :: [String] -> IO ()
-putStrLn2 []  = return ()
-putStrLn2 [x] = putStrLn x
-putStrLn2 (x1:x2:xs) = putStrLn (x1++x2) >> putStrLn2 xs
diff --git a/ghc/tests/lib/posix/posix014.hs b/ghc/tests/lib/posix/posix014.hs
deleted file mode 100644 (file)
index bb3518c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
---!! Basic pipe usage
-module Main(main) where
-
-import Posix
-
-main = do
-  str <- getEffectiveUserName
-  putStrLn str
-  (rd, wd) <- createPipe
-  n <- forkProcess
-  case n of
-    Nothing  -> do
-       (str,_) <- fdRead rd 32
-       -- avoid them zombies
-       putStrLn str
-    Just pid -> do
-       fdWrite wd "Hi, there - forked child calling" 
---       getProcessStatus False True pid
-       return ()
diff --git a/ghc/tests/lib/should_run/Makefile b/ghc/tests/lib/should_run/Makefile
deleted file mode 100644 (file)
index 4ec8e8f..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.26 2001/03/28 16:35:39 simonmar Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-packedstring001_HC_OPTS = -package lang
-exceptions001_HC_OPTS   = -package lang        -fno-warn-missing-methods
-stableptr001_HC_OPTS    = -package lang
-stableptr003_HC_OPTS    = -package lang
-stableptr004_HC_OPTS    = -package lang
-list001_HC_OPTS         = -package lang
-uri001_HC_OPTS         = -package lang -package net
-time001_HC_OPTS                = -package lang
-io001_HC_OPTS          = -package lang
-io002_HC_OPTS          = -package lang
-addr001_HC_OPTS        = -package lang
-
-enum01_HC_OPTS         = -cpp -package lang -H12m
-enum02_HC_OPTS         = -cpp -package lang -H12m
-enum03_HC_OPTS         = -cpp -package lang -H12m
-
-stableptr001_RUNTEST_OPTS = +RTS -K4m
-stableptr004_RUNTEST_OPTS = +RTS -K4m
-dynamic001_HC_OPTS = -package lang
-dynamic002_HC_OPTS = -package lang
-
-ioexts001_HC_OPTS      = -package lang -O
-ioexts001_RUNTEST_OPTS  = +RTS -K16m
-ioexts002_HC_OPTS       = -package lang
-
-memo001_HC_OPTS                = -package lang -package util
-# stress the garbage collector a bit, to make sure weak pointers are being
-# finalized properly, and stable names are GC'd etc.
-memo001_RUNTEST_OPTS    = +RTS -A10k -G1
-
-memo002_HC_OPTS                = -package lang -package util
-memo002_RUNTEST_OPTS   = 20
-
-weak001_HC_OPTS                = -package lang -fglasgow-exts
-
-SRC_MKDEPENDHS_OPTS += -package lang
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/lib/should_run/addr001.hs b/ghc/tests/lib/should_run/addr001.hs
deleted file mode 100644 (file)
index 89e49c4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Testing that Show for Addr is OK..
-module Main(main) where
-
-import Addr
-
-main :: IO ()
-main = do
-  print (intToAddr maxBound)
-  print (intToAddr minBound)
-
diff --git a/ghc/tests/lib/should_run/addr001.stdout b/ghc/tests/lib/should_run/addr001.stdout
deleted file mode 100644 (file)
index e098b1b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffff
-0x80000000
diff --git a/ghc/tests/lib/should_run/char001.hs b/ghc/tests/lib/should_run/char001.hs
deleted file mode 100644 (file)
index ec4ae9b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
--- !!! Testing the behaviour of Char.lexLitChar a little..
-module Main where
-
-import Char
-
-lex' str = do
-  putStr ("lex " ++ str ++ " = ")
-  print (lex str)
-
-hexes = do
-  lex' "'\\X00'"
-  lex' "'\\x0f2'"
-  lex' "'\\xf2'"
-  lex' "'\\xf2t'"
-  lex' "'\\X24'"
-  lex' "'\\x24b'"
-  lex' "'\\Xa4b'"
-  lex' "'\\xa4bg'"
-
-octs = do
-  lex' "'\\o00'"
-  lex' "'\\o05'"
-  lex' "'\\o50'"
-  lex' "'\\o72'"
-  lex' "'\\o82'"
-  lex' "'\\O24'"
-  lex' "'\\O000024'"
-  lex' "'\\024b'"
-  lex' "'\\o14b'"
-  lex' "'\\0a4bg'"
-
-main = do
-  hexes
-  octs
-
-
-
-
-
diff --git a/ghc/tests/lib/should_run/char001.stdout b/ghc/tests/lib/should_run/char001.stdout
deleted file mode 100644 (file)
index e524ce2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-lex '\X00' = [("'\\x00'","")]
-lex '\x0f2' = [("'\\x0f2'","")]
-lex '\xf2' = [("'\\xf2'","")]
-lex '\xf2t' = []
-lex '\X24' = [("'\\x24'","")]
-lex '\x24b' = [("'\\x24b'","")]
-lex '\Xa4b' = [("'\\xa4b'","")]
-lex '\xa4bg' = []
-lex '\o00' = [("'\\o00'","")]
-lex '\o05' = [("'\\o05'","")]
-lex '\o50' = [("'\\o50'","")]
-lex '\o72' = [("'\\o72'","")]
-lex '\o82' = []
-lex '\O24' = [("'\\o24'","")]
-lex '\O000024' = [("'\\o000024'","")]
-lex '\024b' = []
-lex '\o14b' = []
-lex '\0a4bg' = []
diff --git a/ghc/tests/lib/should_run/dynamic001.hs b/ghc/tests/lib/should_run/dynamic001.hs
deleted file mode 100644 (file)
index 286b3ae..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
--- !!! Dynamic library regression tests
-module Main(main) where
-
-import Dynamic
-
-main :: IO ()
-main = do
-   test   "toDyn"   toDyn_list
-   testIO "fromDyn" fromDyn_test
-
-toDyn_list :: [Dynamic]
-toDyn_list =
-    [ toDyn (1::Int)
-    , toDyn ('a')
-    , toDyn False
-    , toDyn ((-1.0)::Float)
-    , toDyn (0.0::Double)
-    , toDyn (1394::Integer)
-    , toDyn (print "hello")
-    , toDyn toDyn_list
-    , toDyn ([]::[Int])
-    , toDyn (Nothing  :: Maybe Int)
-    , toDyn ((Just 2) :: Maybe Int)
-    , toDyn ((Just 2) :: Maybe Int)
-    , toDyn ((Left 3) :: Either Int Bool)
-    , toDyn ((Right 3) :: Either Char Int)
-    , toDyn ()
-    , toDyn LT
-    , toDyn ((),2::Int)
-    , toDyn ((),2::Int,'a')
-    , toDyn ((),2::Int,'a',1.0::Double)
-    , toDyn ((),2::Int,'a',1.0::Double,Nothing::Maybe Bool)
-    , toDyn ((+) :: Int -> Int -> Int)
-    , toDyn ((+) :: Integer -> Integer -> Integer)
-    , toDyn ((++) :: [Char] -> [Char] -> [Char])
-    ]
-
--- Testing the conversion from Dynamic values:
-fromDyn_test :: IO ()
-fromDyn_test = do
-   print (fromDyn (toDyn (1::Int)) (0::Int))
-   print (fromDyn (toDyn ('a'::Char)) (0::Int))
-   print (fromDyn (toDyn 'a') 'b')
-   print (fromDyn (toDyn (1::Float)) (0::Float))
-   print (fromDyn (toDyn (2::Float)) (0::Int))
-   print (fromDyn (toDyn (3::Double)) (0::Double))
-   print (fromDyn (toDyn (4::Double)) (0::Int))
-   print (fromDyn (toDyn (5::Integer)) (0::Integer))
-   print (fromDyn (toDyn (6::Integer)) False)
-   print (fromDyn (toDyn [1,3,5::Integer]) ([]::[Integer]))
-   print (fromDyn (toDyn (Just True)) (Nothing::Maybe Bool))
-   print (fromDyn (toDyn (Left True::Either Bool Bool)) (Right False :: Either Bool Bool))
-   print (fromDyn (toDyn LT) GT)
-   print (fromDyn (toDyn ((+1)::Int->Int)) False)
-   print ((fromDyn (toDyn ((+1)::Int->Int)) ((+2)::Int->Int)) 3)
-   print ((fromDyn (toDyn ((++)::[Int]->[Int]->[Int])) ((undefined)::[Int]->[Int]->[Int])) [1] [2])
-
-    
--- Misc test utilities:
-test :: Show a => String -> [a] -> IO ()
-test str ls = do
-  putStrLn ("*** Testing: " ++ str ++ " ***")
-  putStrLn (showListLn ls)
-
-testIO :: String -> IO () -> IO ()
-testIO str tst = do
-  putStrLn ("*** Testing: " ++ str ++ " ***")
-  tst
-
-
--- showListLn presents a list in a diff-friendly format.
--- showListLn [a1,..an]
---  =>
---      [ a1
---      , a2
---      ..
---      , an
---      ]
---   
-showListLn :: Show a => [a] -> String
-showListLn [] = ""
-showListLn ls = '[' : ' ' : go ls
- where
-   go    [x] = show x ++ "\n]"
-   go (x:xs) = show x ++ '\n':',':' ':go xs
-
-{-
-test8 = toDyn (mkAppTy listTc)
-test9 :: Float
-test9 = fromDyn test8 0
-
-printf :: String -> [Dynamic] -> IO ()
-printf str args = putStr (decode str args)
- where
-  decode [] [] = []
-  decode ('%':'n':cs) (d:ds) =
-    (\ v -> show v++decode cs ds) (fromDyn  d (0::Int))
-  decode ('%':'c':cs) (d:ds) =
-    (\ v -> show v++decode cs ds) (fromDyn  d ('\0'))
-  decode ('%':'b':cs) (d:ds) =
-    (\ v -> show v++decode cs ds) (fromDyn  d (False::Bool))
-  decode (x:xs) ds = x:decode xs ds
-
-test10 :: IO ()
-test10 = printf "%n = %c, that much is %b\n" [toDyn (3::Int),toDyn 'a', toDyn False]
-
--}
diff --git a/ghc/tests/lib/should_run/dynamic001.stdout b/ghc/tests/lib/should_run/dynamic001.stdout
deleted file mode 100644 (file)
index c2d365a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-*** Testing: toDyn ***
-[ <<Int>>
-, <<Char>>
-, <<Bool>>
-, <<Float>>
-, <<Double>>
-, <<Integer>>
-, <<IO ()>>
-, <<[Dynamic]>>
-, <<[Int]>>
-, <<Maybe Int>>
-, <<Maybe Int>>
-, <<Maybe Int>>
-, <<Either Int Bool>>
-, <<Either Char Int>>
-, <<()>>
-, <<Ordering>>
-, <<((),Int)>>
-, <<((),Int,Char)>>
-, <<((),Int,Char,Double)>>
-, <<((),Int,Char,Double,(Maybe Bool))>>
-, <<Int -> Int -> Int>>
-, <<Integer -> Integer -> Integer>>
-, <<[Char] -> [Char] -> [Char]>>
-]
-*** Testing: fromDyn ***
-1
-0
-'a'
-1.0
-0
-3.0
-0
-5
-False
-[1,3,5]
-Just True
-Left True
-LT
-False
-4
-[1,2]
diff --git a/ghc/tests/lib/should_run/dynamic002.hs b/ghc/tests/lib/should_run/dynamic002.hs
deleted file mode 100644 (file)
index cfbf829..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
--- !!! Testing Typeable instances
-module Main(main) where
-
-import Dynamic
-import Array
-import Complex
-import IO
-import Addr
-import ForeignObj
-import IOExts
-import Int
-import ST
-import StableName
-import StablePtr
-import Word
-import Exception
-import ByteArray
-import MutableArray
-import PackedString
-import Weak
-import MArray
-import IArray
-import CTypes
-import CTypesISO
-
-main :: IO ()
-main = do
-   print (typeOf (undefined :: [()]))
-   print (typeOf (undefined :: ()))
-   print (typeOf (undefined :: ((),())))
-   print (typeOf (undefined :: ((),(),())))
-   print (typeOf (undefined :: ((),(),(),())))
-   print (typeOf (undefined :: ((),(),(),(),())))
-   print (typeOf (undefined :: (() -> ())))
-   print (typeOf (undefined :: (Array () ())))
-   print (typeOf (undefined :: Bool))
-   print (typeOf (undefined :: Char))
-   print (typeOf (undefined :: (Complex ())))
-   print (typeOf (undefined :: Double))
-   print (typeOf (undefined :: (Either () ())))
-   print (typeOf (undefined :: Float))
-   print (typeOf (undefined :: Handle))
-   print (typeOf (undefined :: Int))
-   print (typeOf (undefined :: Integer))
-   print (typeOf (undefined :: IO ()))
-   print (typeOf (undefined :: (Maybe ())))
-   print (typeOf (undefined :: Ordering))
-
-   print (typeOf (undefined :: Addr))
-   print (typeOf (undefined :: Dynamic))
-   print (typeOf (undefined :: ForeignObj))
-   print (typeOf (undefined :: (IORef ())))
-   print (typeOf (undefined :: Int8))
-   print (typeOf (undefined :: Int16))
-   print (typeOf (undefined :: Int32))
-   print (typeOf (undefined :: Int64))
-   print (typeOf (undefined :: (ST () ())))
-   print (typeOf (undefined :: (StableName ())))
-   print (typeOf (undefined :: (StablePtr ())))
-   print (typeOf (undefined :: TyCon))
-   print (typeOf (undefined :: TypeRep))
-   print (typeOf (undefined :: Word8))
-   print (typeOf (undefined :: Word16))
-   print (typeOf (undefined :: Word32))
-   print (typeOf (undefined :: Word64))
-
-   print (typeOf (undefined :: ArithException))
-   print (typeOf (undefined :: AsyncException))
-   print (typeOf (undefined :: (ByteArray ())))
-   print (typeOf (undefined :: Exception))
-   print (typeOf (undefined :: (IOArray () ())))
-   print (typeOf (undefined :: (IOUArray () ())))
-   print (typeOf (undefined :: (MutableByteArray () ())))
-   print (typeOf (undefined :: PackedString))
-   print (typeOf (undefined :: (STArray () () ())))
-   print (typeOf (undefined :: (STUArray () () ())))
-   print (typeOf (undefined :: (StableName ())))
-   print (typeOf (undefined :: (StablePtr ())))
-   print (typeOf (undefined :: (UArray () ())))
-   print (typeOf (undefined :: (Weak ())))
-
-   print (typeOf (undefined :: CChar))
-   print (typeOf (undefined :: CSChar))
-   print (typeOf (undefined :: CUChar))
-   print (typeOf (undefined :: CShort))
-   print (typeOf (undefined :: CUShort))
-   print (typeOf (undefined :: CInt))
-   print (typeOf (undefined :: CUInt))
-   print (typeOf (undefined :: CLong))
-   print (typeOf (undefined :: CULong))
-   print (typeOf (undefined :: CLLong))
-   print (typeOf (undefined :: CULLong))
-   print (typeOf (undefined :: CFloat))
-   print (typeOf (undefined :: CDouble))
-   print (typeOf (undefined :: CLDouble))
-
-   print (typeOf (undefined :: CPtrdiff))
-   print (typeOf (undefined :: CSize))
-   print (typeOf (undefined :: CWchar))
-   print (typeOf (undefined :: CSigAtomic))
-   print (typeOf (undefined :: CClock))
-   print (typeOf (undefined :: CTime))
diff --git a/ghc/tests/lib/should_run/dynamic002.stdout b/ghc/tests/lib/should_run/dynamic002.stdout
deleted file mode 100644 (file)
index 23e3cab..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-[()]
-()
-((),())
-((),(),())
-((),(),(),())
-((),(),(),(),())
-() -> ()
-Array () ()
-Bool
-Char
-Complex ()
-Double
-Either () ()
-Float
-Handle
-Int
-Integer
-IO ()
-Maybe ()
-Ordering
-Addr
-Dynamic
-ForeignObj
-IORef ()
-Int8
-Int16
-Int32
-Int64
-ST () ()
-StableName ()
-StablePtr ()
-TyCon
-TypeRep
-Word8
-Word16
-Word32
-Word64
-ArithException
-AsyncException
-ByteArray ()
-Exception
-IOArray () ()
-IOUArray () ()
-MutableByteArray () ()
-PackedString
-STArray () () ()
-STUArray () () ()
-StableName ()
-StablePtr ()
-UArray () ()
-Weak ()
-CChar
-CSChar
-CUChar
-CShort
-CUShort
-CInt
-CUInt
-CLong
-CULong
-CLLong
-CULLong
-CFloat
-CDouble
-CLDouble
-CPtrdiff
-CSize
-CWchar
-CSigAtomic
-CClock
-CTime
diff --git a/ghc/tests/lib/should_run/enum01.hs b/ghc/tests/lib/should_run/enum01.hs
deleted file mode 100644 (file)
index d8a6eda..0000000
+++ /dev/null
@@ -1,494 +0,0 @@
--- !!! Testing the Prelude's Enum instances.
-module Main(main) where
-
-import Exception
-import Char
-import Ratio
-
-main = do
-   -- Enum Int
-  putStrLn "Testing Enum Int: "
-  testEnumInt
-   -- Enum Integer
-  putStrLn "Testing Enum Integer: "
-  testEnumInteger
-   -- Enum Char
-  putStrLn "Testing Enum Char: "
-  testEnumChar
-   -- Enum ()
-  putStrLn "Testing Enum (): "
-  testEnumUnit
-   -- Enum Ordering
-  putStrLn "Testing Enum Ordering (derived): "
-  testEnumOrdering
-   -- Enum Bool
-  putStrLn "Testing Enum Bool: "
-  testEnumBool
-   -- Enum Rational
-  putStrLn "Testing Enum Rational: "
-  testEnumRational
-   -- Enum (Ratio Int)
-  putStrLn "Testing Enum (Ratio Int): "
-  testEnumRatioInt
-
-{- 
-  Here's the properties that's supposed to
-  hold for arithmetic sequences over Int:
-
-   - [e1..]    = [e1, (e1+1), (e1+2), ..., maxBound]
-
-   - [e1,e2..] = [e1, (e1+i), (e1+2*i), ... upper]
-                 where
-                 i = e2 - e1
-                 upper
-                  | i >  0 = maxBound
-                  | i <  0 = minBound
-                  | i == 0 = maxBound -- this really shouldn't matter (I feel.)
-   - [e1..e3] = [e1, (e1+i), (e1+2*i),..e3]
-                where
-                i
-                 | e3 >= e1 = 1
-                 | e3 <  e1 = (-1)
-    
-   - [e1,e2..e3] = res
-                   where
-                   i = e2 - e1
-                   
-                   res
-                    | i >= 0 && e3 <  e1 = []
-                    | i <  0 && e3 >= e1 = []  -- (*)
-                    | otherwise          = [e1, (e1+i), (e1 + 2*i), .. e3]
-
-   Note:
-     (*) - I think this instead should be (i < 0 && e3 > e1), since, as is,
-
-            [x,(x+1) ..x] = [x] 
-            [x,(x-1) ..x] = []
-
-           which does not look right, symmetrically speaking.
-
-
-   The same properties hold for other Prelude types that
-   are instances of Enum as well as being Bounded.
-   
-   For non-Bounded types (e.g., Float and Double), the properties are similar,
-   except that the boundary tests become slightly different, i.e., when an
-   element becomes greater than (e3 + i/2) (or less than (e3 + i/2) for negative
-   i.)
-
-  Q - does [(x::Double)..] have an upper bound? (ditto for Float.)
-
-  OK - on with the regression testing.
--}
-
-#define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
-
-
-testEnumInt :: IO ()
-testEnumInt = do
-     -- succ
-  printTest ((succ (0::Int)))
-  printTest ((succ (minBound::Int)))
-  mayBomb   (printTest ((succ (maxBound::Int))))
-
-     -- pred
-  printTest (pred (1::Int))
-  printTest (pred (maxBound::Int))
-  mayBomb   (printTest (pred (minBound::Int))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Int) [1,minBound,maxBound]))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Int),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Int)..]))
-  printTest ((take 7 [((maxBound::Int)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Int),2..]))
-  printTest ((take 7 [(1::Int),7..]))
-  printTest ((take 7 [(1::Int),1..]))
-  printTest ((take 7 [(1::Int),0..]))
-  printTest ((take 7 [(5::Int),2..]))
-  let x = (minBound::Int) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Int) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Int) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Int) .. 5])))
-  printTest ((take 4 ([(1::Int) .. 1])))
-  printTest ((take 7 ([(1::Int) .. 0])))
-  printTest ((take 7 ([(5::Int) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Int)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Int)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Int),4..1]))
-  printTest ((take 7 [(5::Int),3..1]))
-  printTest ((take 7 [(5::Int),3..2]))
-  printTest ((take 7 [(1::Int),2..1]))
-  printTest ((take 7 [(2::Int),1..2]))
-  printTest ((take 7 [(2::Int),1..1]))
-  printTest ((take 7 [(2::Int),3..1]))
-
-  let x = (maxBound::Int) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Int) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumChar :: IO ()
-testEnumChar = do
-     -- succ
-  printTest ((succ 'a'))
-  printTest ((succ (minBound::Char)))
-  mayBomb (printTest ((succ (maxBound::Char))))
-
-     -- pred
-  printTest ((pred 'b'))
-  printTest (pred (maxBound::Char))
-  mayBomb (printTest (pred (minBound::Char)))
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]))
-  mayBomb (printTest ((toEnum::Int->Char) (minBound::Int)))
-
-     -- fromEnum
-  printTest ((map fromEnum ['X',minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 ['\NUL' .. ]))
-  printTest ((take 7 ['\250' .. ]))
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 ['a','b'..]))
-  printTest ((take 7 ['a','e'..]))
-  printTest ((take 7 ['a','a'..]))
-  printTest ((take 7 ['z','y'..]))
-  printTest ((take 7 ['z','v'..]))
-  let x = '\1'
-  printTest ((take 7 ['\1', '\0' ..]))
-  let x = '\5'
-  printTest ((take 7 ['\5', '\4' ..]))
-  let x = (maxBound::Int) - 5
-  printTest ((take 7 ['\250', '\251' ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 (['a' .. 'e'])))
-  printTest ((take 4 (['a' .. 'a'])))
-  printTest ((take 7 (['b' .. 'a'])))
-  printTest ((take 7 (['e' .. 'a'])))
-  printTest ((take 7 (['\250' .. '\255'])))
-  printTest ((take 7 (['\5' .. '\0'])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 ['f','e' .. 'b']))
-  printTest ((take 7 ['g','e' .. 'b']))
-  printTest ((take 7 ['g','d' .. 'c']))
-  printTest ((take 7 ['b','c' .. 'b']))
-  printTest ((take 7 ['c','b' .. 'c']))
-  printTest ((take 7 ['c','b' .. 'b']))
-  printTest ((take 7 ['c','d' .. 'b']))
-  printTest ((take 7 ['\251', '\252' .. maxBound]))
-  printTest ((take 7 ['\5', '\4' .. minBound]))
-
-
-testEnumUnit :: IO ()
-testEnumUnit = do
-   -- succ:
-  mayBomb (printTest ((succ ())))
-  mayBomb (printTest ((succ (minBound::()))))
-  mayBomb (printTest ((succ (maxBound::()))))
-       
-   -- pred:
-  mayBomb (printTest ((pred ())))
-  mayBomb (printTest ((pred (minBound::()))))
-  mayBomb (printTest ((pred (maxBound::()))))
-
-   -- toEnum:
-  printTest ((toEnum 0)::())
-  mayBomb   (printTest ((toEnum 1)::()))
-
-   -- fromEnum:
-  printTest ((fromEnum ()))
-
-   -- enumFrom:
-  printTest (([()..]))
-
-   -- enumFromThen:
-  printTest (([(),()..]))
-
-   -- enumFromTo
-  printTest (([()..()]))
-
-   -- enumFromThenTo
-  printTest (([(),()..()]))
-
-testEnumOrdering :: IO ()
-testEnumOrdering = do
-   -- succ:
-  printTest ((succ LT))
-  printTest ((succ (minBound::Ordering)))
-  mayBomb (printTest ((succ (maxBound::Ordering))))
-       
-   -- pred:
-  printTest ((pred GT))
-  printTest ((pred (maxBound::Ordering)))
-  mayBomb (printTest ((pred (minBound::Ordering))))
-
-   -- toEnum:
-  printTest ((toEnum 0)::Ordering)
-  mayBomb   (printTest ((toEnum 5)::Ordering))
-
-   -- fromEnum:
-  printTest ((fromEnum LT))
-  printTest ((fromEnum EQ))
-  printTest ((fromEnum GT))
-
-   -- enumFrom:
-  printTest (([LT ..]))
-  printTest (([EQ ..]))
-  printTest (([GT ..]))
-
-   -- enumFromThen:
-  printTest (([LT,EQ ..]))
-  printTest (([EQ,GT ..]))
-  printTest (([EQ,LT ..]))
-  printTest (([LT,GT ..]))
-  printTest (([GT,LT ..]))
-  printTest (take 7 (([GT,GT ..])))
-  printTest (take 7 (([LT,LT ..])))
-
-   -- enumFromTo
-  printTest (([LT .. GT]))
-  printTest (([LT .. EQ]))
-  printTest (([LT .. LT]))
-  printTest (([GT .. LT]))
-  printTest (([GT .. EQ]))
-  printTest (([GT .. GT]))
-
-   -- enumFromThenTo
-  printTest (([LT,EQ .. GT]))
-  printTest (([GT,EQ .. LT]))
-  printTest (([GT,EQ .. EQ]))
-  printTest (([GT,EQ .. GT]))
-  printTest (([GT,EQ .. LT]))
-  printTest (([LT,EQ .. LT]))
-  printTest (([LT,EQ .. GT]))
-  printTest (take 7 (([LT,LT .. GT])))
-  printTest (take 7 (([GT,GT .. LT])))
-
-testEnumBool :: IO ()
-testEnumBool = do
-   -- succ:
-  printTest ((succ False))
-  printTest ((succ (minBound::Bool)))
-  mayBomb (printTest ((succ (maxBound::Bool))))
-       
-   -- pred:
-  printTest ((pred True))
-  printTest ((pred (maxBound::Bool)))
-  mayBomb (printTest ((pred (minBound::Bool))))
-
-   -- toEnum:
-  printTest ((toEnum 0)::Bool)
-  mayBomb   (printTest ((toEnum 5)::Bool))
-
-   -- fromEnum:
-  printTest ((fromEnum False))
-  printTest ((fromEnum True))
-
-   -- enumFrom:
-  printTest (([False ..]))
-  printTest (([True ..]))
-
-   -- enumFromThen:
-  printTest (([False,True ..]))
-  printTest (([True,False ..]))
-  printTest ((take 7 ([False,False ..])))
-  printTest ((take 7 ([True,True ..])))
-
-   -- enumFromTo
-  printTest (([False .. True]))
-  printTest (([True .. False]))
-
-   -- enumFromThenTo
-  printTest (take 7 ([False,False .. False]))
-  printTest (take 7 ([False,False .. True]))
-  printTest (take 7 ([False,True .. False]))
-  printTest (take 7 ([False,True .. True]))
-  printTest (take 7 ([True,False .. False]))
-  printTest (take 7 ([True,False .. True]))
-  printTest (take 7 ([True,True ..  False]))
-  printTest (take 7 ([True,True ..  True]))
-
-
-testEnumInteger :: IO ()
-testEnumInteger = do
-     -- succ
-  printTest ((succ (0::Integer)))
-  printTest ((succ ((-1)::Integer)))
-
-     -- pred
-  printTest (pred (1::Integer))
-  printTest (pred (0::Integer))
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Integer) [1,minBound,maxBound]))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Integer),42,45]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Integer)..]))
-  printTest ((take 7 [(-5::Integer)..]))
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Integer),2..]))
-  printTest ((take 7 [(1::Integer),7..]))
-  printTest ((take 7 [(1::Integer),1..]))
-  printTest ((take 7 [(1::Integer),0..]))
-  printTest ((take 7 [(5::Integer),2..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Integer) .. 5])))
-  printTest ((take 4 ([(1::Integer) .. 1])))
-  printTest ((take 7 ([(1::Integer) .. 0])))
-  printTest ((take 7 ([(5::Integer) .. 0])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Integer),4..1]))
-  printTest ((take 7 [(5::Integer),3..1]))
-  printTest ((take 7 [(5::Integer),3..2]))
-  printTest ((take 7 [(1::Integer),2..1]))
-  printTest ((take 7 [(2::Integer),1..2]))
-  printTest ((take 7 [(2::Integer),1..1]))
-  printTest ((take 7 [(2::Integer),3..1]))
-
-testEnumRational :: IO ()
-testEnumRational = do
-     -- succ
-  printTest ((succ (0::Rational)))
-  printTest ((succ ((-1)::Rational)))
-
-     -- pred
-  printTest (pred (1::Rational))
-  printTest (pred (0::Rational))
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Rational) [1,minBound,maxBound]))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Rational),42,45]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Rational)..]))
-  printTest ((take 7 [(-5::Rational)..]))
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Rational),2..]))
-  printTest ((take 7 [(1::Rational),7..]))
-  printTest ((take 7 [(1::Rational),1..]))
-  printTest ((take 7 [(1::Rational),0..]))
-  printTest ((take 7 [(5::Rational),2..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Rational) .. 5])))
-  printTest ((take 4 ([(1::Rational) .. 1])))
-  printTest ((take 7 ([(1::Rational) .. 0])))
-  printTest ((take 7 ([(5::Rational) .. 0])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Rational),4..1]))
-  printTest ((take 7 [(5::Rational),3..1]))
-  printTest ((take 7 [(5::Rational),3..2]))
-  printTest ((take 7 [(1::Rational),2..1]))
-  printTest ((take 7 [(2::Rational),1..2]))
-  printTest ((take 7 [(2::Rational),1..1]))
-  printTest ((take 7 [(2::Rational),3..1]))
-
-testEnumRatioInt :: IO ()
-testEnumRatioInt = do
-     -- succ
-  printTest ((succ (0::Ratio Int)))
-  printTest ((succ ((-1)::Ratio Int)))
-
-     -- pred
-  printTest (pred (1::Ratio Int))
-  printTest (pred (0::Ratio Int))
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Ratio Int) [1,minBound,maxBound]))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Ratio Int),42,45]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Ratio Int)..]))
-  printTest ((take 7 [(-5::Ratio Int)..]))
-  printTest ((take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]))
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Ratio Int),2..]))
-  printTest ((take 7 [(1::Ratio Int),7..]))
-  printTest ((take 7 [(1::Ratio Int),1..]))
-  printTest ((take 7 [(1::Ratio Int),0..]))
-  printTest ((take 7 [(5::Ratio Int),2..]))
-  let x = (toEnum ((minBound::Int) + 1))::Ratio Int
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (toEnum ((minBound::Int) + 5))::Ratio Int
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (toEnum ((maxBound::Int) - 5))::Ratio Int
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Ratio Int) .. 5])))
-  printTest ((take 4 ([(1::Ratio Int) .. 1])))
-  printTest ((take 7 ([(1::Ratio Int) .. 0])))
-  printTest ((take 7 ([(5::Ratio Int) .. 0])))
-  let x = (toEnum (maxBound - (5::Int))) :: Ratio Int
-  let y = (toEnum (maxBound::Int)) :: Ratio Int
-  printTest ((take 7 ([x..y])))
-  let x = (toEnum (minBound + (5::Int))) :: Ratio Int
-  let y = (toEnum (minBound::Int)) :: Ratio Int
-  printTest ((take 7 ([x..y])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Ratio Int),4..1]))
-  printTest ((take 7 [(5::Ratio Int),3..1]))
-  printTest ((take 7 [(5::Ratio Int),3..2]))
-  printTest ((take 7 [(1::Ratio Int),2..1]))
-  printTest ((take 7 [(2::Ratio Int),1..2]))
-  printTest ((take 7 [(2::Ratio Int),1..1]))
-  printTest ((take 7 [(2::Ratio Int),3..1]))
-
-  let x = (toEnum ((maxBound::Int) - 4)) :: Ratio Int
-  let y = (toEnum (maxBound::Int)) :: Ratio Int
-  printTest ((take 7 [x,(x+1)..y]))
-  let x = (toEnum ((minBound::Int) + 5)) :: Ratio Int
-  let y = (toEnum (minBound::Int)) :: Ratio Int
-  printTest ((take 7 [x,(x-1)..y]))
-
---
---
---  Utils
---
---
-
-
-mayBomb x = catchJust errorCalls x (\e -> putStrLn ("error " ++ show e))
-
-test :: Show a => String -> String -> a -> IO ()
-test test_nm expected val = do
-   putStr test_nm
-   if expected == got then
-      putStrLn ": SUCCEEDED"
-    else do
-      putStr   ": FAILED"
-      putStrLn ("( expected: " ++ show expected ++ " , got: " ++ show got ++ " )")
-  where
-   got = show val
diff --git a/ghc/tests/lib/should_run/enum01.stdout b/ghc/tests/lib/should_run/enum01.stdout
deleted file mode 100644 (file)
index e7ccd6b..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-Testing Enum Int: 
-    (succ (0::Int)) = 1
-    (succ (minBound::Int)) = -2147483647
-    (succ (maxBound::Int)) = error "Prelude.Enum.succ{Int}: tried to take `succ' of maxBound"
-    pred (1::Int) = 0
-    pred (maxBound::Int) = 2147483646
-    pred (minBound::Int) = error "Prelude.Enum.pred{Int}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
-    (map fromEnum [(1::Int),minBound,maxBound]) = [1,-2147483648,2147483647]
-    (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Int)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
-    (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-    (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Int) .. 1])) = [1]
-    (take 7 ([(1::Int) .. 0])) = []
-    (take 7 ([(5::Int) .. 0])) = []
-    (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 ([(minBound+(5::Int)) .. minBound])) = []
-    (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Int),3..1]) = [5,3,1]
-    (take 7 [(5::Int),3..2]) = [5,3]
-    (take 7 [(1::Int),2..1]) = [1]
-    (take 7 [(2::Int),1..2]) = [2]
-    (take 7 [(2::Int),1..1]) = [2,1]
-    (take 7 [(2::Int),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Integer: 
-    (succ (0::Integer)) = 1
-    (succ ((-1)::Integer)) = 0
-    pred (1::Integer) = 0
-    pred (0::Integer) = -1
-    (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
-    (map fromEnum [(1::Integer),42,45]) = [1,42,45]
-    (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
-    (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
-    (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Integer) .. 1])) = [1]
-    (take 7 ([(1::Integer) .. 0])) = []
-    (take 7 ([(5::Integer) .. 0])) = []
-    (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Integer),3..1]) = [5,3,1]
-    (take 7 [(5::Integer),3..2]) = [5,3]
-    (take 7 [(1::Integer),2..1]) = [1]
-    (take 7 [(2::Integer),1..2]) = [2]
-    (take 7 [(2::Integer),1..1]) = [2,1]
-    (take 7 [(2::Integer),3..1]) = []
-Testing Enum Char: 
-    (succ 'a') = 'b'
-    (succ (minBound::Char)) = '\SOH'
-    (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
-    (pred 'b') = 'a'
-    pred (maxBound::Char) = '\1114110'
-    pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
-    (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
-    (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument"
-    (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
-    (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
-    (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
-    (take 7 ['a','b'..]) = "abcdefg"
-    (take 7 ['a','e'..]) = "aeimquy"
-    (take 7 ['a','a'..]) = "aaaaaaa"
-    (take 7 ['z','y'..]) = "zyxwvut"
-    (take 7 ['z','v'..]) = "zvrnjfb"
-    (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
-    (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-    (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
-    (take 7 (['a' .. 'e'])) = "abcde"
-    (take 4 (['a' .. 'a'])) = "a"
-    (take 7 (['b' .. 'a'])) = ""
-    (take 7 (['e' .. 'a'])) = ""
-    (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
-    (take 7 (['\5' .. '\0'])) = ""
-    (take 7 ['f','e' .. 'b']) = "fedcb"
-    (take 7 ['g','e' .. 'b']) = "gec"
-    (take 7 ['g','d' .. 'c']) = "gd"
-    (take 7 ['b','c' .. 'b']) = "b"
-    (take 7 ['c','b' .. 'c']) = "c"
-    (take 7 ['c','b' .. 'b']) = "cb"
-    (take 7 ['c','d' .. 'b']) = ""
-    (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
-    (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-Testing Enum (): 
-    (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: bad argument"
-    (fromEnum ()) = 0
-    ([()..]) = [()]
-    ([(),()..]) = [()]
-    ([()..()]) = [()]
-    ([(),()..()]) = [()]
-Testing Enum Ordering (derived): 
-    (succ LT) = EQ
-    (succ (minBound::Ordering)) = EQ
-    (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argment"
-    (pred GT) = EQ
-    (pred (maxBound::Ordering)) = EQ
-    (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argment"
-    (toEnum 0)::Ordering = LT
-    (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argment"
-    (fromEnum LT) = 0
-    (fromEnum EQ) = 1
-    (fromEnum GT) = 2
-    ([LT ..]) = [LT,EQ,GT]
-    ([EQ ..]) = [EQ,GT]
-    ([GT ..]) = [GT]
-    ([LT,EQ ..]) = [LT,EQ,GT]
-    ([EQ,GT ..]) = [EQ,GT]
-    ([EQ,LT ..]) = [EQ,LT]
-    ([LT,GT ..]) = [LT,GT]
-    ([GT,LT ..]) = [GT,LT]
-    take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
-    take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
-    ([LT .. GT]) = [LT,EQ,GT]
-    ([LT .. EQ]) = [LT,EQ]
-    ([LT .. LT]) = [LT]
-    ([GT .. LT]) = []
-    ([GT .. EQ]) = []
-    ([GT .. GT]) = [GT]
-    ([LT,EQ .. GT]) = [LT,EQ,GT]
-    ([GT,EQ .. LT]) = [GT,EQ,LT]
-    ([GT,EQ .. EQ]) = [GT,EQ]
-    ([GT,EQ .. GT]) = [GT]
-    ([GT,EQ .. LT]) = [GT,EQ,LT]
-    ([LT,EQ .. LT]) = [LT]
-    ([LT,EQ .. GT]) = [LT,EQ,GT]
-    take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
-    take 7 (([GT,GT .. LT])) = []
-Testing Enum Bool: 
-    (succ False) = True
-    (succ (minBound::Bool)) = True
-    (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argment"
-    (pred True) = False
-    (pred (maxBound::Bool)) = False
-    (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argment"
-    (toEnum 0)::Bool = False
-    (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argment"
-    (fromEnum False) = 0
-    (fromEnum True) = 1
-    ([False ..]) = [False,True]
-    ([True ..]) = [True]
-    ([False,True ..]) = [False,True]
-    ([True,False ..]) = [True,False]
-    (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
-    (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
-    ([False .. True]) = [False,True]
-    ([True .. False]) = []
-    take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
-    take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
-    take 7 ([False,True .. False]) = [False]
-    take 7 ([False,True .. True]) = [False,True]
-    take 7 ([True,False .. False]) = [True,False]
-    take 7 ([True,False .. True]) = [True]
-    take 7 ([True,True .. False]) = []
-    take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
-Testing Enum Rational: 
-    (succ (0::Rational)) = 1 % 1
-    (succ ((-1)::Rational)) = 0 % 1
-    pred (1::Rational) = 0 % 1
-    pred (0::Rational) = -1 % 1
-    (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1 % 1,-2147483648 % 1,2147483647 % 1]
-    (map fromEnum [(1::Rational),42,45]) = [1,42,45]
-    (take 7 [(1::Rational)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
-    (take 7 [(-5::Rational)..]) = [-5 % 1,-4 % 1,-3 % 1,-2 % 1,-1 % 1,0 % 1,1 % 1]
-    (take 7 [(1::Rational),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
-    (take 7 [(1::Rational),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
-    (take 7 [(1::Rational),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
-    (take 7 [(1::Rational),0..]) = [1 % 1,0 % 1,-1 % 1,-2 % 1,-3 % 1,-4 % 1,-5 % 1]
-    (take 7 [(5::Rational),2..]) = [5 % 1,2 % 1,-1 % 1,-4 % 1,-7 % 1,-10 % 1,-13 % 1]
-    (take 7 ([(1::Rational) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
-    (take 4 ([(1::Rational) .. 1])) = [1 % 1]
-    (take 7 ([(1::Rational) .. 0])) = []
-    (take 7 ([(5::Rational) .. 0])) = []
-    (take 7 [(5::Rational),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
-    (take 7 [(5::Rational),3..1]) = [5 % 1,3 % 1,1 % 1]
-    (take 7 [(5::Rational),3..2]) = [5 % 1,3 % 1,1 % 1]
-    (take 7 [(1::Rational),2..1]) = [1 % 1]
-    (take 7 [(2::Rational),1..2]) = [2 % 1]
-    (take 7 [(2::Rational),1..1]) = [2 % 1,1 % 1]
-    (take 7 [(2::Rational),3..1]) = []
-Testing Enum (Ratio Int): 
-    (succ (0::Ratio Int)) = 1 % 1
-    (succ ((-1)::Ratio Int)) = 0 % 1
-    pred (1::Ratio Int) = 0 % 1
-    pred (0::Ratio Int) = -1 % 1
-    (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1 % 1,-2147483648 % 1,2147483647 % 1]
-    (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
-    (take 7 [(1::Ratio Int)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
-    (take 7 [(-5::Ratio Int)..]) = [-5 % 1,-4 % 1,-3 % 1,-2 % 1,-1 % 1,0 % 1,1 % 1]
-    (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,-2147483648 % 1]
-    (take 7 [(1::Ratio Int),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
-    (take 7 [(1::Ratio Int),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
-    (take 7 [(1::Ratio Int),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
-    (take 7 [(1::Ratio Int),0..]) = [1 % 1,0 % 1,-1 % 1,-2 % 1,-3 % 1,-4 % 1,-5 % 1]
-    (take 7 [(5::Ratio Int),2..]) = [5 % 1,2 % 1,-1 % 1,-4 % 1,-7 % 1,-10 % 1,-13 % 1]
-    (take 7 [x, x-1 ..]) = [-2147483647 % 1,-2147483648 % 1,2147483647 % 1,2147483646 % 1,2147483645 % 1,2147483644 % 1,2147483643 % 1]
-    (take 7 [x, x-1 ..]) = [-2147483643 % 1,-2147483644 % 1,-2147483645 % 1,-2147483646 % 1,-2147483647 % 1,-2147483648 % 1,2147483647 % 1]
-    (take 7 [x, (x+1) ..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,-2147483648 % 1]
-    (take 7 ([(1::Ratio Int) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
-    (take 4 ([(1::Ratio Int) .. 1])) = [1 % 1]
-    (take 7 ([(1::Ratio Int) .. 0])) = []
-    (take 7 ([(5::Ratio Int) .. 0])) = []
-    (take 7 ([x..y])) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
-    (take 7 ([x..y])) = []
-    (take 7 [(5::Ratio Int),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
-    (take 7 [(5::Ratio Int),3..1]) = [5 % 1,3 % 1,1 % 1]
-    (take 7 [(5::Ratio Int),3..2]) = [5 % 1,3 % 1,1 % 1]
-    (take 7 [(1::Ratio Int),2..1]) = [1 % 1]
-    (take 7 [(2::Ratio Int),1..2]) = [2 % 1]
-    (take 7 [(2::Ratio Int),1..1]) = [2 % 1,1 % 1]
-    (take 7 [(2::Ratio Int),3..1]) = []
-    (take 7 [x,(x+1)..y]) = [2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
-    (take 7 [x,(x-1)..y]) = [-2147483643 % 1,-2147483644 % 1,-2147483645 % 1,-2147483646 % 1,-2147483647 % 1,-2147483648 % 1]
diff --git a/ghc/tests/lib/should_run/enum02.hs b/ghc/tests/lib/should_run/enum02.hs
deleted file mode 100644 (file)
index c04677d..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
--- !!! Testing the Int Enum instances.
-module Main(main) where
-
-import Exception
-import Int
-
-main = do
-  putStrLn "Testing Enum Int8:"
-  testEnumInt8
-  putStrLn "Testing Enum Int16:"
-  testEnumInt16
-  putStrLn "Testing Enum Int32:"
-  testEnumInt32
-  putStrLn "Testing Enum Int64:"
-  testEnumInt64
-
-#define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
-
-testEnumInt8 :: IO ()
-testEnumInt8 = do
-     -- succ
-  printTest ((succ (0::Int8)))
-  printTest ((succ (minBound::Int8)))
-  mayBomb   (printTest ((succ (maxBound::Int8))))
-
-     -- pred
-  printTest (pred (1::Int8))
-  printTest (pred (maxBound::Int8))
-  mayBomb   (printTest (pred (minBound::Int8))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Int8) [1, toInt (minBound::Int8), toInt (maxBound::Int8)]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Int8))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Int8),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Int8)..]))
-  printTest ((take 7 [((maxBound::Int8)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Int8),2..]))
-  printTest ((take 7 [(1::Int8),7..]))
-  printTest ((take 7 [(1::Int8),1..]))
-  printTest ((take 7 [(1::Int8),0..]))
-  printTest ((take 7 [(5::Int8),2..]))
-  let x = (minBound::Int8) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Int8) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Int8) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Int8) .. 5])))
-  printTest ((take 4 ([(1::Int8) .. 1])))
-  printTest ((take 7 ([(1::Int8) .. 0])))
-  printTest ((take 7 ([(5::Int8) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Int8)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Int8)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Int8),4..1]))
-  printTest ((take 7 [(5::Int8),3..1]))
-  printTest ((take 7 [(5::Int8),3..2]))
-  printTest ((take 7 [(1::Int8),2..1]))
-  printTest ((take 7 [(2::Int8),1..2]))
-  printTest ((take 7 [(2::Int8),1..1]))
-  printTest ((take 7 [(2::Int8),3..1]))
-
-  let x = (maxBound::Int8) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Int8) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt16 :: IO ()
-testEnumInt16 = do
-     -- succ
-  printTest ((succ (0::Int16)))
-  printTest ((succ (minBound::Int16)))
-  mayBomb   (printTest ((succ (maxBound::Int16))))
-
-     -- pred
-  printTest (pred (1::Int16))
-  printTest (pred (maxBound::Int16))
-  mayBomb   (printTest (pred (minBound::Int16))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Int16) [1, toInt (minBound::Int16), toInt (maxBound::Int16)]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Int16))
-
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Int16),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Int16)..]))
-  printTest ((take 7 [((maxBound::Int16)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Int16),2..]))
-  printTest ((take 7 [(1::Int16),7..]))
-  printTest ((take 7 [(1::Int16),1..]))
-  printTest ((take 7 [(1::Int16),0..]))
-  printTest ((take 7 [(5::Int16),2..]))
-  let x = (minBound::Int16) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Int16) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Int16) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Int16) .. 5])))
-  printTest ((take 4 ([(1::Int16) .. 1])))
-  printTest ((take 7 ([(1::Int16) .. 0])))
-  printTest ((take 7 ([(5::Int16) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Int16)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Int16)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Int16),4..1]))
-  printTest ((take 7 [(5::Int16),3..1]))
-  printTest ((take 7 [(5::Int16),3..2]))
-  printTest ((take 7 [(1::Int16),2..1]))
-  printTest ((take 7 [(2::Int16),1..2]))
-  printTest ((take 7 [(2::Int16),1..1]))
-  printTest ((take 7 [(2::Int16),3..1]))
-
-  let x = (maxBound::Int16) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Int16) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt32 :: IO ()
-testEnumInt32 = do
-     -- succ
-  printTest ((succ (0::Int32)))
-  printTest ((succ (minBound::Int32)))
-  mayBomb   (printTest ((succ (maxBound::Int32))))
-
-     -- pred
-  printTest (pred (1::Int32))
-  printTest (pred (maxBound::Int32))
-  mayBomb   (printTest (pred (minBound::Int32))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Int32) [1, toInt (minBound::Int32), toInt (maxBound::Int32)]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Int32))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Int32),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Int32)..]))
-  printTest ((take 7 [((maxBound::Int32)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Int32),2..]))
-  printTest ((take 7 [(1::Int32),7..]))
-  printTest ((take 7 [(1::Int32),1..]))
-  printTest ((take 7 [(1::Int32),0..]))
-  printTest ((take 7 [(5::Int32),2..]))
-  let x = (minBound::Int32) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Int32) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Int32) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Int32) .. 5])))
-  printTest ((take 4 ([(1::Int32) .. 1])))
-  printTest ((take 7 ([(1::Int32) .. 0])))
-  printTest ((take 7 ([(5::Int32) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Int32)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Int32)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Int32),4..1]))
-  printTest ((take 7 [(5::Int32),3..1]))
-  printTest ((take 7 [(5::Int32),3..2]))
-  printTest ((take 7 [(1::Int32),2..1]))
-  printTest ((take 7 [(2::Int32),1..2]))
-  printTest ((take 7 [(2::Int32),1..1]))
-  printTest ((take 7 [(2::Int32),3..1]))
-
-  let x = (maxBound::Int32) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Int32) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt64 :: IO ()
-testEnumInt64 = do
-     -- succ
-  printTest ((succ (0::Int64)))
-  printTest ((succ (minBound::Int64)))
-  mayBomb   (printTest ((succ (maxBound::Int64))))
-
-     -- pred
-  printTest (pred (1::Int64))
-  printTest (pred (maxBound::Int64))
-  mayBomb   (printTest (pred (minBound::Int64))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Int64) [1, toInt (minBound::Int64), toInt (maxBound::Int64)]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Int64))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Int64),fromInt (minBound::Int) ,fromInt (maxBound::Int)]))
-  mayBomb   (printTest (fromEnum (maxBound::Int64)))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Int64)..]))
-  printTest ((take 7 [((maxBound::Int64)-5)..])) -- just in case it doesn't catch the upper bound..
-
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Int64),2..]))
-  printTest ((take 7 [(1::Int64),7..]))
-  printTest ((take 7 [(1::Int64),1..]))
-  printTest ((take 7 [(1::Int64),0..]))
-  printTest ((take 7 [(5::Int64),2..]))
-  let x = (minBound::Int64) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Int64) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Int64) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Int64) .. 5])))
-  printTest ((take 4 ([(1::Int64) .. 1])))
-  printTest ((take 7 ([(1::Int64) .. 0])))
-  printTest ((take 7 ([(5::Int64) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Int64)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Int64)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Int64),4..1]))
-  printTest ((take 7 [(5::Int64),3..1]))
-  printTest ((take 7 [(5::Int64),3..2]))
-  printTest ((take 7 [(1::Int64),2..1]))
-  printTest ((take 7 [(2::Int64),1..2]))
-  printTest ((take 7 [(2::Int64),1..1]))
-  printTest ((take 7 [(2::Int64),3..1]))
-
-  let x = (maxBound::Int64) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Int64) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-
---
---
---  Utils
---
---
-
-
-mayBomb x = catchJust errorCalls x (\e -> putStrLn ("error " ++ show e))
diff --git a/ghc/tests/lib/should_run/enum02.stdout b/ghc/tests/lib/should_run/enum02.stdout
deleted file mode 100644 (file)
index 60f8268..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
-    (succ (0::Int8)) = 1
-    (succ (minBound::Int8)) = -127
-    (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
-    pred (1::Int8) = 0
-    pred (maxBound::Int8) = 126
-    pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Int8) [1, toInt (minBound::Int8), toInt (maxBound::Int8)]) = [1,-128,127]
-    (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (2147483647) is outside of bounds (-128,127)"
-    (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
-    (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
-    (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 [x, x-1 ..]) = [-127,-128]
-    (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
-    (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
-    (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Int8) .. 1])) = [1]
-    (take 7 ([(1::Int8) .. 0])) = []
-    (take 7 ([(5::Int8) .. 0])) = []
-    (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
-    (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
-    (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Int8),3..1]) = [5,3,1]
-    (take 7 [(5::Int8),3..2]) = [5,3]
-    (take 7 [(1::Int8),2..1]) = [1]
-    (take 7 [(2::Int8),1..2]) = [2]
-    (take 7 [(2::Int8),1..1]) = [2,1]
-    (take 7 [(2::Int8),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
-    (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
-    (succ (0::Int16)) = 1
-    (succ (minBound::Int16)) = -32767
-    (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
-    pred (1::Int16) = 0
-    pred (maxBound::Int16) = 32766
-    pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Int16) [1, toInt (minBound::Int16), toInt (maxBound::Int16)]) = [1,-32768,32767]
-    (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (2147483647) is outside of bounds (-32768,32767)"
-    (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
-    (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
-    (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 [x, x-1 ..]) = [-32767,-32768]
-    (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-    (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
-    (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Int16) .. 1])) = [1]
-    (take 7 ([(1::Int16) .. 0])) = []
-    (take 7 ([(5::Int16) .. 0])) = []
-    (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
-    (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
-    (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Int16),3..1]) = [5,3,1]
-    (take 7 [(5::Int16),3..2]) = [5,3]
-    (take 7 [(1::Int16),2..1]) = [1]
-    (take 7 [(2::Int16),1..2]) = [2]
-    (take 7 [(2::Int16),1..1]) = [2,1]
-    (take 7 [(2::Int16),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
-    (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
-    (succ (0::Int32)) = 1
-    (succ (minBound::Int32)) = -2147483647
-    (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
-    pred (1::Int32) = 0
-    pred (maxBound::Int32) = 2147483646
-    pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Int32) [1, toInt (minBound::Int32), toInt (maxBound::Int32)]) = [1,-2147483648,2147483647]
-    (toEnum (maxBound::Int))::Int32 = 2147483647
-    (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
-    (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
-    (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-    (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Int32) .. 1])) = [1]
-    (take 7 ([(1::Int32) .. 0])) = []
-    (take 7 ([(5::Int32) .. 0])) = []
-    (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
-    (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Int32),3..1]) = [5,3,1]
-    (take 7 [(5::Int32),3..2]) = [5,3]
-    (take 7 [(1::Int32),2..1]) = [1]
-    (take 7 [(2::Int32),1..2]) = [2]
-    (take 7 [(2::Int32),1..1]) = [2,1]
-    (take 7 [(2::Int32),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
-    (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
-    (succ (0::Int64)) = 1
-    (succ (minBound::Int64)) = -9223372036854775807
-    (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
-    pred (1::Int64) = 0
-    pred (maxBound::Int64) = 9223372036854775806
-    pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Int64) [1, toInt (minBound::Int64), toInt (maxBound::Int64)]) = [1,0,-1]
-    (toEnum (maxBound::Int))::Int64 = 2147483647
-    (map fromEnum [(1::Int64),fromInt (minBound::Int) ,fromInt (maxBound::Int)]) = [1,-2147483648,2147483647]
-    fromEnum (maxBound::Int64) = error "Enum.fromEnum{Int64}: value (9223372036854775807) is outside of Int's bounds (-2147483648,2147483647)"
-    (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
-    (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
-    (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
-    (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
-    (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
-    (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
-    (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Int64) .. 1])) = [1]
-    (take 7 ([(1::Int64) .. 0])) = []
-    (take 7 ([(5::Int64) .. 0])) = []
-    (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
-    (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
-    (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Int64),3..1]) = [5,3,1]
-    (take 7 [(5::Int64),3..2]) = [5,3]
-    (take 7 [(1::Int64),2..1]) = [1]
-    (take 7 [(2::Int64),1..2]) = [2]
-    (take 7 [(2::Int64),1..1]) = [2,1]
-    (take 7 [(2::Int64),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
-    (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/ghc/tests/lib/should_run/enum03.hs b/ghc/tests/lib/should_run/enum03.hs
deleted file mode 100644 (file)
index 0821326..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
--- !!! Testing the Word Enum instances.
-module Main(main) where
-
-import Exception
-import Word
-
-main = do
-  putStrLn "Testing Enum Word8:"
-  testEnumWord8
-  putStrLn "Testing Enum Word16:"
-  testEnumWord16
-  putStrLn "Testing Enum Word32:"
-  testEnumWord32
-  putStrLn "Testing Enum Word64:"
-  testEnumWord64
-
-
-#define printTest(x) (do{ putStr ( "    " ++ "x" ++ " = " ) ; print (x) })
-
-testEnumWord8 :: IO ()
-testEnumWord8 = do
-     -- succ
-  printTest ((succ (0::Word8)))
-  printTest ((succ (minBound::Word8)))
-  mayBomb   (printTest ((succ (maxBound::Word8))))
-
-     -- pred
-  printTest (pred (1::Word8))
-  printTest (pred (maxBound::Word8))
-  mayBomb   (printTest (pred (minBound::Word8))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word8))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word8),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word8)..]))
-  printTest ((take 7 [((maxBound::Word8)-5)..])) -- just in case it doesn't catch the upper bound..
-
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word8),2..]))
-  printTest ((take 7 [(1::Word8),7..]))
-  printTest ((take 7 [(1::Word8),1..]))
-  printTest ((take 7 [(1::Word8),0..]))
-  printTest ((take 7 [(5::Word8),2..]))
-  let x = (minBound::Word8) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word8) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word8) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word8) .. 5])))
-  printTest ((take 4 ([(1::Word8) .. 1])))
-  printTest ((take 7 ([(1::Word8) .. 0])))
-  printTest ((take 7 ([(5::Word8) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word8)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word8)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word8),4..1]))
-  printTest ((take 7 [(5::Word8),3..1]))
-  printTest ((take 7 [(5::Word8),3..2]))
-  printTest ((take 7 [(1::Word8),2..1]))
-  printTest ((take 7 [(2::Word8),1..2]))
-  printTest ((take 7 [(2::Word8),1..1]))
-  printTest ((take 7 [(2::Word8),3..1]))
-
-  let x = (maxBound::Word8) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word8) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord16 :: IO ()
-testEnumWord16 = do
-     -- succ
-  printTest ((succ (0::Word16)))
-  printTest ((succ (minBound::Word16)))
-  mayBomb   (printTest ((succ (maxBound::Word16))))
-
-     -- pred
-  printTest (pred (1::Word16))
-  printTest (pred (maxBound::Word16))
-  mayBomb   (printTest (pred (minBound::Word16))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word16))
-
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word16),minBound,maxBound]))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word16)..]))
-  printTest ((take 7 [((maxBound::Word16)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word16),2..]))
-  printTest ((take 7 [(1::Word16),7..]))
-  printTest ((take 7 [(1::Word16),1..]))
-  printTest ((take 7 [(1::Word16),0..]))
-  printTest ((take 7 [(5::Word16),2..]))
-  let x = (minBound::Word16) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word16) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word16) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word16) .. 5])))
-  printTest ((take 4 ([(1::Word16) .. 1])))
-  printTest ((take 7 ([(1::Word16) .. 0])))
-  printTest ((take 7 ([(5::Word16) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word16)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word16)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word16),4..1]))
-  printTest ((take 7 [(5::Word16),3..1]))
-  printTest ((take 7 [(5::Word16),3..2]))
-  printTest ((take 7 [(1::Word16),2..1]))
-  printTest ((take 7 [(2::Word16),1..2]))
-  printTest ((take 7 [(2::Word16),1..1]))
-  printTest ((take 7 [(2::Word16),3..1]))
-
-  let x = (maxBound::Word16) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word16) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord32 :: IO ()
-testEnumWord32 = do
-     -- succ
-  printTest ((succ (0::Word32)))
-  printTest ((succ (minBound::Word32)))
-  mayBomb   (printTest ((succ (maxBound::Word32))))
-
-     -- pred
-  printTest (pred (1::Word32))
-  printTest (pred (maxBound::Word32))
-  mayBomb   (printTest (pred (minBound::Word32))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, maxBound::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word32))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]))
-  mayBomb   (printTest (fromEnum (maxBound::Word32)))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word32)..]))
-  printTest ((take 7 [((maxBound::Word32)-5)..])) -- just in case it doesn't catch the upper bound..
-  
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word32),2..]))
-  printTest ((take 7 [(1::Word32),7..]))
-  printTest ((take 7 [(1::Word32),1..]))
-  printTest ((take 7 [(1::Word32),0..]))
-  printTest ((take 7 [(5::Word32),2..]))
-  let x = (minBound::Word32) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word32) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word32) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word32) .. 5])))
-  printTest ((take 4 ([(1::Word32) .. 1])))
-  printTest ((take 7 ([(1::Word32) .. 0])))
-  printTest ((take 7 ([(5::Word32) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word32)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word32)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word32),4..1]))
-  printTest ((take 7 [(5::Word32),3..1]))
-  printTest ((take 7 [(5::Word32),3..2]))
-  printTest ((take 7 [(1::Word32),2..1]))
-  printTest ((take 7 [(2::Word32),1..2]))
-  printTest ((take 7 [(2::Word32),1..1]))
-  printTest ((take 7 [(2::Word32),3..1]))
-
-  let x = (maxBound::Word32) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word32) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord64 :: IO ()
-testEnumWord64 = do
-     -- succ
-  printTest ((succ (0::Word64)))
-  printTest ((succ (minBound::Word64)))
-  mayBomb   (printTest ((succ (maxBound::Word64))))
-
-     -- pred
-  printTest (pred (1::Word64))
-  printTest (pred (maxBound::Word64))
-  mayBomb   (printTest (pred (minBound::Word64))) 
-
-     -- toEnum
-  printTest ((map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]))
-  mayBomb   (printTest ((toEnum (maxBound::Int))::Word64))
-
-     -- fromEnum
-  printTest ((map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]))
-  mayBomb   (printTest (fromEnum (maxBound::Word64)))
-
-     -- [x..] aka enumFrom
-  printTest ((take 7 [(1::Word64)..]))
-  printTest ((take 7 [((maxBound::Word64)-5)..])) -- just in case it doesn't catch the upper bound..
-
-     -- [x,y..] aka enumFromThen
-  printTest ((take 7 [(1::Word64),2..]))
-  printTest ((take 7 [(1::Word64),7..]))
-  printTest ((take 7 [(1::Word64),1..]))
-  printTest ((take 7 [(1::Word64),0..]))
-  printTest ((take 7 [(5::Word64),2..]))
-  let x = (minBound::Word64) + 1
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (minBound::Word64) + 5
-  printTest ((take 7 [x, x-1 ..]))
-  let x = (maxBound::Word64) - 5
-  printTest ((take 7 [x, (x+1) ..]))
-
-     -- [x..y] aka enumFromTo
-  printTest ((take 7 ([(1::Word64) .. 5])))
-  printTest ((take 4 ([(1::Word64) .. 1])))
-  printTest ((take 7 ([(1::Word64) .. 0])))
-  printTest ((take 7 ([(5::Word64) .. 0])))
-  printTest ((take 7 ([(maxBound-(5::Word64)) .. maxBound])))
-  printTest ((take 7 ([(minBound+(5::Word64)) .. minBound])))
-
-     -- [x,y..z] aka enumFromThenTo
-  printTest ((take 7 [(5::Word64),4..1]))
-  printTest ((take 7 [(5::Word64),3..1]))
-  printTest ((take 7 [(5::Word64),3..2]))
-  printTest ((take 7 [(1::Word64),2..1]))
-  printTest ((take 7 [(2::Word64),1..2]))
-  printTest ((take 7 [(2::Word64),1..1]))
-  printTest ((take 7 [(2::Word64),3..1]))
-
-  let x = (maxBound::Word64) - 4
-  printTest ((take 7 [x,(x+1)..maxBound]))
-  let x = (minBound::Word64) + 5
-  printTest ((take 7 [x,(x-1)..minBound]))
-
-
---
---
---  Utils
---
---
-
-
-mayBomb x = catchJust errorCalls x (\e -> putStrLn ("error " ++ show e))
diff --git a/ghc/tests/lib/should_run/enum03.stdout b/ghc/tests/lib/should_run/enum03.stdout
deleted file mode 100644 (file)
index 2cd3f4d..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
-    (succ (0::Word8)) = 1
-    (succ (minBound::Word8)) = 1
-    (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
-    pred (1::Word8) = 0
-    pred (maxBound::Word8) = 254
-    pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
-    (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (2147483647) is outside of bounds (0,255)"
-    (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
-    (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
-    (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Word8),0..]) = [1,0]
-    (take 7 [(5::Word8),2..]) = [5,2]
-    (take 7 [x, x-1 ..]) = [1,0]
-    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
-    (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
-    (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Word8) .. 1])) = [1]
-    (take 7 ([(1::Word8) .. 0])) = []
-    (take 7 ([(5::Word8) .. 0])) = []
-    (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
-    (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
-    (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Word8),3..1]) = [5,3,1]
-    (take 7 [(5::Word8),3..2]) = [5,3]
-    (take 7 [(1::Word8),2..1]) = [1]
-    (take 7 [(2::Word8),1..2]) = [2]
-    (take 7 [(2::Word8),1..1]) = [2,1]
-    (take 7 [(2::Word8),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
-    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
-    (succ (0::Word16)) = 1
-    (succ (minBound::Word16)) = 1
-    (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
-    pred (1::Word16) = 0
-    pred (maxBound::Word16) = 65534
-    pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
-    (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (2147483647) is outside of bounds (0,65535)"
-    (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
-    (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
-    (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Word16),0..]) = [1,0]
-    (take 7 [(5::Word16),2..]) = [5,2]
-    (take 7 [x, x-1 ..]) = [1,0]
-    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
-    (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
-    (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Word16) .. 1])) = [1]
-    (take 7 ([(1::Word16) .. 0])) = []
-    (take 7 ([(5::Word16) .. 0])) = []
-    (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
-    (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
-    (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Word16),3..1]) = [5,3,1]
-    (take 7 [(5::Word16),3..2]) = [5,3]
-    (take 7 [(1::Word16),2..1]) = [1]
-    (take 7 [(2::Word16),1..2]) = [2]
-    (take 7 [(2::Word16),1..1]) = [2,1]
-    (take 7 [(2::Word16),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
-    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
-    (succ (0::Word32)) = 1
-    (succ (minBound::Word32)) = 1
-    (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
-    pred (1::Word32) = 0
-    pred (maxBound::Word32) = 4294967294
-    pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, maxBound::Int]) = [1,0,2147483647]
-    (toEnum (maxBound::Int))::Word32 = 2147483647
-    (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
-    fromEnum (maxBound::Word32) = error "Enum.fromEnum{Word32}: value (4294967295) is outside of Int's bounds (-2147483648,2147483647)"
-    (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
-    (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Word32),0..]) = [1,0]
-    (take 7 [(5::Word32),2..]) = [5,2]
-    (take 7 [x, x-1 ..]) = [1,0]
-    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
-    (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
-    (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Word32) .. 1])) = [1]
-    (take 7 ([(1::Word32) .. 0])) = []
-    (take 7 ([(5::Word32) .. 0])) = []
-    (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
-    (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
-    (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Word32),3..1]) = [5,3,1]
-    (take 7 [(5::Word32),3..2]) = [5,3]
-    (take 7 [(1::Word32),2..1]) = [1]
-    (take 7 [(2::Word32),1..2]) = [2]
-    (take 7 [(2::Word32),1..1]) = [2,1]
-    (take 7 [(2::Word32),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
-    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
-    (succ (0::Word64)) = 1
-    (succ (minBound::Word64)) = 1
-    (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
-    pred (1::Word64) = 0
-    pred (maxBound::Word64) = 18446744073709551614
-    pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
-    (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,2147483647]
-    (toEnum (maxBound::Int))::Word64 = 2147483647
-    (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
-    fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-2147483648,2147483647)"
-    (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
-    (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
-    (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
-    (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
-    (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
-    (take 7 [(1::Word64),0..]) = [1,0]
-    (take 7 [(5::Word64),2..]) = [5,2]
-    (take 7 [x, x-1 ..]) = [1,0]
-    (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
-    (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
-    (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
-    (take 4 ([(1::Word64) .. 1])) = [1]
-    (take 7 ([(1::Word64) .. 0])) = []
-    (take 7 ([(5::Word64) .. 0])) = []
-    (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
-    (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
-    (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
-    (take 7 [(5::Word64),3..1]) = [5,3,1]
-    (take 7 [(5::Word64),3..2]) = [5,3]
-    (take 7 [(1::Word64),2..1]) = [1]
-    (take 7 [(2::Word64),1..2]) = [2]
-    (take 7 [(2::Word64),1..1]) = [2,1]
-    (take 7 [(2::Word64),3..1]) = []
-    (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
-    (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/ghc/tests/lib/should_run/exceptions001.hs b/ghc/tests/lib/should_run/exceptions001.hs
deleted file mode 100644 (file)
index e585ca5..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-module Main where
-
-import Prelude hiding (catch)
-import Exception 
-import IO hiding (try, catch)
-
-main = do
-  ioTest
-  errorTest
-  noMethodTest
-  patMatchTest
-  guardTest
-  dynTest
-
-ioTest :: IO ()
-ioTest = catchJust userErrors (ioError (userError "wibble")) 
-          (\ex -> putStr "user exception caught\n")
-
-errorTest :: IO ()
-errorTest = try (evaluate (1 + error "call to 'error'")) >>= \r ->
-           case r of
-               Left exception -> putStr "error call caught\n"
-               Right _        -> error "help!"
-
-instance (Show a, Eq a) => Num (Maybe a) where {}
-
-noMethodTest :: IO ()
-noMethodTest = try (evaluate (Just () + Just ())) >>= \ r ->
-       case r of
-               Left (NoMethodError err) -> putStr "no method error\n"
-               Right _                  -> error "help!"
-
-patMatchTest :: IO ()
-patMatchTest = catch (case test1 [1..10] of () -> return ())
-  (\ex -> case ex of
-               PatternMatchFail err -> putStr err
-               other                -> error "help!")
-                 
-test1 [] = ()
-
-guardTest = catch (case test2 of () -> return ())
-  (\ex -> case ex of
-               PatternMatchFail err -> putStr err
-               other                -> error "help!")
-
-test2 | all (==0) [1] = ()
-
-dynTest = catchDyn (case throwDyn (42::Int, (+1)::Int->Int) of () -> return ())
-  (\(i,f) -> let x = f (i::Int) :: Int in putStr (show x))
-
-{-
-recSelTest
-recConTest
-recUpdTest
-assertTest
-arithTest
--}
diff --git a/ghc/tests/lib/should_run/exceptions001.stdout b/ghc/tests/lib/should_run/exceptions001.stdout
deleted file mode 100644 (file)
index 09c1675..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-user exception caught
-error call caught
-no method error
-exceptions001.hs:39: Non-exhaustive patterns in function test1
-exceptions001.hs:46: Non-exhaustive patterns in function test2
-43
\ No newline at end of file
diff --git a/ghc/tests/lib/should_run/list001.hs b/ghc/tests/lib/should_run/list001.hs
deleted file mode 100644 (file)
index a1ea650..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-module Main where
-
-import List
-import Exception
-import Prelude hiding (catch)
-
--- This module briefly tests all the functions in PrelList and a few
--- from List.
-
--- ToDo: test strictness properties.
-
-main = do
-
-  -- head
-  print (head [1,2,3,4], head "a")
-  catch (print (head [] :: String)) (\_ -> putStr "head []\n")
-
-  -- tail
-  print (tail [1,2,3,4], tail "a")
-  catch (print (tail [] :: String)) (\_ -> putStr "tail []\n")
-
-  -- init
-  print (init [1,2,3,4], init "a")
-  catch (print (init [] :: String)) (\_ -> putStr "init []\n")
-
-  -- last
-  print (last [1,2,3,4], last "a")
-  catch (print (last [] :: String)) (\_ -> putStr "last []\n")
-
-  -- null
-  print [null [], null "abc"]
-
-  -- length
-  print (length [1..10])
-
-  -- foldl
-  print (foldl  (+) 1 [1..10])
-
-  -- foldl1
-  print (foldl1 (+) [1..10])
-  catch (print (foldl1 (+) [] :: Int)) (\_ -> putStr "foldl1 []\n")
-
-  -- scanl
-  print (scanl  (+) 1 [1..10])
-
-  -- scanl1
-  print (scanl1 (+) [1..10])
-  catch (print (scanl1 (+) [] :: [Int])) (\_ -> putStr "scanl1 []\n")
-
-  -- foldr1
-  print (foldr1 (+) [1..10])
-  catch (print (foldr1 (+) [] :: Int)) (\_ -> putStr "foldr1 []\n")
-
-  -- scanr
-  print (scanr  (+) 1 [1..10])
-
-  -- scanr1
-  print (scanr1 (+) [1..10])
-  catch (print (scanr1 (+) [] :: [Int])) (\_ -> putStr "scanr1 []\n")
-
-  -- iterate
-  print (take 10 (cycle (take 4 (iterate (+1) 1))))
-
-  -- take
-  print (take 4 (repeat "x"), take 0 (repeat "x"), take 5 [1..4])
-  catch (print (take (-1) [1..10])) (\_ -> putStr "take (-1)\n")
-
-  -- replicate
-  print [replicate 2 "abc", replicate 0 "abc", replicate 3 []]
-
-  -- drop
-  print [drop 5 [1..10], drop 0 [1..10], drop 5 [1..4]]
-  catch (print (drop (-1) [1..10])) (\_ -> putStr "drop (-1)\n")
-
-  -- splitAt
-  print [splitAt 5 [1..10], splitAt 5 [1..4]]
-  catch (print (splitAt (-1) [1..10])) (\_ -> putStr "splitAt (-1)\n")
-
-  -- scan
-  print (span (<5) [1..10])
-
-  -- break
-  print (break (<5) [1..10])
-
-  -- reverse
-  print [reverse [1..10], reverse []]
-
-  -- and
-  print [and [], and [True], and [False]]
-
-  -- or
-  print [or [], or [True], or [False]]
-
-  -- elem
-  print [elem 5 [1..10], elem 0 [1..10], elem 1 []]
-
-  -- notElem
-  print [notElem 5 [1..10], notElem 0 [1..10], notElem 1 []]
-
-  -- lookkup
-  print (lookup 4 (zip [1..10] (reverse [1..10])))
-
-  -- sum
-  print [sum [1..10], sum []]
-
-  -- product
-  print [product [1..10], product []]
-
-  -- maximum
-  print (maximum [1..10])
-  catch (print (maximum [] :: Int)) (\_ -> putStr "maximum []\n")
-
-  -- minimum
-  print (minimum [1..10])
-  catch (print (minimum [] :: Int)) (\_ -> putStr "minimum []\n")
-
-  -- concatMap
-  print (concatMap (:[]) [(1::Int)..10])
-
-  -- zip
-  print [zip [1] [2], zip [1] [], zip [] [2], zip [1..5] [2..6]]
-
-  -- zip3
-  print (zip3 [1,2] [3,4] [5,6])
-
-  -- zipWith
-  print [zipWith (+) [1,2] [3,4], zipWith (+) [1] [], zipWith (+) [] []]
-
-  -- unzip
-  print [unzip [(1,2),(3,4)], unzip []]
-
-  -- unzip3
-  print [unzip3 [(1,2,3),(3,4,5)], unzip3 []]
-
-  -- unlines
-  print (unlines (lines "a\nb\nc\n"), lines "", unlines [])
-
-  -- words
-  print (unwords (words "a b c d"),   words "", unwords [])
-
-  -- deleteBy
-  print [deleteBy (==) 1 [0,1,1,2,3,4], 
-        deleteBy (==) (error "deleteBy") []]
-
-  -- delete
-  print [delete 1 [0,1,1,2,3,4], 
-        delete (error "delete") []]
-  
-  -- \\
-  print [ [0,1,1,2,3,4] \\ [3,2,1],  
-         [1,2,3,4] \\ [],  
-         [] \\ [error "\\\\"] ]
diff --git a/ghc/tests/lib/should_run/list001.stdout b/ghc/tests/lib/should_run/list001.stdout
deleted file mode 100644 (file)
index 123a591..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-(1,'a')
-head []
-([2,3,4],"")
-tail []
-([1,2,3],"")
-init []
-(4,'a')
-last []
-[True,False]
-10
-56
-55
-foldl1 []
-[1,2,4,7,11,16,22,29,37,46,56]
-[1,3,6,10,15,21,28,36,45,55]
-scanl1 []
-55
-foldr1 []
-[56,55,53,50,46,41,35,28,20,11,1]
-[55,54,52,49,45,40,34,27,19,10]
-scanr1 []
-[1,2,3,4,1,2,3,4,1,2]
-(["x","x","x","x"],[],[1,2,3,4])
-[]
-[["abc","abc"],[],["","",""]]
-[[6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[]]
-[]
-[([1,2,3,4,5],[6,7,8,9,10]),([1,2,3,4],[])]
-([],[1,2,3,4,5,6,7,8,9,10])
-([1,2,3,4],[5,6,7,8,9,10])
-([],[1,2,3,4,5,6,7,8,9,10])
-[[10,9,8,7,6,5,4,3,2,1],[]]
-[True,True,False]
-[False,True,False]
-[True,False,False]
-[False,True,True]
-Just 7
-[55,0]
-[3628800,1]
-10
-maximum []
-1
-minimum []
-[1,2,3,4,5,6,7,8,9,10]
-[[(1,2)],[],[],[(1,2),(2,3),(3,4),(4,5),(5,6)]]
-[(1,3,5),(2,4,6)]
-[[4,6],[],[]]
-[([1,3],[2,4]),([],[])]
-[([1,3],[2,4],[3,5]),([],[],[])]
-("a\nb\nc\n",[],"")
-("a b c d",[],"")
-[[0,1,2,3,4],[]]
-[[0,1,2,3,4],[]]
-[[0,1,4],[1,2,3,4],[]]
diff --git a/ghc/tests/lib/should_run/memo001.hs b/ghc/tests/lib/should_run/memo001.hs
deleted file mode 100644 (file)
index 1264b62..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-module Main(main) where
-
-import Memo
-
-testMemo = do
-   let keys = [ [1..n] | n <- [1..1000] ]
-       keys2 = [ [n,n-1..1] | n <- [1..1000] ]
-       mlength = memo length
-   putStr (show (map mlength (keys ++ keys ++ keys2 ++ keys2)))
-   putStr (show (mlength [1..100000]))
-
--- mlength will memoize itself over each element of 'keys', returning
--- the memoized result the second time around.  Then we move onto
--- keys2, and while we're doing this the first lot of memo table
--- entries can be purged.  Finally, we do a a large computation
--- (length [1..10000]) to allow time for the memo table to be fully
--- purged.
-
-main = testMemo
diff --git a/ghc/tests/lib/should_run/memo001.stdout b/ghc/tests/lib/should_run/memo001.stdout
deleted file mode 100644 (file)
index 0e1bce9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000]100000
\ No newline at end of file
diff --git a/ghc/tests/lib/should_run/memo002.hs b/ghc/tests/lib/should_run/memo002.hs
deleted file mode 100644 (file)
index 7ffa09a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module Main where
-
-import Memo    ( memo )
-import List    ( genericLength, genericReplicate )
-import System  ( getArgs )
-
-main :: IO ()
-main = do (arg:_) <- getArgs
-         mapM_ printTriple [ (i,fib i,mfib i) | i <- [10..read arg] ]
-  where printTriple (i,fi,mfi) = do print i
-                                   print fi
-                                   print mfi
-                                   putStrLn ""
-
--- There is not much point in memoising Integers, so we use unary "numbers" instead
-mfib :: Integer -> Integer
-mfib = genericLength . mfib' . flip genericReplicate ()
-
-mfib' :: [()] -> [()]
-mfib' = memo ufib
-
-ufib :: [()] -> [()]
-ufib []              = [()]
-ufib [()]            = [()]
-ufib (():n1@(():n2)) = mfib' n1 ++ mfib' n2
-
-fib :: Integer -> Integer
-fib 0 = 1
-fib 1 = 1
-fib n = fib (n-1) + fib (n-2)
diff --git a/ghc/tests/lib/should_run/memo002.stdout b/ghc/tests/lib/should_run/memo002.stdout
deleted file mode 100644 (file)
index 7369b40..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-10
-89
-89
-
-11
-144
-144
-
-12
-233
-233
-
-13
-377
-377
-
-14
-610
-610
-
-15
-987
-987
-
-16
-1597
-1597
-
-17
-2584
-2584
-
-18
-4181
-4181
-
-19
-6765
-6765
-
-20
-10946
-10946
-
diff --git a/ghc/tests/lib/should_run/packedstring001.hs b/ghc/tests/lib/should_run/packedstring001.hs
deleted file mode 100644 (file)
index 3ed6a11..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main (main) where
-
-import Char (isSpace)
-import PackedString
-
--- Bug in PackedString.lhs (fixed in rev 1.5)
-
-foo = packString "this is a test"
-main = print (filterPS (not.isSpace) foo)
-
diff --git a/ghc/tests/lib/should_run/packedstring001.stdout b/ghc/tests/lib/should_run/packedstring001.stdout
deleted file mode 100644 (file)
index fbd5abc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"thisisatest"
diff --git a/ghc/tests/lib/should_run/rand001.hs b/ghc/tests/lib/should_run/rand001.hs
deleted file mode 100644 (file)
index f514325..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module Main(main) where
-
-import Random
-
-tstRnd rng = checkRange rng (genRnd 50 rng)
-genRnd n rng = take n (randomRs rng (mkStdGen 2))
-checkRange (lo,hi) = all pred
-  where
-   pred
-    | lo <= hi  = \ x -> x >= lo && x <= hi
-    | otherwise = \ x -> x >= hi && x <= lo
-
-main :: IO ()
-main = do
-  print (tstRnd (1,5::Double))
-  print (tstRnd (1,5::Int))
-  print (tstRnd (10,54::Integer))
-  print (tstRnd ((-6),2::Int))
-  print (tstRnd (2,(-6)::Int))
-
diff --git a/ghc/tests/lib/should_run/rand001.stdout b/ghc/tests/lib/should_run/rand001.stdout
deleted file mode 100644 (file)
index 2e883c5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-True
-True
-True
-True
-True
diff --git a/ghc/tests/lib/should_run/show001.hs b/ghc/tests/lib/should_run/show001.hs
deleted file mode 100644 (file)
index 69c27d0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! Testing Show on Maybes and Eithers
-module Main(main) where
-
-x :: Maybe ()
-x = Nothing
-
-main :: IO ()
-main = do
-  print x
-  print (Just ())
-  print ((Just (Just ())) :: Maybe (Maybe ()))
-  print (Just x)
-  print ((Left 'a')  :: Either Char Int)
-  print ((Right 'b') :: Either Int Char)
-  print ((Right x)   :: Either Int (Maybe ()))
-  print ((Right (Just  'c')) :: Either Int (Maybe Char))
-  print ((Right (Right 'd')) :: Either Int (Either Char Char))
-  print ((Right (Left  'e')) :: Either Int (Either Char Int))
-  print ((Left 'f') :: Either Char Int)
-  print ((Left x) :: Either (Maybe ()) Char)
-  print ((Left (Just  'g')) :: Either (Maybe Char) ())
-  print ((Left (Right 'h')) :: Either (Either Int Char) Char)
-  print ((Left (Right 'i')) :: Either (Either Int Char) ())
-
diff --git a/ghc/tests/lib/should_run/show001.stdout b/ghc/tests/lib/should_run/show001.stdout
deleted file mode 100644 (file)
index 3be0062..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Nothing
-Just ()
-Just (Just ())
-Just Nothing
-Left 'a'
-Right 'b'
-Right Nothing
-Right (Just 'c')
-Right (Right 'd')
-Right (Left 'e')
-Left 'f'
-Left Nothing
-Left (Just 'g')
-Left (Right 'h')
-Left (Right 'i')
diff --git a/ghc/tests/lib/should_run/stableptr001.hs b/ghc/tests/lib/should_run/stableptr001.hs
deleted file mode 100644 (file)
index 98180b5..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module Main where
-
-import Foreign
-import Stable
-
--- simple test for building/dereferencing stable ptrs
-
-main 
-  = do l <- mapM makeStablePtr [1..100000]
-       sum <- stable_sum l
-       print sum
-
-stable_sum :: [StablePtr Integer] -> IO Integer
-stable_sum [] = return 0
-stable_sum (x:xs) 
-  = do         x'  <- deRefStablePtr x
-       freeStablePtr x
-               xs' <- stable_sum xs
-        return (x' + xs')
diff --git a/ghc/tests/lib/should_run/stableptr001.stdout b/ghc/tests/lib/should_run/stableptr001.stdout
deleted file mode 100644 (file)
index 90ee71a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5000050000
diff --git a/ghc/tests/lib/should_run/stableptr003.hs b/ghc/tests/lib/should_run/stableptr003.hs
deleted file mode 100644 (file)
index ec3cfa8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module Main where
-
-import Stable
-
-main = do
-  stable_list1 <- mapM makeStableName list
-  stable_list2 <- mapM makeStableName list
-  print (stable_list1 == stable_list2)
-
-list = [1..10000] :: [Integer]
diff --git a/ghc/tests/lib/should_run/stableptr003.stdout b/ghc/tests/lib/should_run/stableptr003.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/lib/should_run/stableptr004.hs b/ghc/tests/lib/should_run/stableptr004.hs
deleted file mode 100644 (file)
index 86e9732..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-import StablePtr
-
--- compile without optimisation.
--- run with +RTS -D256 to see the stable pointer being garbage collected.
-
-main = do
-  let xs = [ 1 .. 50000 ]
-  let ys = [ 1 .. 60000 ]
-  s1 <- newStablePtr xs
-  print (sum xs)
-  freeStablePtr s1
-  print (sum ys)
diff --git a/ghc/tests/lib/should_run/stableptr004.stdout b/ghc/tests/lib/should_run/stableptr004.stdout
deleted file mode 100644 (file)
index 30e717b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-1250025000
-1800030000
diff --git a/ghc/tests/lib/should_run/text001.hs b/ghc/tests/lib/should_run/text001.hs
deleted file mode 100644 (file)
index 18aab82..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-     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
deleted file mode 100644 (file)
index a0c7822..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Value 7
diff --git a/ghc/tests/lib/should_run/uri001.hs b/ghc/tests/lib/should_run/uri001.hs
deleted file mode 100644 (file)
index d43b8a5..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-module Main where
-
-import URI
-import Maybe
-import IOExts
-
-main =  sequence_ (map do_test tests)
-
-base = fromJust (parseURI "http://a/b/c/d;p?q")
-
-do_test test = case parseURI test of
-                       Nothing -> error ("no parse: " ++ test)
-                       Just uri -> putStr (show (fromJust (uri `relativeTo` base)) ++ "\n")
-
-tests =
-  [   "g:h",
-      "g",
-      "./g",
-      "g/",
-      "/g",
-      "//g",
-      "?y",
-      "g?y",
-      "#s",
-      "g#s",
-      "g?y#s",
-      ";x",
-      "g;x",
-      "g;x?y#s",
-      ".",
-      "./",
-      "..",
-      "../",
-      "../g",
-      "../..",
-      "../../",
-      "../../g",
-      -- "../../../g" -- should fail
-      -- "../../../../g" -- should fail
-      "/./g",
-      "/../g",
-      "g.",
-      ".g",
-      "g..",
-      "..g",
-      "./../g",
-      "./g/.",
-      "g/./h",
-      "g/../h",
-      "g;x=1/./y",
-      "g;x=1/../y",
-      "g?y/./x",
-      "g?y/../x",
-      "g#s/./x",
-      "g#s/../x"
-  ]
diff --git a/ghc/tests/lib/should_run/uri001.stdout b/ghc/tests/lib/should_run/uri001.stdout
deleted file mode 100644 (file)
index 873a906..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-g:h
-http://a/b/c/g
-http://a/b/c/g
-http://a/b/c/g/
-http://a/g
-http://g
-http://a/b/c/?y
-http://a/b/c/g?y
-http://a/b/c/#s
-http://a/b/c/g#s
-http://a/b/c/g?y#s
-http://a/b/c/;x
-http://a/b/c/g;x
-http://a/b/c/g;x?y#s
-http://a/b/c/
-http://a/b/c/
-http://a/b/
-http://a/b/
-http://a/b/g
-http://a/
-http://a/
-http://a/g
-http://a/./g
-http://a/../g
-http://a/b/c/g.
-http://a/b/c/.g
-http://a/b/c/g..
-http://a/b/c/..g
-http://a/b/g
-http://a/b/c/g/
-http://a/b/c/g/h
-http://a/b/c/h
-http://a/b/c/g;x=1/y
-http://a/b/c/y
-http://a/b/c/g?y/./x
-http://a/b/c/g?y/../x
-http://a/b/c/g#s/./x
-http://a/b/c/g#s/../x
diff --git a/ghc/tests/lib/should_run/weak001.hs b/ghc/tests/lib/should_run/weak001.hs
deleted file mode 100644 (file)
index 26f191c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-import Addr
-import Weak
-
-kill:: Addr -> IO ()
-kill a = do
-    w <- mkWeakPtr a Nothing
-    addFinalizer a $
-        deRefWeak w >> return ()
-
-main:: IO ()
-main = sequence_ . take 10000 . repeat $
-    malloc 100 >>= kill >> return ()
-
-foreign import malloc :: Int -> IO Addr
diff --git a/ghc/tests/lib/socket/Makefile b/ghc/tests/lib/socket/Makefile
deleted file mode 100644 (file)
index 20bb4f6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint -package posix -fglasgow-exts
-
-.PRECIOUS: %.o %.bin
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/lib/socket/socket001.hs b/ghc/tests/lib/socket/socket001.hs
deleted file mode 100644 (file)
index 313f11d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-{- server
-
-The purpose of this test driver is to test TCP Stream sockets.
-All values have been hard coded since the BSD library is not used to
-query the databases for the values.  In therory this code is thus not
-portable but net007/Main.hs provides a portable version using the BSD
-module.
-
-This creates a stream socket bound to port 5000 and waits for incoming
-messages it then reads all available data before closing the
-connection to that peer.
-
-No form of error checking is provided other than that already provided
-by module SocketPrim.
-
-
-TESTS:
-    socket
-    bindSocket
-    listen
-    accept
-    readSocket
-    sClose
-
--}
-
-
-module Main where
-
-import SocketPrim
-
-main = do
-    s <- socket AF_INET Stream 6
-    bindSocket s (SockAddrInet (mkPortNumber 5000) iNADDR_ANY)
-    listen s 5
-
-    let 
-      loop = 
-       accept s                                >>= \ (s',peerAddr) ->
-       putStr "*** Start of Transfer ***\n"    >>
-       let 
-         read_all = 
-           readSocket s' 4                     >>= \ (str, nbytes) ->
-           if nbytes /= 0 then
-               putStr str                      >>
-               read_all
-           else
-               putStr "\n*** End of Transfer ***\n" >>
-               sClose s'
-       in
-           read_all    
-
-    loop
-
diff --git a/ghc/tests/lib/socket/socket001.stdout b/ghc/tests/lib/socket/socket001.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket002.hs b/ghc/tests/lib/socket/socket002.hs
deleted file mode 100644 (file)
index 1e7b19d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{- client
-
-Client side to net001/Main.hs.
-
-Note that the machine IP numbers have been hard coded into this
-program so it is unlikely that you will be able to run this test if
-you are not at dcs.gla.ac.uk :-(
-
-The reason for this is to aviod using the BSD module at this stage of
-testing.
-
-
-TESTS:
-    socket
-    connect
-    writeSocket
-    shutdown
-    inet_addr
--}
-
-
-module Main where
-
-import SocketPrim
-
-
-starbuck    = "130.209.240.81"         -- SunOS 4.1.3 1 sun4c
-marcus     = "130.209.247.2"           -- SunOS 4.1.3 6 sun4m
-avon       = "130.209.247.4"           -- OSF1 V2.0 240 alpha
-karkar     = "130.209.247.3"           -- OSF1 V2.0 240 alpha
-nauru      = "130.209.247.5"           -- Linux 2.0.30 (RH-4.2) x86
-easter     = "130.209.247.6"           -- Linux 2.0.30 (RH-4.2) x86
-
-message            = "Hello World"
-
-
-main =
-    socket AF_INET Stream 6                            >>= \ s ->
-    inet_addr easter                                   >>= \ ia ->
-    connect s (SockAddrInet (mkPortNumber 5000) ia)     >>
-    
-    writeSocket s message                              >>
-    shutdown s ShutdownBoth                            >>
-    sClose s
-
diff --git a/ghc/tests/lib/socket/socket002.stdout b/ghc/tests/lib/socket/socket002.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket003.hs b/ghc/tests/lib/socket/socket003.hs
deleted file mode 100644 (file)
index ea88a34..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-{- server
-
-As for net001 but gets the system to allocate the next free port
-number.  It also prints out the IP number of the peer.
-
-TESTS:
-    getSocketName
-    inet_ntoa
-
--}
-
-module Main where
-
-import SocketPrim
-
-
-main =
-    socket AF_INET Stream 6                    >>= \ s ->
-    bindSocket s (SockAddrInet aNY_PORT iNADDR_ANY)    >>
-    getSocketName s                            >>= \ (SockAddrInet port _) ->
-    putStr ("Allocated Port Number: " ++ show port ++ "\n") >>
-    listen s 5                                 >>
-
-
-    let 
-      loop = 
-       accept s                >>= \ (s',(SockAddrInet _ haddr)) ->
-       inet_ntoa haddr         >>= \ na ->
-       putStr ("*** Start of Transfer from: " ++  na ++ "***\n")       >>
-       let 
-         read_all = 
-           readSocket s' 4                     >>= \ (str, nbytes) ->
-           if nbytes /= 0 then
-               putStr str                      >>
-               read_all
-           else
-               putStr "\n*** End of Transfer ***\n" >>
-               sClose s'
-       in
-           read_all    
-    in
-       loop
-
diff --git a/ghc/tests/lib/socket/socket003.stdout b/ghc/tests/lib/socket/socket003.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket004.hs b/ghc/tests/lib/socket/socket004.hs
deleted file mode 100644 (file)
index d7fbdc9..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{- client
-
-As for net002 but reads port number and message as arguments.
-It also prints out the IP number of the peer machine.
-
-
-
-TESTS:
-    getPeerName
--}
-
-
-module Main(main) where
-
-import SocketPrim
-import System
-
-
-starbuck    = "130.209.240.81"
-marcus     = "130.209.247.2"
-
-nauru      = "130.209.247.5"           -- Linux 2.0.30 (RH-4.2) x86
-easter     = "130.209.247.6"           -- Linux 2.0.30 (RH-4.2) x86
-
-
-main =
-    getArgs                                    >>= \ [port, message] ->
-    socket AF_INET Stream 6                    >>= \ s ->
-    inet_addr easter                           >>= \ i_addr ->
-    connect s (SockAddrInet (mkPortNumber (read port)) i_addr) >>
-
-    getPeerName s                      >>= \ (SockAddrInet p haddr) ->   
-    inet_ntoa haddr                    >>= \ a ->
-    putStr ("Connected to : " ++ a ++ "\n") >>
-    writeSocket s message                      >>
-    shutdown s ShutdownBoth                    >>
-    sClose s
-
diff --git a/ghc/tests/lib/socket/socket004.stdout b/ghc/tests/lib/socket/socket004.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket005.hs b/ghc/tests/lib/socket/socket005.hs
deleted file mode 100644 (file)
index ec504aa..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{- server
-
-Server as net001 but for Unix Domain Datagram sockets.
-
-TESTS:
-    socket
-    bindSocket
-    readSocket
-
--}
-
-
-module Main where
-
-import SocketPrim
-
-
-main =
-    socket AF_UNIX Datagram 0                  >>= \ s ->
-    bindSocket s (SockAddrUnix "sock")         >>
-
-    let 
-      loop = 
-       putStr "*** Start of Transfer ***\n"    >>
-       let 
-         read_all = 
-           readSocket s 1024                   >>= \ (str, nbytes) ->
-           if nbytes /= 0 then
-               putStr str                      >>
-               read_all
-           else
-               putStr "\n*** End of Transfer ***\n"
-       in
-           read_all    
-    in
-       loop
-
diff --git a/ghc/tests/lib/socket/socket005.stdout b/ghc/tests/lib/socket/socket005.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket006.hs b/ghc/tests/lib/socket/socket006.hs
deleted file mode 100644 (file)
index e2ad13a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{- client
-
-Client side of net005
-
-TESTS:
-    socket
-    connect
-    writeSocket
-    shutdown
-    sClose
--}
-
-
-module Main where
-
-import SocketPrim
-
-message            = "Hello World"
-
-
-main =
-    socket AF_UNIX Datagram 0          >>= \ s ->
-    connect s (SockAddrUnix "sock")    >>
-    
-    writeSocket s message              >>
-    shutdown s ShutdownBoth            >>
-    sClose s
diff --git a/ghc/tests/lib/socket/socket006.stdout b/ghc/tests/lib/socket/socket006.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket007.hs b/ghc/tests/lib/socket/socket007.hs
deleted file mode 100644 (file)
index fbc9ff0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-{- server
-
-As net003 but uses the BSD module for portability.  Also prints the
-common name of the host rather than its IP number.
-
-TESTS:
-    getProtocolNumber
-    getSocketName
-    getHostByAddr
-
--}
-
-module Main where
-
-import BSD
-import SocketPrim
-
-main =
-    getProtocolNumber "tcp"                    >>= \ proto ->
-    socket AF_INET Stream proto                        >>= \ s ->
-    bindSocket s (SockAddrInet aNY_PORT iNADDR_ANY)    >>
-    getSocketName s                            >>= \ (SockAddrInet port _) ->
-    putStr ("Allocated Port Number: " ++ show port ++ "\n") >>
-    listen s 5                                 >>
-
-
-    let 
-      loop = 
-       accept s                    >>= \ (s',(SockAddrInet _ haddr)) ->
-       getHostByAddr AF_INET haddr             >>= \ (HostEntry hname _ _ _) ->
-       putStr ("*** Start of Transfer from: " ++ hname ++ "***\n")     >>
-       let 
-         read_all = 
-           readSocket s' 4                     >>= \ (str, nbytes) ->
-           if nbytes /= 0 then
-               putStr str                      >>
-               read_all
-           else
-               putStr "\n*** End of Transfer ***\n" >>
-               sClose s'
-       in
-           read_all    
-    in
-       loop
diff --git a/ghc/tests/lib/socket/socket007.stdout b/ghc/tests/lib/socket/socket007.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket008.hs b/ghc/tests/lib/socket/socket008.hs
deleted file mode 100644 (file)
index 8967634..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module Main where
-
-import SocketPrim
-import BSD
-import System
-
-main =
-    getArgs                                    >>= \ [host, port, message] ->
-    getProtocolNumber "tcp"                    >>= \ proto ->
-    socket AF_INET Stream proto                        >>= \ s ->
-    getHostByName host                         >>= \ (HostEntry _ _ _ haddrs) ->
-    connect s (SockAddrInet (mkPortNumber (read port))
-               (head haddrs))                  >>
-
-    getPeerName s                              >>= \ (SockAddrInet _ haddr) ->  
-    getHostByAddr AF_INET haddr                        >>= \ (HostEntry hname _ _ _) ->
-    putStr ("Connected to : " ++ hname ++ "\n") >>
-    writeSocket s message                      >>
-    shutdown s ShutdownBoth                    >>
-    sClose s
-
diff --git a/ghc/tests/lib/socket/socket008.stdout b/ghc/tests/lib/socket/socket008.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/lib/socket/socket009.hs b/ghc/tests/lib/socket/socket009.hs
deleted file mode 100644 (file)
index c34334e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
--- Sigbjorn and I don't understand what this test is meant to do
--- It simply hangs on stdin!
-
-import IO -- 1.3
-
-import System(getArgs)
-
-main =   getArgs                            >>=        \ [user,host] ->
-         let username = (user ++ "@" ++ host) in
-         openFile username ReadWriteMode    >>=        \ cd          ->
-         hSetBuffering stdin NoBuffering    >>
-         hSetBuffering stdout NoBuffering   >>
-         hSetBuffering cd NoBuffering       >>
-         hPutStr cd speakString             >>
-         speak cd
-
-speakString = "Someone wants to speak with you\n"
-
-speak cd =
-         (hReady cd                         >>=        \ ready       ->
-         if ready then (hGetChar cd >>= putChar)
-         else return ()                     >>
-
-         hReady stdin                       >>=        \ ready       ->
-         if ready then (getChar >>= hPutChar cd)
-         else return ())                    >>
-
-         speak cd
diff --git a/ghc/tests/lib/socket/socket009.stdout b/ghc/tests/lib/socket/socket009.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/numeric/Makefile b/ghc/tests/numeric/Makefile
deleted file mode 100644 (file)
index 7a4e87b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.1 1998/01/07 18:12:52 simonm Exp $
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_run
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/numeric/should_run/Makefile b/ghc/tests/numeric/should_run/Makefile
deleted file mode 100644 (file)
index eee8085..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.8 2000/12/12 17:21:41 simonmar Exp $
-
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-arith006_HC_OPTS +=  -package lang
-arith010_HC_OPTS +=  -package lang
-arith011_HC_OPTS +=  -package lang
-arith012_HC_OPTS +=  -package lang
-num006_HC_OPTS +=  -package lang
-
-.PRECIOUS: %.bin %.o
-
-SRC_MKDEPENDHS_OPTS += -fglasgow-exts
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/numeric/should_run/arith001.hs b/ghc/tests/numeric/should_run/arith001.hs
deleted file mode 100644 (file)
index 32e2906..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
--- !!! conversions: Double <=> Rational/Integer things
---
-import Ratio
-
-main = putStr (show r42  ++ "\n" ++
-              show nu42 ++ ", " ++
-              show de42 ++ "\n" ++
-              show nu42d ++ ", " ++
-              show de42d ++ "\n" ++
-              show s2 ++ ", " ++
-              show e2 ++ "\n" ++
-              show s ++ ", " ++
-              show e ++ "\n" )
-  where  
-    d42 :: Double
-    r42 :: Rational
-    nu42, de42 :: Integer
-    nu42d, de42d :: Double
-
-    d42  = 42
-    r42  = toRational d42
-    nu42 = numerator   r42
-    de42 = denominator r42
-    nu42d= fromInteger nu42
-    de42d= fromInteger de42
-
-    (s,e)= decodeFloat (nu42d / de42d )   
-    (s2,e2) = decodeFloat d42
diff --git a/ghc/tests/numeric/should_run/arith001.stdout b/ghc/tests/numeric/should_run/arith001.stdout
deleted file mode 100644 (file)
index 741c480..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-42 % 1
-42, 1
-42.0, 1.0
-5910974510923776, -47
-5910974510923776, -47
diff --git a/ghc/tests/numeric/should_run/arith002.hs b/ghc/tests/numeric/should_run/arith002.hs
deleted file mode 100644 (file)
index 51d9c66..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
--- !!! basic Rational operations
---
-import Ratio
-
-main
-  = putStr
-       (-- Ratio Ints
-       show [i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc]
-    ++  "\n"
-       -- the Ints
-    ++  show ((map numerator   [i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc])
-           ++(map denominator [i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc]))
-    ++  "\n"
-       -- Booleans
---  ++ show []
---  ++  "\n"
-
-       -- Rationals (Ratio Integers)
-    ++ show [r0a, r0b, r0c, r2a, r2b, rm2a, rm2b, r_pi, r_misc]
-    ++  "\n"
-       -- the Integers
-    ++  show ((map numerator   [r0a, r0b, r0c, r2a, r2b, rm2a, rm2b, r_pi, r_misc])
-           ++(map denominator [r0a, r0b, r0c, r2a, r2b, rm2a, rm2b, r_pi, r_misc]))
-    ++  "\n"
-       -- Booleans
---  ++ show []
---  ++  "\n"
-       )
-  where  
-    i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc :: Ratio Int
-
-    i0a            =    0 % 1
-    i0b            = (-0) % 1
-    i0c            =    0 % (-1)
-    i2a            =    4 % 2
-    i2b            = (-4) % (-2)
-    im2a    = (-4) % 2
-    im2b    =    4 % (-2)
-    i_pi    =   22 % 7
-    i_misc  =    2 % 10000
-
-    r0a, r0b, r0c, r2a, r2b, rm2a, rm2b, r_pi, r_misc :: Rational
-
-    r0a            =    0 % 1
-    r0b            = (-0) % 1
-    r0c            =    0 % (-1)
-    r2a            =    4 % 2
-    r2b            = (-4) % (-2)
-    rm2a    = (-4) % 2
-    rm2b    =    4 % (-2)
-    r_pi    =   22 % 7
-    r_misc  =    2 % 10000
diff --git a/ghc/tests/numeric/should_run/arith002.stdout b/ghc/tests/numeric/should_run/arith002.stdout
deleted file mode 100644 (file)
index 7faf4c4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[0 % 1,0 % 1,0 % 1,2 % 1,2 % 1,-2 % 1,-2 % 1,22 % 7,1 % 5000]
-[0,0,0,2,2,-2,-2,22,1,1,1,1,1,1,1,1,7,5000]
-[0 % 1,0 % 1,0 % 1,2 % 1,2 % 1,-2 % 1,-2 % 1,22 % 7,1 % 5000]
-[0,0,0,2,2,-2,-2,22,1,1,1,1,1,1,1,1,7,5000]
diff --git a/ghc/tests/numeric/should_run/arith003.hs b/ghc/tests/numeric/should_run/arith003.hs
deleted file mode 100644 (file)
index ff7e833..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
--- $Id: arith003.hs,v 1.5 2000/03/23 09:32:36 simonmar Exp $
---
--- !!! test Int/Integer arithmetic operations from the Prelude.
---
-
-main
-  = putStr
-       (
-       showit (do_ops int_ops) ++
-       showit (do_ops integer_ops)
-       )
-
-showit :: Integral a => [(String, a, a, a)] -> String
-showit stuff = concat
-       [ str ++ " " ++ show l ++ " " ++ show r ++ " = " ++ show result ++ "\n"
-         | (str, l, r, result) <- stuff
-       ]
-
-do_ops :: Integral a => [((a -> a -> a), String, [(a,a)])]
-       -> [(String, a, a, a)]
-do_ops ops = [ (str, l, r, l `op` r) | (op,str,args) <- ops, (l,r) <- args ]
-
-small_operands, non_min_operands, operands, non_max_operands
-   :: Integral a => [a]
-small_operands  = [ 0, 1, -1, 2, -2 ]
-operands = small_operands ++ [ fromIntegral minInt, fromIntegral maxInt ]
-non_min_operands = small_operands ++ [ fromIntegral maxInt ]
-non_max_operands = small_operands ++ [ fromIntegral minInt ]
-
-large_operands :: [ Integer ]
-large_operands = operands ++ 
-   [ fromIntegral minInt - 1,
-     fromIntegral maxInt + 1,
-     fromIntegral minInt * 2,
-     fromIntegral maxInt * 2,
-     fromIntegral minInt ^ 2, 
-     fromIntegral maxInt ^ 2
-   ]
-
-integer_ops :: [((Integer -> Integer -> Integer), String, [(Integer,Integer)])]
-integer_ops = [ 
-  ((+),  "(+)",  all_ok),
-  ((-),  "(-)",  all_ok),
-  (div,  "div",  large_non_zero_r),
-  (mod,  "mod",  large_non_zero_r),
-  (quot, "quot", large_non_zero_r),
-  (rem,  "rem",  large_non_zero_r),
-  (gcd,  "gcd",  either_non_zero),
-  (lcm,  "lcm",  either_non_zero)
-  ]
-
-int_ops :: [((Int -> Int -> Int), String, [(Int,Int)])]
-int_ops = [ 
-  ((+),  "(+)",  all_ok),
-  ((-),  "(-)",  all_ok),
-  ((^),  "(^)",  small_non_neg_r),
-  (div,  "div",  non_min_l_or_zero_r),
-  (mod,  "mod",  non_min_l_or_zero_r),
-  (quot, "quot", non_min_l_or_zero_r),
-  (rem,  "rem",  non_min_l_or_zero_r),
-  (gcd,  "gcd",  either_non_zero),
-  (lcm,  "lcm",  non_max_r_either_non_zero)
-  ]
-
-all_ok, non_zero_r, either_non_zero, non_min_l_or_zero_r,
- non_max_r_either_non_zero, small_non_neg_r
-  :: Integral a => [(a,a)]
-
-all_ok          = [ (l,r) | l <- operands, r <- operands ]
-large_non_zero_r = [ (l,r) | l <- operands, r <- large_operands, r /= 0 ]
-non_zero_r      = [ (l,r) | l <- operands, r <- operands, r /= 0 ]
-either_non_zero = [ (l,r) | l <- operands, r <- operands, l /= 0 || r /= 0 ]
-small_non_neg_r = [ (l,r) | l <- operands, r <- small_operands, r >= 0 ]
-non_min_l_or_zero_r = [ (l,r) | l <- non_min_operands, r <- operands, r /= 0 ]
-non_max_r_either_non_zero = [ (l,r) | l <- operands, r <- non_max_operands, l /= 0 || r /= 0 ]
-
-minInt = minBound :: Int
-maxInt = maxBound :: Int
diff --git a/ghc/tests/numeric/should_run/arith003.stdout b/ghc/tests/numeric/should_run/arith003.stdout
deleted file mode 100644 (file)
index 67dae59..0000000
+++ /dev/null
@@ -1,882 +0,0 @@
-(+) 0 0 = 0
-(+) 0 1 = 1
-(+) 0 -1 = -1
-(+) 0 2 = 2
-(+) 0 -2 = -2
-(+) 0 -2147483648 = -2147483648
-(+) 0 2147483647 = 2147483647
-(+) 1 0 = 1
-(+) 1 1 = 2
-(+) 1 -1 = 0
-(+) 1 2 = 3
-(+) 1 -2 = -1
-(+) 1 -2147483648 = -2147483647
-(+) 1 2147483647 = -2147483648
-(+) -1 0 = -1
-(+) -1 1 = 0
-(+) -1 -1 = -2
-(+) -1 2 = 1
-(+) -1 -2 = -3
-(+) -1 -2147483648 = 2147483647
-(+) -1 2147483647 = 2147483646
-(+) 2 0 = 2
-(+) 2 1 = 3
-(+) 2 -1 = 1
-(+) 2 2 = 4
-(+) 2 -2 = 0
-(+) 2 -2147483648 = -2147483646
-(+) 2 2147483647 = -2147483647
-(+) -2 0 = -2
-(+) -2 1 = -1
-(+) -2 -1 = -3
-(+) -2 2 = 0
-(+) -2 -2 = -4
-(+) -2 -2147483648 = 2147483646
-(+) -2 2147483647 = 2147483645
-(+) -2147483648 0 = -2147483648
-(+) -2147483648 1 = -2147483647
-(+) -2147483648 -1 = 2147483647
-(+) -2147483648 2 = -2147483646
-(+) -2147483648 -2 = 2147483646
-(+) -2147483648 -2147483648 = 0
-(+) -2147483648 2147483647 = -1
-(+) 2147483647 0 = 2147483647
-(+) 2147483647 1 = -2147483648
-(+) 2147483647 -1 = 2147483646
-(+) 2147483647 2 = -2147483647
-(+) 2147483647 -2 = 2147483645
-(+) 2147483647 -2147483648 = -1
-(+) 2147483647 2147483647 = -2
-(-) 0 0 = 0
-(-) 0 1 = -1
-(-) 0 -1 = 1
-(-) 0 2 = -2
-(-) 0 -2 = 2
-(-) 0 -2147483648 = -2147483648
-(-) 0 2147483647 = -2147483647
-(-) 1 0 = 1
-(-) 1 1 = 0
-(-) 1 -1 = 2
-(-) 1 2 = -1
-(-) 1 -2 = 3
-(-) 1 -2147483648 = -2147483647
-(-) 1 2147483647 = -2147483646
-(-) -1 0 = -1
-(-) -1 1 = -2
-(-) -1 -1 = 0
-(-) -1 2 = -3
-(-) -1 -2 = 1
-(-) -1 -2147483648 = 2147483647
-(-) -1 2147483647 = -2147483648
-(-) 2 0 = 2
-(-) 2 1 = 1
-(-) 2 -1 = 3
-(-) 2 2 = 0
-(-) 2 -2 = 4
-(-) 2 -2147483648 = -2147483646
-(-) 2 2147483647 = -2147483645
-(-) -2 0 = -2
-(-) -2 1 = -3
-(-) -2 -1 = -1
-(-) -2 2 = -4
-(-) -2 -2 = 0
-(-) -2 -2147483648 = 2147483646
-(-) -2 2147483647 = 2147483647
-(-) -2147483648 0 = -2147483648
-(-) -2147483648 1 = 2147483647
-(-) -2147483648 -1 = -2147483647
-(-) -2147483648 2 = 2147483646
-(-) -2147483648 -2 = -2147483646
-(-) -2147483648 -2147483648 = 0
-(-) -2147483648 2147483647 = 1
-(-) 2147483647 0 = 2147483647
-(-) 2147483647 1 = 2147483646
-(-) 2147483647 -1 = -2147483648
-(-) 2147483647 2 = 2147483645
-(-) 2147483647 -2 = -2147483647
-(-) 2147483647 -2147483648 = -1
-(-) 2147483647 2147483647 = 0
-(^) 0 0 = 1
-(^) 0 1 = 0
-(^) 0 2 = 0
-(^) 1 0 = 1
-(^) 1 1 = 1
-(^) 1 2 = 1
-(^) -1 0 = 1
-(^) -1 1 = -1
-(^) -1 2 = 1
-(^) 2 0 = 1
-(^) 2 1 = 2
-(^) 2 2 = 4
-(^) -2 0 = 1
-(^) -2 1 = -2
-(^) -2 2 = 4
-(^) -2147483648 0 = 1
-(^) -2147483648 1 = -2147483648
-(^) -2147483648 2 = 0
-(^) 2147483647 0 = 1
-(^) 2147483647 1 = 2147483647
-(^) 2147483647 2 = 1
-div 0 1 = 0
-div 0 -1 = 0
-div 0 2 = 0
-div 0 -2 = 0
-div 0 -2147483648 = 0
-div 0 2147483647 = 0
-div 1 1 = 1
-div 1 -1 = -1
-div 1 2 = 0
-div 1 -2 = -1
-div 1 -2147483648 = 1
-div 1 2147483647 = 0
-div -1 1 = -1
-div -1 -1 = 1
-div -1 2 = -1
-div -1 -2 = 0
-div -1 -2147483648 = 0
-div -1 2147483647 = -1
-div 2 1 = 2
-div 2 -1 = -2
-div 2 2 = 1
-div 2 -2 = -1
-div 2 -2147483648 = 0
-div 2 2147483647 = 0
-div -2 1 = -2
-div -2 -1 = 2
-div -2 2 = -1
-div -2 -2 = 1
-div -2 -2147483648 = 0
-div -2 2147483647 = -1
-div 2147483647 1 = 2147483647
-div 2147483647 -1 = -2147483647
-div 2147483647 2 = 1073741823
-div 2147483647 -2 = 1073741824
-div 2147483647 -2147483648 = 0
-div 2147483647 2147483647 = 1
-mod 0 1 = 0
-mod 0 -1 = 0
-mod 0 2 = 0
-mod 0 -2 = 0
-mod 0 -2147483648 = 0
-mod 0 2147483647 = 0
-mod 1 1 = 0
-mod 1 -1 = 0
-mod 1 2 = 1
-mod 1 -2 = -1
-mod 1 -2147483648 = -2147483647
-mod 1 2147483647 = 1
-mod -1 1 = 0
-mod -1 -1 = 0
-mod -1 2 = 1
-mod -1 -2 = -1
-mod -1 -2147483648 = -1
-mod -1 2147483647 = 2147483646
-mod 2 1 = 0
-mod 2 -1 = 0
-mod 2 2 = 0
-mod 2 -2 = 0
-mod 2 -2147483648 = -2147483646
-mod 2 2147483647 = 2
-mod -2 1 = 0
-mod -2 -1 = 0
-mod -2 2 = 0
-mod -2 -2 = 0
-mod -2 -2147483648 = -2
-mod -2 2147483647 = 2147483645
-mod 2147483647 1 = 0
-mod 2147483647 -1 = 0
-mod 2147483647 2 = 1
-mod 2147483647 -2 = -1
-mod 2147483647 -2147483648 = -1
-mod 2147483647 2147483647 = 0
-quot 0 1 = 0
-quot 0 -1 = 0
-quot 0 2 = 0
-quot 0 -2 = 0
-quot 0 -2147483648 = 0
-quot 0 2147483647 = 0
-quot 1 1 = 1
-quot 1 -1 = -1
-quot 1 2 = 0
-quot 1 -2 = 0
-quot 1 -2147483648 = 0
-quot 1 2147483647 = 0
-quot -1 1 = -1
-quot -1 -1 = 1
-quot -1 2 = 0
-quot -1 -2 = 0
-quot -1 -2147483648 = 0
-quot -1 2147483647 = 0
-quot 2 1 = 2
-quot 2 -1 = -2
-quot 2 2 = 1
-quot 2 -2 = -1
-quot 2 -2147483648 = 0
-quot 2 2147483647 = 0
-quot -2 1 = -2
-quot -2 -1 = 2
-quot -2 2 = -1
-quot -2 -2 = 1
-quot -2 -2147483648 = 0
-quot -2 2147483647 = 0
-quot 2147483647 1 = 2147483647
-quot 2147483647 -1 = -2147483647
-quot 2147483647 2 = 1073741823
-quot 2147483647 -2 = -1073741823
-quot 2147483647 -2147483648 = 0
-quot 2147483647 2147483647 = 1
-rem 0 1 = 0
-rem 0 -1 = 0
-rem 0 2 = 0
-rem 0 -2 = 0
-rem 0 -2147483648 = 0
-rem 0 2147483647 = 0
-rem 1 1 = 0
-rem 1 -1 = 0
-rem 1 2 = 1
-rem 1 -2 = 1
-rem 1 -2147483648 = 1
-rem 1 2147483647 = 1
-rem -1 1 = 0
-rem -1 -1 = 0
-rem -1 2 = -1
-rem -1 -2 = -1
-rem -1 -2147483648 = -1
-rem -1 2147483647 = -1
-rem 2 1 = 0
-rem 2 -1 = 0
-rem 2 2 = 0
-rem 2 -2 = 0
-rem 2 -2147483648 = 2
-rem 2 2147483647 = 2
-rem -2 1 = 0
-rem -2 -1 = 0
-rem -2 2 = 0
-rem -2 -2 = 0
-rem -2 -2147483648 = -2
-rem -2 2147483647 = -2
-rem 2147483647 1 = 0
-rem 2147483647 -1 = 0
-rem 2147483647 2 = 1
-rem 2147483647 -2 = 1
-rem 2147483647 -2147483648 = 2147483647
-rem 2147483647 2147483647 = 0
-gcd 0 1 = 1
-gcd 0 -1 = 1
-gcd 0 2 = 2
-gcd 0 -2 = 2
-gcd 0 -2147483648 = -2147483648
-gcd 0 2147483647 = 2147483647
-gcd 1 0 = 1
-gcd 1 1 = 1
-gcd 1 -1 = 1
-gcd 1 2 = 1
-gcd 1 -2 = 1
-gcd 1 -2147483648 = 1
-gcd 1 2147483647 = 1
-gcd -1 0 = 1
-gcd -1 1 = 1
-gcd -1 -1 = 1
-gcd -1 2 = 1
-gcd -1 -2 = 1
-gcd -1 -2147483648 = 1
-gcd -1 2147483647 = 1
-gcd 2 0 = 2
-gcd 2 1 = 1
-gcd 2 -1 = 1
-gcd 2 2 = 2
-gcd 2 -2 = 2
-gcd 2 -2147483648 = 2
-gcd 2 2147483647 = 1
-gcd -2 0 = 2
-gcd -2 1 = 1
-gcd -2 -1 = 1
-gcd -2 2 = 2
-gcd -2 -2 = 2
-gcd -2 -2147483648 = 2
-gcd -2 2147483647 = 1
-gcd -2147483648 0 = -2147483648
-gcd -2147483648 1 = 1
-gcd -2147483648 -1 = 1
-gcd -2147483648 2 = 2
-gcd -2147483648 -2 = 2
-gcd -2147483648 -2147483648 = -2147483648
-gcd -2147483648 2147483647 = -1
-gcd 2147483647 0 = 2147483647
-gcd 2147483647 1 = 1
-gcd 2147483647 -1 = 1
-gcd 2147483647 2 = 1
-gcd 2147483647 -2 = 1
-gcd 2147483647 -2147483648 = -1
-gcd 2147483647 2147483647 = 2147483647
-lcm 0 1 = 0
-lcm 0 -1 = 0
-lcm 0 2 = 0
-lcm 0 -2 = 0
-lcm 0 -2147483648 = 0
-lcm 1 0 = 0
-lcm 1 1 = 1
-lcm 1 -1 = 1
-lcm 1 2 = 2
-lcm 1 -2 = 2
-lcm 1 -2147483648 = -2147483648
-lcm -1 0 = 0
-lcm -1 1 = 1
-lcm -1 -1 = 1
-lcm -1 2 = 2
-lcm -1 -2 = 2
-lcm -1 -2147483648 = -2147483648
-lcm 2 0 = 0
-lcm 2 1 = 2
-lcm 2 -1 = 2
-lcm 2 2 = 2
-lcm 2 -2 = 2
-lcm 2 -2147483648 = -2147483648
-lcm -2 0 = 0
-lcm -2 1 = 2
-lcm -2 -1 = 2
-lcm -2 2 = 2
-lcm -2 -2 = 2
-lcm -2 -2147483648 = -2147483648
-lcm -2147483648 0 = 0
-lcm -2147483648 1 = -2147483648
-lcm -2147483648 -1 = -2147483648
-lcm -2147483648 2 = -2147483648
-lcm -2147483648 -2 = -2147483648
-lcm -2147483648 -2147483648 = -2147483648
-lcm 2147483647 0 = 0
-lcm 2147483647 1 = 2147483647
-lcm 2147483647 -1 = 2147483647
-lcm 2147483647 2 = 2
-lcm 2147483647 -2 = 2
-lcm 2147483647 -2147483648 = -2147483648
-(+) 0 0 = 0
-(+) 0 1 = 1
-(+) 0 -1 = -1
-(+) 0 2 = 2
-(+) 0 -2 = -2
-(+) 0 -2147483648 = -2147483648
-(+) 0 2147483647 = 2147483647
-(+) 1 0 = 1
-(+) 1 1 = 2
-(+) 1 -1 = 0
-(+) 1 2 = 3
-(+) 1 -2 = -1
-(+) 1 -2147483648 = -2147483647
-(+) 1 2147483647 = 2147483648
-(+) -1 0 = -1
-(+) -1 1 = 0
-(+) -1 -1 = -2
-(+) -1 2 = 1
-(+) -1 -2 = -3
-(+) -1 -2147483648 = -2147483649
-(+) -1 2147483647 = 2147483646
-(+) 2 0 = 2
-(+) 2 1 = 3
-(+) 2 -1 = 1
-(+) 2 2 = 4
-(+) 2 -2 = 0
-(+) 2 -2147483648 = -2147483646
-(+) 2 2147483647 = 2147483649
-(+) -2 0 = -2
-(+) -2 1 = -1
-(+) -2 -1 = -3
-(+) -2 2 = 0
-(+) -2 -2 = -4
-(+) -2 -2147483648 = -2147483650
-(+) -2 2147483647 = 2147483645
-(+) -2147483648 0 = -2147483648
-(+) -2147483648 1 = -2147483647
-(+) -2147483648 -1 = -2147483649
-(+) -2147483648 2 = -2147483646
-(+) -2147483648 -2 = -2147483650
-(+) -2147483648 -2147483648 = -4294967296
-(+) -2147483648 2147483647 = -1
-(+) 2147483647 0 = 2147483647
-(+) 2147483647 1 = 2147483648
-(+) 2147483647 -1 = 2147483646
-(+) 2147483647 2 = 2147483649
-(+) 2147483647 -2 = 2147483645
-(+) 2147483647 -2147483648 = -1
-(+) 2147483647 2147483647 = 4294967294
-(-) 0 0 = 0
-(-) 0 1 = -1
-(-) 0 -1 = 1
-(-) 0 2 = -2
-(-) 0 -2 = 2
-(-) 0 -2147483648 = 2147483648
-(-) 0 2147483647 = -2147483647
-(-) 1 0 = 1
-(-) 1 1 = 0
-(-) 1 -1 = 2
-(-) 1 2 = -1
-(-) 1 -2 = 3
-(-) 1 -2147483648 = 2147483649
-(-) 1 2147483647 = -2147483646
-(-) -1 0 = -1
-(-) -1 1 = -2
-(-) -1 -1 = 0
-(-) -1 2 = -3
-(-) -1 -2 = 1
-(-) -1 -2147483648 = 2147483647
-(-) -1 2147483647 = -2147483648
-(-) 2 0 = 2
-(-) 2 1 = 1
-(-) 2 -1 = 3
-(-) 2 2 = 0
-(-) 2 -2 = 4
-(-) 2 -2147483648 = 2147483650
-(-) 2 2147483647 = -2147483645
-(-) -2 0 = -2
-(-) -2 1 = -3
-(-) -2 -1 = -1
-(-) -2 2 = -4
-(-) -2 -2 = 0
-(-) -2 -2147483648 = 2147483646
-(-) -2 2147483647 = -2147483649
-(-) -2147483648 0 = -2147483648
-(-) -2147483648 1 = -2147483649
-(-) -2147483648 -1 = -2147483647
-(-) -2147483648 2 = -2147483650
-(-) -2147483648 -2 = -2147483646
-(-) -2147483648 -2147483648 = 0
-(-) -2147483648 2147483647 = -4294967295
-(-) 2147483647 0 = 2147483647
-(-) 2147483647 1 = 2147483646
-(-) 2147483647 -1 = 2147483648
-(-) 2147483647 2 = 2147483645
-(-) 2147483647 -2 = 2147483649
-(-) 2147483647 -2147483648 = 4294967295
-(-) 2147483647 2147483647 = 0
-div 0 1 = 0
-div 0 -1 = 0
-div 0 2 = 0
-div 0 -2 = 0
-div 0 -2147483648 = 0
-div 0 2147483647 = 0
-div 0 -2147483649 = 0
-div 0 2147483648 = 0
-div 0 -4294967296 = 0
-div 0 4294967294 = 0
-div 0 4611686018427387904 = 0
-div 0 4611686014132420609 = 0
-div 1 1 = 1
-div 1 -1 = -1
-div 1 2 = 0
-div 1 -2 = -1
-div 1 -2147483648 = 1
-div 1 2147483647 = 0
-div 1 -2147483649 = -1
-div 1 2147483648 = 0
-div 1 -4294967296 = -1
-div 1 4294967294 = 0
-div 1 4611686018427387904 = 0
-div 1 4611686014132420609 = 0
-div -1 1 = -1
-div -1 -1 = 1
-div -1 2 = -1
-div -1 -2 = 0
-div -1 -2147483648 = 0
-div -1 2147483647 = -1
-div -1 -2147483649 = 0
-div -1 2147483648 = -1
-div -1 -4294967296 = 0
-div -1 4294967294 = -1
-div -1 4611686018427387904 = -1
-div -1 4611686014132420609 = -1
-div 2 1 = 2
-div 2 -1 = -2
-div 2 2 = 1
-div 2 -2 = -1
-div 2 -2147483648 = 0
-div 2 2147483647 = 0
-div 2 -2147483649 = -1
-div 2 2147483648 = 0
-div 2 -4294967296 = -1
-div 2 4294967294 = 0
-div 2 4611686018427387904 = 0
-div 2 4611686014132420609 = 0
-div -2 1 = -2
-div -2 -1 = 2
-div -2 2 = -1
-div -2 -2 = 1
-div -2 -2147483648 = 0
-div -2 2147483647 = -1
-div -2 -2147483649 = 0
-div -2 2147483648 = -1
-div -2 -4294967296 = 0
-div -2 4294967294 = -1
-div -2 4611686018427387904 = -1
-div -2 4611686014132420609 = -1
-div -2147483648 1 = -2147483648
-div -2147483648 -1 = 2147483648
-div -2147483648 2 = -1073741824
-div -2147483648 -2 = 1073741824
-div -2147483648 -2147483648 = 1
-div -2147483648 2147483647 = -2
-div -2147483648 -2147483649 = 0
-div -2147483648 2147483648 = -1
-div -2147483648 -4294967296 = 0
-div -2147483648 4294967294 = -1
-div -2147483648 4611686018427387904 = -1
-div -2147483648 4611686014132420609 = -1
-div 2147483647 1 = 2147483647
-div 2147483647 -1 = -2147483647
-div 2147483647 2 = 1073741823
-div 2147483647 -2 = 1073741824
-div 2147483647 -2147483648 = 0
-div 2147483647 2147483647 = 1
-div 2147483647 -2147483649 = -1
-div 2147483647 2147483648 = 0
-div 2147483647 -4294967296 = -1
-div 2147483647 4294967294 = 0
-div 2147483647 4611686018427387904 = 0
-div 2147483647 4611686014132420609 = 0
-mod 0 1 = 0
-mod 0 -1 = 0
-mod 0 2 = 0
-mod 0 -2 = 0
-mod 0 -2147483648 = 0
-mod 0 2147483647 = 0
-mod 0 -2147483649 = 0
-mod 0 2147483648 = 0
-mod 0 -4294967296 = 0
-mod 0 4294967294 = 0
-mod 0 4611686018427387904 = 0
-mod 0 4611686014132420609 = 0
-mod 1 1 = 0
-mod 1 -1 = 0
-mod 1 2 = 1
-mod 1 -2 = -1
-mod 1 -2147483648 = -2147483647
-mod 1 2147483647 = 1
-mod 1 -2147483649 = -2147483648
-mod 1 2147483648 = 1
-mod 1 -4294967296 = -4294967295
-mod 1 4294967294 = 1
-mod 1 4611686018427387904 = 1
-mod 1 4611686014132420609 = 1
-mod -1 1 = 0
-mod -1 -1 = 0
-mod -1 2 = 1
-mod -1 -2 = -1
-mod -1 -2147483648 = -1
-mod -1 2147483647 = 2147483646
-mod -1 -2147483649 = -1
-mod -1 2147483648 = 2147483647
-mod -1 -4294967296 = -1
-mod -1 4294967294 = 4294967293
-mod -1 4611686018427387904 = 4611686018427387903
-mod -1 4611686014132420609 = 4611686014132420608
-mod 2 1 = 0
-mod 2 -1 = 0
-mod 2 2 = 0
-mod 2 -2 = 0
-mod 2 -2147483648 = -2147483646
-mod 2 2147483647 = 2
-mod 2 -2147483649 = -2147483647
-mod 2 2147483648 = 2
-mod 2 -4294967296 = -4294967294
-mod 2 4294967294 = 2
-mod 2 4611686018427387904 = 2
-mod 2 4611686014132420609 = 2
-mod -2 1 = 0
-mod -2 -1 = 0
-mod -2 2 = 0
-mod -2 -2 = 0
-mod -2 -2147483648 = -2
-mod -2 2147483647 = 2147483645
-mod -2 -2147483649 = -2
-mod -2 2147483648 = 2147483646
-mod -2 -4294967296 = -2
-mod -2 4294967294 = 4294967292
-mod -2 4611686018427387904 = 4611686018427387902
-mod -2 4611686014132420609 = 4611686014132420607
-mod -2147483648 1 = 0
-mod -2147483648 -1 = 0
-mod -2147483648 2 = 0
-mod -2147483648 -2 = 0
-mod -2147483648 -2147483648 = 0
-mod -2147483648 2147483647 = 2147483646
-mod -2147483648 -2147483649 = -2147483648
-mod -2147483648 2147483648 = 0
-mod -2147483648 -4294967296 = -2147483648
-mod -2147483648 4294967294 = 2147483646
-mod -2147483648 4611686018427387904 = 4611686016279904256
-mod -2147483648 4611686014132420609 = 4611686011984936961
-mod 2147483647 1 = 0
-mod 2147483647 -1 = 0
-mod 2147483647 2 = 1
-mod 2147483647 -2 = -1
-mod 2147483647 -2147483648 = -1
-mod 2147483647 2147483647 = 0
-mod 2147483647 -2147483649 = -2
-mod 2147483647 2147483648 = 2147483647
-mod 2147483647 -4294967296 = -2147483649
-mod 2147483647 4294967294 = 2147483647
-mod 2147483647 4611686018427387904 = 2147483647
-mod 2147483647 4611686014132420609 = 2147483647
-quot 0 1 = 0
-quot 0 -1 = 0
-quot 0 2 = 0
-quot 0 -2 = 0
-quot 0 -2147483648 = 0
-quot 0 2147483647 = 0
-quot 0 -2147483649 = 0
-quot 0 2147483648 = 0
-quot 0 -4294967296 = 0
-quot 0 4294967294 = 0
-quot 0 4611686018427387904 = 0
-quot 0 4611686014132420609 = 0
-quot 1 1 = 1
-quot 1 -1 = -1
-quot 1 2 = 0
-quot 1 -2 = 0
-quot 1 -2147483648 = 0
-quot 1 2147483647 = 0
-quot 1 -2147483649 = 0
-quot 1 2147483648 = 0
-quot 1 -4294967296 = 0
-quot 1 4294967294 = 0
-quot 1 4611686018427387904 = 0
-quot 1 4611686014132420609 = 0
-quot -1 1 = -1
-quot -1 -1 = 1
-quot -1 2 = 0
-quot -1 -2 = 0
-quot -1 -2147483648 = 0
-quot -1 2147483647 = 0
-quot -1 -2147483649 = 0
-quot -1 2147483648 = 0
-quot -1 -4294967296 = 0
-quot -1 4294967294 = 0
-quot -1 4611686018427387904 = 0
-quot -1 4611686014132420609 = 0
-quot 2 1 = 2
-quot 2 -1 = -2
-quot 2 2 = 1
-quot 2 -2 = -1
-quot 2 -2147483648 = 0
-quot 2 2147483647 = 0
-quot 2 -2147483649 = 0
-quot 2 2147483648 = 0
-quot 2 -4294967296 = 0
-quot 2 4294967294 = 0
-quot 2 4611686018427387904 = 0
-quot 2 4611686014132420609 = 0
-quot -2 1 = -2
-quot -2 -1 = 2
-quot -2 2 = -1
-quot -2 -2 = 1
-quot -2 -2147483648 = 0
-quot -2 2147483647 = 0
-quot -2 -2147483649 = 0
-quot -2 2147483648 = 0
-quot -2 -4294967296 = 0
-quot -2 4294967294 = 0
-quot -2 4611686018427387904 = 0
-quot -2 4611686014132420609 = 0
-quot -2147483648 1 = -2147483648
-quot -2147483648 -1 = 2147483648
-quot -2147483648 2 = -1073741824
-quot -2147483648 -2 = 1073741824
-quot -2147483648 -2147483648 = 1
-quot -2147483648 2147483647 = -1
-quot -2147483648 -2147483649 = 0
-quot -2147483648 2147483648 = -1
-quot -2147483648 -4294967296 = 0
-quot -2147483648 4294967294 = 0
-quot -2147483648 4611686018427387904 = 0
-quot -2147483648 4611686014132420609 = 0
-quot 2147483647 1 = 2147483647
-quot 2147483647 -1 = -2147483647
-quot 2147483647 2 = 1073741823
-quot 2147483647 -2 = -1073741823
-quot 2147483647 -2147483648 = 0
-quot 2147483647 2147483647 = 1
-quot 2147483647 -2147483649 = 0
-quot 2147483647 2147483648 = 0
-quot 2147483647 -4294967296 = 0
-quot 2147483647 4294967294 = 0
-quot 2147483647 4611686018427387904 = 0
-quot 2147483647 4611686014132420609 = 0
-rem 0 1 = 0
-rem 0 -1 = 0
-rem 0 2 = 0
-rem 0 -2 = 0
-rem 0 -2147483648 = 0
-rem 0 2147483647 = 0
-rem 0 -2147483649 = 0
-rem 0 2147483648 = 0
-rem 0 -4294967296 = 0
-rem 0 4294967294 = 0
-rem 0 4611686018427387904 = 0
-rem 0 4611686014132420609 = 0
-rem 1 1 = 0
-rem 1 -1 = 0
-rem 1 2 = 1
-rem 1 -2 = 1
-rem 1 -2147483648 = 1
-rem 1 2147483647 = 1
-rem 1 -2147483649 = 1
-rem 1 2147483648 = 1
-rem 1 -4294967296 = 1
-rem 1 4294967294 = 1
-rem 1 4611686018427387904 = 1
-rem 1 4611686014132420609 = 1
-rem -1 1 = 0
-rem -1 -1 = 0
-rem -1 2 = -1
-rem -1 -2 = -1
-rem -1 -2147483648 = -1
-rem -1 2147483647 = -1
-rem -1 -2147483649 = -1
-rem -1 2147483648 = -1
-rem -1 -4294967296 = -1
-rem -1 4294967294 = -1
-rem -1 4611686018427387904 = -1
-rem -1 4611686014132420609 = -1
-rem 2 1 = 0
-rem 2 -1 = 0
-rem 2 2 = 0
-rem 2 -2 = 0
-rem 2 -2147483648 = 2
-rem 2 2147483647 = 2
-rem 2 -2147483649 = 2
-rem 2 2147483648 = 2
-rem 2 -4294967296 = 2
-rem 2 4294967294 = 2
-rem 2 4611686018427387904 = 2
-rem 2 4611686014132420609 = 2
-rem -2 1 = 0
-rem -2 -1 = 0
-rem -2 2 = 0
-rem -2 -2 = 0
-rem -2 -2147483648 = -2
-rem -2 2147483647 = -2
-rem -2 -2147483649 = -2
-rem -2 2147483648 = -2
-rem -2 -4294967296 = -2
-rem -2 4294967294 = -2
-rem -2 4611686018427387904 = -2
-rem -2 4611686014132420609 = -2
-rem -2147483648 1 = 0
-rem -2147483648 -1 = 0
-rem -2147483648 2 = 0
-rem -2147483648 -2 = 0
-rem -2147483648 -2147483648 = 0
-rem -2147483648 2147483647 = -1
-rem -2147483648 -2147483649 = -2147483648
-rem -2147483648 2147483648 = 0
-rem -2147483648 -4294967296 = -2147483648
-rem -2147483648 4294967294 = -2147483648
-rem -2147483648 4611686018427387904 = -2147483648
-rem -2147483648 4611686014132420609 = -2147483648
-rem 2147483647 1 = 0
-rem 2147483647 -1 = 0
-rem 2147483647 2 = 1
-rem 2147483647 -2 = 1
-rem 2147483647 -2147483648 = 2147483647
-rem 2147483647 2147483647 = 0
-rem 2147483647 -2147483649 = 2147483647
-rem 2147483647 2147483648 = 2147483647
-rem 2147483647 -4294967296 = 2147483647
-rem 2147483647 4294967294 = 2147483647
-rem 2147483647 4611686018427387904 = 2147483647
-rem 2147483647 4611686014132420609 = 2147483647
-gcd 0 1 = 1
-gcd 0 -1 = 1
-gcd 0 2 = 2
-gcd 0 -2 = 2
-gcd 0 -2147483648 = 2147483648
-gcd 0 2147483647 = 2147483647
-gcd 1 0 = 1
-gcd 1 1 = 1
-gcd 1 -1 = 1
-gcd 1 2 = 1
-gcd 1 -2 = 1
-gcd 1 -2147483648 = 1
-gcd 1 2147483647 = 1
-gcd -1 0 = 1
-gcd -1 1 = 1
-gcd -1 -1 = 1
-gcd -1 2 = 1
-gcd -1 -2 = 1
-gcd -1 -2147483648 = 1
-gcd -1 2147483647 = 1
-gcd 2 0 = 2
-gcd 2 1 = 1
-gcd 2 -1 = 1
-gcd 2 2 = 2
-gcd 2 -2 = 2
-gcd 2 -2147483648 = 2
-gcd 2 2147483647 = 1
-gcd -2 0 = 2
-gcd -2 1 = 1
-gcd -2 -1 = 1
-gcd -2 2 = 2
-gcd -2 -2 = 2
-gcd -2 -2147483648 = 2
-gcd -2 2147483647 = 1
-gcd -2147483648 0 = 2147483648
-gcd -2147483648 1 = 1
-gcd -2147483648 -1 = 1
-gcd -2147483648 2 = 2
-gcd -2147483648 -2 = 2
-gcd -2147483648 -2147483648 = 2147483648
-gcd -2147483648 2147483647 = 1
-gcd 2147483647 0 = 2147483647
-gcd 2147483647 1 = 1
-gcd 2147483647 -1 = 1
-gcd 2147483647 2 = 1
-gcd 2147483647 -2 = 1
-gcd 2147483647 -2147483648 = 1
-gcd 2147483647 2147483647 = 2147483647
-lcm 0 1 = 0
-lcm 0 -1 = 0
-lcm 0 2 = 0
-lcm 0 -2 = 0
-lcm 0 -2147483648 = 0
-lcm 0 2147483647 = 0
-lcm 1 0 = 0
-lcm 1 1 = 1
-lcm 1 -1 = 1
-lcm 1 2 = 2
-lcm 1 -2 = 2
-lcm 1 -2147483648 = 2147483648
-lcm 1 2147483647 = 2147483647
-lcm -1 0 = 0
-lcm -1 1 = 1
-lcm -1 -1 = 1
-lcm -1 2 = 2
-lcm -1 -2 = 2
-lcm -1 -2147483648 = 2147483648
-lcm -1 2147483647 = 2147483647
-lcm 2 0 = 0
-lcm 2 1 = 2
-lcm 2 -1 = 2
-lcm 2 2 = 2
-lcm 2 -2 = 2
-lcm 2 -2147483648 = 2147483648
-lcm 2 2147483647 = 4294967294
-lcm -2 0 = 0
-lcm -2 1 = 2
-lcm -2 -1 = 2
-lcm -2 2 = 2
-lcm -2 -2 = 2
-lcm -2 -2147483648 = 2147483648
-lcm -2 2147483647 = 4294967294
-lcm -2147483648 0 = 0
-lcm -2147483648 1 = 2147483648
-lcm -2147483648 -1 = 2147483648
-lcm -2147483648 2 = 2147483648
-lcm -2147483648 -2 = 2147483648
-lcm -2147483648 -2147483648 = 2147483648
-lcm -2147483648 2147483647 = 4611686016279904256
-lcm 2147483647 0 = 0
-lcm 2147483647 1 = 2147483647
-lcm 2147483647 -1 = 2147483647
-lcm 2147483647 2 = 4294967294
-lcm 2147483647 -2 = 4294967294
-lcm 2147483647 -2147483648 = 4611686016279904256
-lcm 2147483647 2147483647 = 2147483647
diff --git a/ghc/tests/numeric/should_run/arith004.hs b/ghc/tests/numeric/should_run/arith004.hs
deleted file mode 100644 (file)
index 68e6011..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
--- !!! test quot/rem/div/mod functions on Ints and Integers
---
-main
-  = putStr
-       (-- w/ Ints and Integers
-       show (unzipWith div ints_list)
-       ++ "\n"
-       ++ show (unzipWith div integers_list)
-       ++ "\n"
-       ++ show (unzipWith rem ints_list)
-       ++ "\n"
-       ++ show (unzipWith rem integers_list)
-       ++ "\n"
-       ++ show (unzipWith quot ints_list)
-       ++ "\n"
-       ++ show (unzipWith quot integers_list)
-       ++ "\n"
-       ++ show (unzipWith mod ints_list)
-       ++ "\n"
-       ++ show (unzipWith mod integers_list)
-       ++ "\n"
-       ++ show (unzipWith law1 ints_list)
-       ++ "\n"
-       ++ show (unzipWith law1 integers_list)
-       ++ "\n"
-       ++ show (unzipWith law2 ints_list)
-       ++ "\n"
-       ++ show (unzipWith law2 integers_list)
-       ++ "\n"
-       )
-  where
-    ints_list :: [(Int, Int)]
-    integers_list :: [(Integer, Integer)]
-
-    ints_list = [
-       (0, 4),
-       (0, -8),
-       (7, 3),
-       (13, 4),
-       (13, -4),
-       (-13, 4),
-       (-13, -4),
-       (12345678, 10000),
-       (12345678, -10000),
-       (-12345678, 10000),
-       (-12345678, -10000),
-       (123456,10000),
-       (1234567,20000),
-       (12345678,-10000),
-       (123456789,10000),
-       (1234567890,-10000),
-       (-12345,10000),
-       (-123456789,-10000)
-       ]
-
-    integers_list = [
-       (0, 4),
-       (0, -8),
-       (7, 3),
-       (13, 4),
-       (13, -4),
-       (-13, 4),
-       (-13, -4),
-       (12345678, 10000),
-       (12345678, -10000),
-       (-12345678, 10000),
-       (-12345678, -10000),
-       (123456,10000),
-       (1234567,20000),
-       (12345678,-10000),
-       (123456789,10000),
-       (1234567890,-10000),
-       (-12345,10000),
-       (-123456789,-10000),
-       (12345678900,500000000),
-       (1234000000000000000000005678900,5001111111111111000000)
-       ]
-
-unzipWith :: (a -> b -> c) -> [(a,b)] -> [c]
-unzipWith f []        = []
-unzipWith f ((x,y):zs) = f x y : unzipWith f zs
-
-law1, law2 :: Integral a => a -> a -> Bool
-
-law1 x y = (x `quot` y)*y + (x `rem` y) == x
-law2 x y = (x `div`  y)*y + (x `mod` y) == x
diff --git a/ghc/tests/numeric/should_run/arith004.stdout b/ghc/tests/numeric/should_run/arith004.stdout
deleted file mode 100644 (file)
index 0ce885e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[0,0,2,3,-4,-4,3,1234,-1235,-1235,1234,12,61,-1235,12345,-123457,-2,12345]
-[0,0,2,3,-4,-4,3,1234,-1235,-1235,1234,12,61,-1235,12345,-123457,-2,12345,24,246745167]
-[0,0,1,1,1,-1,-1,5678,5678,-5678,-5678,3456,14567,5678,6789,7890,-2345,-6789]
-[0,0,1,1,1,-1,-1,5678,5678,-5678,-5678,3456,14567,5678,6789,7890,-2345,-6789,345678900,3703333360749468678900]
-[0,0,2,3,-3,-3,3,1234,-1234,-1234,1234,12,61,-1234,12345,-123456,-1,12345]
-[0,0,2,3,-3,-3,3,1234,-1234,-1234,1234,12,61,-1234,12345,-123456,-1,12345,24,246745167]
-[0,0,1,1,-3,3,-1,5678,-4322,4322,-5678,3456,14567,-4322,6789,-2110,7655,-6789]
-[0,0,1,1,-3,3,-1,5678,-4322,4322,-5678,3456,14567,-4322,6789,-2110,7655,-6789,345678900,3703333360749468678900]
-[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
-[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
-[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
-[True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
diff --git a/ghc/tests/numeric/should_run/arith005.hs b/ghc/tests/numeric/should_run/arith005.hs
deleted file mode 100644 (file)
index 92c8630..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
--- !!! test RealFrac ops (ceiling/floor/etc.) on Floats/Doubles
---
-main = 
- putStr $
-  unlines
-    [  -- just for fun, we show the floats to
-       -- exercise the code responsible.
-      show (float_list :: [Float])
-    , show (double_list :: [Double])
-       -- {Float,Double} inputs, {Int,Integer} outputs
-    , show ((map ceiling float_list) :: [Int])
-    , show ((map ceiling float_list) :: [Integer])
-    , show ((map ceiling double_list) :: [Int])
-    , show ((map ceiling double_list) :: [Integer])
-    , show ((map floor float_list) :: [Int])
-    , show ((map floor float_list) :: [Integer])
-    , show ((map floor double_list) :: [Int])
-    , show ((map floor double_list) :: [Integer])
-    , show ((map truncate float_list) :: [Int])
-    , show ((map truncate float_list) :: [Integer])
-    , show ((map truncate double_list) :: [Int])
-    , show ((map truncate double_list) :: [Integer])
-{-
-    , show ((map round float_list) :: [Int])
--}
-    , show ((map round float_list) :: [Integer])
-    , show ((map round double_list) :: [Int])
-    , show ((map round double_list) :: [Integer])
-    , show ((map properFraction float_list) :: [(Int,Float)])
-    , show ((map properFraction float_list) :: [(Integer,Float)])
-    , show $ head ((map properFraction double_list) :: [(Int,Double)])
-{-
-    , show ((map properFraction double_list) :: [(Integer,Double)])
--}
-    ]
-  where
-    float_list :: [Float]
-    float_list = [
-       0.0, -0.0, 1.1, 2.8, 3.5, 4.5, -1.0000000001, -2.9999995,
-       -3.50000000001, -4.49999999999, 1000012.0, 123.456, 100.25,
-       102.5, 0.0012, -0.00000012, 1.7e4, -1.7e-4, 0.15e-6, pi,
-       1.18088e+11,    1.2111e+14 
-      ]
-
-    double_list :: [Double]
-    double_list = [
-       0.0, -0.0, 1.1, 2.8, 3.5, 4.5, -1.0000000001, -2.9999995,
-       -3.50000000001, -4.49999999999, 1000012.0, 123.456, 100.25,
-       102.5, 0.0012, -0.00000012, 1.7e4, -1.7e-4, 0.15e-6, pi,
-       1.18088e+11,    1.2111e+14 
-      ]
diff --git a/ghc/tests/numeric/should_run/arith005.stdout b/ghc/tests/numeric/should_run/arith005.stdout
deleted file mode 100644 (file)
index 27f5192..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-[0.0,0.0,1.1,2.8,3.5,4.5,-1.0,-2.9999995,-3.5,-4.5,1000012.0,123.456,100.25,102.5,1.2e-3,-1.2e-7,17000.0,-1.7e-4,1.5e-7,3.1415927,1.18088e11,1.2111e14]
-[0.0,0.0,1.1,2.8,3.5,4.5,-1.0000000001,-2.9999995,-3.50000000001,-4.49999999999,1000012.0,123.456,100.25,102.5,1.2e-3,-1.2e-7,17000.0,-1.7e-4,1.5e-7,3.141592653589793,1.18088e11,1.2111e14]
-[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,2123882496,511705088]
-[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118087999488,121109999517696]
-[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,2123883008,512187392]
-[0,0,2,3,4,5,-1,-2,-3,-4,1000012,124,101,103,1,0,17000,0,1,4,118088000000,121110000000000]
-[0,0,1,2,3,4,-1,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,2123882496,511705088]
-[0,0,1,2,3,4,-1,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118087999488,121109999517696]
-[0,0,1,2,3,4,-2,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,2123883008,512187392]
-[0,0,1,2,3,4,-2,-3,-4,-5,1000012,123,100,102,0,-1,17000,-1,0,3,118088000000,121110000000000]
-[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,2123882496,511705088]
-[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118087999488,121109999517696]
-[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,2123883008,512187392]
-[0,0,1,2,3,4,-1,-2,-3,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
-[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,118087999488,121109999517696]
-[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,2123883008,512187392]
-[0,0,1,3,4,4,-1,-3,-4,-4,1000012,123,100,102,0,0,17000,0,0,3,118088000000,121110000000000]
-[(0,0.0),(0,0.0),(1,0.100000024),(2,0.79999995),(3,0.5),(4,0.5),(-1,0.0),(-2,-0.9999995),(-3,-0.5),(-4,-0.5),(1000012,0.0),(123,0.45600128),(100,0.25),(102,0.5),(0,1.2e-3),(0,-1.2e-7),(17000,0.0),(0,-1.7e-4),(0,1.5e-7),(3,0.14159274),(2123882496,0.0),(511705088,0.0)]
-[(0,0.0),(0,0.0),(1,0.100000024),(2,0.79999995),(3,0.5),(4,0.5),(-1,0.0),(-2,-0.9999995),(-3,-0.5),(-4,-0.5),(1000012,0.0),(123,0.45600128),(100,0.25),(102,0.5),(0,1.2e-3),(0,-1.2e-7),(17000,0.0),(0,-1.7e-4),(0,1.5e-7),(3,0.14159274),(118087999488,0.0),(121109999517696,0.0)]
-(0,0.0)
diff --git a/ghc/tests/numeric/should_run/arith006.hs b/ghc/tests/numeric/should_run/arith006.hs
deleted file mode 100644 (file)
index b837692..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! printing Floats; was a bug in hbc (reported by andy)
---
-
-main = print ((fromIntegral (42 :: Int)) :: Float)
diff --git a/ghc/tests/numeric/should_run/arith006.stdout b/ghc/tests/numeric/should_run/arith006.stdout
deleted file mode 100644 (file)
index 713c222..0000000
+++ /dev/null
@@ -1 +0,0 @@
-42.0
diff --git a/ghc/tests/numeric/should_run/arith007.hs b/ghc/tests/numeric/should_run/arith007.hs
deleted file mode 100644 (file)
index 3d42d1f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! test simple Integer things
---
-
-f x y z = x y z
-
-main = do
-  putStr (shows integer_list "\n")
- where
-    int_list :: [Int]
-    integer_list :: [Integer]
-
-    int_list = (map fromInteger integer_list)
-
-    integer_list = (map (* 2)
-       [1,3,5,7,9,
-        11111111111111111111111111111,
-        2222222222222222222222222222222222222,
-        3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333,
-        -11111111111111111111111111111,
-        -2222222222222222222222222222222222222,
-        -3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
-       ])
-
diff --git a/ghc/tests/numeric/should_run/arith007.stdout b/ghc/tests/numeric/should_run/arith007.stdout
deleted file mode 100644 (file)
index 1d7c97d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[2,6,10,14,18,22222222222222222222222222222,4444444444444444444444444444444444444,6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666,-22222222222222222222222222222,-4444444444444444444444444444444444444,-6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666]
diff --git a/ghc/tests/numeric/should_run/arith008.hs b/ghc/tests/numeric/should_run/arith008.hs
deleted file mode 100644 (file)
index 15a3903..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! a random test from Nick North
--- (got this in mid-1993; don't remember why.  WDP 95/02)
---
-
-random_numbers :: (Int, Int, Int) -> [Float]
-random_numbers (s1,s2,s3)
-    =  map (snd . properFraction . combine) (iterate f (s1,s2,s3))
-       where
-       combine :: (Int,Int,Int) -> Float
-       combine (a,b,c)  =
-            fromIntegral(a)/30269 + fromIntegral(b)/30307
-            + fromIntegral(c)/30323
-       f (a,b,c)  =
-           ((171*a) `mod` 30269, (172*b) `mod` 30307, (170*c) `mod` 30323)
-
--- partain: changed to cvt spaces into newlines (easier to see bugs)
--- sof: define approp. version of showList to do this.
-main = putStr (showL (showsPrec 0) (take 1000 (random_numbers (9807, 65, 32975))) "\n")
-
-showL showx []     = showString "[]"
-showL showx (x:xs) = showChar '[' . showx x . showl xs
-  where
-    showl []     = showChar ']'
-    showl (x:xs) = showString ",\n" . showx x . showl xs
diff --git a/ghc/tests/numeric/should_run/arith008.stdout b/ghc/tests/numeric/should_run/arith008.stdout
deleted file mode 100644 (file)
index 6a6007c..0000000
+++ /dev/null
@@ -1,1000 +0,0 @@
-[0.41359794,
-0.6399324,
-0.92941284,
-0.8322308,
-0.6558542,
-0.27844667,
-0.48358274,
-0.21114683,
-0.7582127,
-0.12166107,
-0.981663,
-0.79931486,
-0.8722358,
-0.45195377,
-3.4911394e-2,
-0.7246227,
-0.24528801,
-0.6998143,
-0.9876834,
-0.42533565,
-0.59525573,
-0.38930762,
-0.119990826,
-0.9083969,
-0.26239872,
-2.744031e-2,
-0.7286656,
-0.92476606,
-0.8718927,
-0.1687454,
-0.13774204,
-0.28789735,
-0.9548291,
-0.41255307,
-0.8564267,
-8.4107876e-2,
-0.48756683,
-0.11202359,
-0.51587105,
-0.5511048,
-0.93413484,
-0.6428783,
-0.87145376,
-0.67891765,
-0.23348927,
-0.3780495,
-0.87735546,
-0.85223985,
-0.19405353,
-0.3535874,
-0.72997916,
-0.23668802,
-0.61755717,
-0.9253086,
-0.7007494,
-0.98090434,
-0.23180747,
-0.8951179,
-0.18330741,
-0.30362415,
-0.57720375,
-0.8465313,
-0.31598616,
-0.20875359,
-0.18506193,
-0.56406593,
-0.87965286,
-2.7450562e-2,
-0.14676762,
-0.74345183,
-0.92644644,
-1.5535355e-3,
-0.8126061,
-0.6636951,
-0.15379143,
-0.16009843,
-0.29956555,
-0.71643496,
-0.65267706,
-1.2942791e-2,
-0.15469885,
-0.70281076,
-0.49925303,
-0.9001132,
-0.55416614,
-0.2577113,
-0.28545964,
-0.26130748,
-0.91633797,
-0.2018559,
-0.88357884,
-0.6068319,
-0.41902173,
-0.80342615,
-0.5469477,
-0.5351703,
-0.36879182,
-0.85823405,
-0.18722737,
-0.20447707,
-0.5052972,
-0.41609886,
-0.13425875,
-0.8554218,
-0.37205708,
-9.450865e-2,
-0.97575045,
-0.8755969,
-0.7150241,
-0.6752708,
-0.6860019,
-0.21408677,
-0.30702153,
-0.3567884,
-0.6356261,
-0.84917825,
-0.13312805,
-0.1351955,
-0.2726475,
-0.77746105,
-0.39467335,
-0.42776418,
-0.15337801,
-0.1592257,
-0.28089368,
-0.6215863,
-0.15158892,
-0.62589145,
-0.9849372,
-0.47261155,
-0.13879633,
-0.53436935,
-0.8684354,
-0.49009013,
-0.8487663,
-0.415954,
-0.49733603,
-0.81666195,
-0.50797117,
-0.19971132,
-0.5820248,
-0.9983189,
-0.27208292,
-0.67335844,
-0.27931952,
-0.42391694,
-0.9081789,
-7.466531e-2,
-5.3013563e-2,
-0.2840109,
-0.4830655,
-0.1756686,
-0.62167895,
-0.89717495,
-0.19109178,
-0.78958845,
-1.543045e-2,
-5.0975323e-2,
-0.21466875,
-0.4129461,
-0.289948,
-0.7271167,
-0.99582183,
-6.0527444e-2,
-0.75902903,
-0.6639817,
-0.8994356,
-2.9090405e-2,
-0.3309772,
-0.8311074,
-0.27760005,
-1.6489744e-2,
-4.7184825e-2,
-6.268692e-2,
-0.37376666,
-0.9638035,
-0.80776775,
-0.690861,
-0.6061044,
-0.6701783,
-0.8412647,
-0.5805452,
-0.41863844,
-0.5514518,
-0.5801554,
-9.124398e-2,
-0.737221,
-0.24314034,
-0.74114823,
-0.32066846,
-1.3154507e-2,
-0.50678635,
-0.5137007,
-0.551865,
-0.69038117,
-0.61931777,
-0.70399594,
-0.9727828,
-0.20246375,
-0.85520244,
-5.0735712e-2,
-0.9930371,
-0.30815053,
-0.22076559,
-0.32370973,
-0.17521977,
-0.43994308,
-0.9906125,
-0.5326147,
-0.66132426,
-7.4525714e-2,
-1.51029825e-2,
-3.151095e-2,
-0.8795854,
-0.1700325,
-0.2575338,
-0.75477123,
-0.8775394,
-0.53388363,
-0.7104862,
-0.13311696,
-0.73177624,
-0.19375706,
-0.88381815,
-0.75322676,
-0.6076188,
-0.48591495,
-0.53411245,
-0.7115935,
-0.48955488,
-0.59558845,
-0.9807129,
-0.8284396,
-0.95038444,
-0.59036994,
-0.52881944,
-0.9948325,
-0.49523282,
-0.7008028,
-0.78729224,
-0.9902679,
-0.5339551,
-4.0822983e-2,
-0.37561977,
-0.5063989,
-0.28711128,
-0.32709387,
-0.8450576,
-0.64256006,
-0.906507,
-4.6909094e-2,
-0.637144,
-0.16923797,
-0.7377299,
-0.30585575,
-0.3570485,
-0.98593795,
-0.5611129,
-7.524538e-2,
-0.8517368,
-0.74607563,
-0.4913547,
-0.83715105,
-0.59740007,
-0.9108657,
-0.14394355,
-8.5148096e-2,
-0.582165,
-2.120018e-3,
-0.705053,
-0.97463274,
-0.58965266,
-0.6484089,
-0.79429245,
-0.7779026,
-0.3388164,
-0.35976696,
-9.1204405e-2,
-0.6134187,
-0.8495743,
-0.9256909,
-0.8651266,
-0.19850588,
-0.7568064,
-0.44688892,
-0.89375556,
-0.28960586,
-0.5118885,
-0.39481246,
-0.23119497,
-0.99098516,
-0.6882521,
-2.3570538e-2,
-0.46816385,
-0.43301296,
-5.7090998e-2,
-0.7131885,
-0.49999893,
-0.8016077,
-0.6981158,
-0.7528713,
-0.50114954,
-0.86821973,
-0.88443303,
-0.4772892,
-0.80758643,
-0.38138628,
-8.940506e-2,
-0.6924608,
-0.52786016,
-0.802331,
-0.98923236,
-0.17653704,
-0.68997073,
-0.1820991,
-0.64604473,
-0.38469362,
-0.8968754,
-0.15813422,
-0.868925,
-4.019952e-2,
-0.25560212,
-0.3128089,
-0.41993904,
-0.948833,
-0.826739,
-0.10151219,
-0.787004,
-0.9594268,
-0.14901423,
-0.1414566,
-0.24321175,
-9.9901915e-2,
-0.8921989,
-0.32741654,
-0.6458428,
-0.16487455,
-0.12096548,
-0.48751688,
-5.245471e-2,
-0.71360433,
-0.94619334,
-0.2514913,
-0.31235778,
-0.3618456,
-0.57202005,
-8.347988e-3,
-0.1945982,
-0.6956324,
-0.9895966,
-0.87327766,
-0.26017582,
-0.47406793,
-0.9971419,
-0.5826107,
-0.17589438,
-0.89086056,
-0.18030643,
-0.4091003,
-0.39576983,
-0.38442576,
-0.13684058,
-8.986688e-2,
-0.17313194,
-0.7679503,
-0.36211073,
-0.82255757,
-0.9100534,
-0.6802888,
-0.11309266,
-0.47404623,
-0.8113966,
-0.42064667,
-0.42901254,
-0.14277196,
-0.1055603,
-0.57029915,
-0.5498085,
-0.71666944,
-0.13909936,
-6.697273e-2,
-0.30388212,
-0.84999645,
-0.61905026,
-0.80875367,
-0.7628211,
-0.7617794,
-0.24128532,
-0.8171586,
-0.7165446,
-0.29046047,
-5.484104e-3,
-0.29707146,
-0.45159855,
-0.8470775,
-0.9105661,
-0.6157371,
-0.24743724,
-0.26728547,
-0.3399787,
-0.30999124,
-0.27707434,
-0.26195288,
-0.57788026,
-0.98340875,
-0.7114443,
-0.10142648,
-0.8840177,
-0.3299948,
-0.27686334,
-0.66194046,
-0.5837232,
-0.34851027,
-0.61612344,
-0.60064816,
-2.1667004e-2,
-0.51634264,
-0.5840348,
-0.54137635,
-0.93811476,
-0.88630515,
-0.35464,
-0.659227,
-0.74290437,
-0.6366904,
-0.12916958,
-0.19237244,
-4.462242e-3,
-8.1073284e-2,
-0.847996,
-0.8305576,
-9.401786e-2,
-0.17688239,
-0.36067092,
-0.56400156,
-0.4449073,
-0.80550474,
-0.94339013,
-0.2624426,
-0.43337846,
-0.79860497,
-0.9083978,
-7.7695847e-3,
-0.28432655,
-0.8844242,
-0.43196678,
-0.5022042,
-0.71939504,
-0.87787163,
-2.2063255e-2,
-0.5932679,
-0.88764143,
-0.6470535,
-2.7034998e-2,
-0.72032475,
-0.19539523,
-0.77757996,
-0.37001276,
-0.84153897,
-0.6239723,
-0.3756181,
-6.846321e-2,
-0.8378935,
-0.59974074,
-0.68847823,
-0.7352172,
-1.07290745e-2,
-0.5101199,
-0.85353947,
-0.14964247,
-0.5860499,
-0.17709386,
-0.89342284,
-0.17894697,
-0.5400078,
-0.4210199,
-0.23370409,
-0.5818304,
-0.68282104,
-5.1081896e-2,
-0.9042077,
-0.3783505,
-0.44932246,
-0.6200993,
-0.18954074,
-0.4474795,
-0.31125343,
-0.8426063,
-6.332576e-2,
-0.8104075,
-0.8648635,
-0.44148827,
-0.84095,
-0.79439354,
-0.5551748,
-0.687835,
-0.118896365,
-0.4412912,
-0.57976437,
-0.6679896,
-0.30952072,
-0.35373104,
-0.18037248,
-9.540319e-3,
-0.48488736,
-0.1673789,
-0.73954326,
-0.56652427,
-0.49777925,
-0.5246444,
-0.6702163,
-0.87621975,
-0.359416,
-0.832193,
-0.18441534,
-0.20517778,
-0.32071996,
-0.65496826,
-3.7642956e-2,
-0.5331861,
-0.29038882,
-0.35165787,
-0.655563,
-0.7891048,
-0.14961207,
-1.6696453e-3,
-0.47526348,
-0.82897127,
-4.0933132e-2,
-0.24862742,
-0.44936025,
-0.2355707,
-0.13713741,
-0.7814115,
-0.80927956,
-0.583858,
-0.7193563,
-0.19353557,
-0.36663485,
-0.107114315,
-0.72664094,
-0.121150136,
-0.6676494,
-0.3600223,
-0.90352046,
-0.9873058,
-0.8213589,
-0.4037695,
-0.42661357,
-0.8075288,
-0.49739814,
-0.708357,
-0.89534307,
-2.7906299e-2,
-0.5197699,
-0.5873811,
-0.37502038,
-0.25809133,
-0.41655612,
-0.35278225,
-0.16273963,
-0.66940236,
-0.97849786,
-0.28304625,
-0.6673634,
-0.19332111,
-0.7478994,
-0.59783196,
-7.6501966e-2,
-0.32878637,
-0.5024115,
-0.7220932,
-0.8336895,
-0.56268775,
-0.89503884,
-0.9931685,
-0.3670969,
-0.6999072,
-0.77585983,
-0.31907177,
-0.76584256,
-4.325044e-2,
-0.29987824,
-0.89478886,
-0.21245062,
-0.2749796,
-0.27403784,
-0.12384033,
-8.77223e-2,
-0.6968431,
-0.41428828,
-0.86889815,
-0.93862987,
-0.28137636,
-0.4471743,
-0.2681458,
-0.16012955,
-0.62948954,
-0.7444658,
-0.57012916,
-0.10132849,
-0.8278511,
-0.19847322,
-0.50814533,
-0.62132853,
-0.18225956,
-0.16162908,
-0.43761563,
-0.10031223,
-0.75076735,
-0.75551176,
-0.5453377,
-0.5066473,
-0.42767167,
-0.5992305,
-0.9446988,
-0.41565955,
-0.9331987,
-0.9897334,
-0.89694524,
-0.6788764,
-0.85561335,
-0.6666684,
-0.80166984,
-0.40720224,
-0.86944854,
-0.92634535,
-0.27878547,
-0.8053527,
-0.6522385,
-0.5152416,
-0.17939234,
-0.24954629,
-0.6818764,
-0.7267182,
-0.36313987,
-9.25622e-2,
-0.84685767,
-0.4344505,
-0.692098,
-0.34008884,
-5.9524536e-2,
-3.827691e-2,
-0.9333053,
-0.2090958,
-0.5924697,
-0.61903036,
-0.30183077,
-0.4231342,
-0.49257803,
-0.83910036,
-0.43436274,
-0.9565089,
-0.2666788,
-4.047084e-2,
-0.41260076,
-0.84976804,
-0.9851905,
-0.62259483,
-0.8959986,
-0.31737566,
-0.3398435,
-0.27567053,
-0.9734041,
-0.77031887,
-0.8473544,
-0.3174919,
-0.58769834,
-0.34807217,
-0.5406821,
-0.8544055,
-0.62600684,
-0.33839083,
-0.9849396,
-1.2942314e-2,
-0.1475277,
-0.4787073,
-0.54596233,
-0.1752423,
-0.77059823,
-9.041047e-2,
-0.2985853,
-0.23247159,
-0.23486897,
-0.23700523,
-0.47728157,
-0.49480152,
-0.72553325,
-0.19682777,
-0.88427216,
-6.551409e-2,
-0.6175699,
-0.8277023,
-0.2039113,
-0.9962605,
-0.9707756,
-9.154308e-2,
-0.123990774,
-0.41500008,
-0.45899975,
-0.7904736,
-0.64120626,
-0.29223895,
-0.48712683,
-0.16071367,
-0.7799654,
-0.7871841,
-0.34515953,
-0.24462819,
-0.7682588,
-0.45865273,
-0.97019315,
-0.52276766,
-1.2032986e-3,
-0.2552061,
-0.35652947,
-1.6108036e-2,
-0.22363806,
-6.0125113e-2,
-0.6667728,
-0.13875532,
-0.48999977,
-0.21847558,
-0.12436485,
-0.6117995,
-0.96883655,
-0.7170677,
-0.7637136,
-0.50507927,
-0.88803625,
-0.6205857,
-0.22137904,
-0.97533226,
-0.9804591,
-0.97967625,
-7.506108e-2,
-0.27170992,
-0.8107689,
-0.76826,
-0.8306192,
-0.77724457,
-0.80831075,
-0.76732874,
-8.157933e-2,
-0.3223102,
-0.8257649,
-0.973259,
-7.5988054e-2,
-0.5415702,
-0.25776172,
-0.76154125,
-0.91835296,
-0.837816,
-0.68698716,
-0.99165297,
-0.36068523,
-0.53661215,
-0.94795275,
-0.24835014,
-0.53556097,
-0.7917472,
-0.17282593,
-0.44980502,
-0.8159183,
-0.2109356,
-8.1673145e-2,
-0.9069164,
-0.8804593,
-0.38818514,
-0.42148066,
-0.84182596,
-0.85033655,
-0.11290777,
-0.9591603,
-0.9008815,
-0.12636256,
-0.62351793,
-0.5625932,
-0.40783405,
-0.9398462,
-0.9048507,
-0.70350707,
-0.5732843,
-0.9578413,
-0.471671,
-0.80402017,
-0.23877287,
-2.8808951e-2,
-0.79105496,
-0.39669204,
-0.5252528,
-5.068612e-2,
-0.17306566,
-0.33026814,
-0.8069451,
-0.774801,
-0.29274237,
-0.9410742,
-0.24736834,
-0.45892864,
-0.32286835,
-9.423089e-2,
-0.23926187,
-0.938661,
-0.11605501,
-0.7519337,
-0.44994712,
-0.8859633,
-0.79223514,
-0.7983874,
-7.165241e-2,
-0.9462296,
-0.8046231,
-0.9736757,
-0.9235935,
-0.85922825,
-0.14425218,
-0.96055603,
-0.4746909,
-0.3689847,
-0.3266207,
-0.6575446,
-0.90298265,
-0.612165,
-0.94542164,
-4.7265768e-2,
-0.9178722,
-0.7290449,
-0.7926531,
-0.8426634,
-0.79898036,
-1.8381119e-2,
-5.914831e-2,
-0.5302744,
-0.3689797,
-0.4085008,
-8.593702e-2,
-0.8765965,
-2.9750824e-2,
-0.23264515,
-0.15577197,
-0.21319818,
-0.21833336,
-0.3431382,
-0.6172347,
-0.5659256,
-0.9447398,
-0.7262399,
-0.7598543,
-0.56384385,
-0.845103,
-0.4162705,
-0.13864326,
-0.7863791,
-0.13542509,
-0.6184137,
-0.2607739,
-0.15591526,
-0.77601504,
-0.76669025,
-0.56118643,
-1.807928e-2,
-0.31010872,
-0.8704659,
-0.98514426,
-0.40933478,
-0.1785686,
-0.48007095,
-8.039451e-2,
-3.796923e-2,
-0.8610754,
-0.9595243,
-0.9287634,
-7.802105e-2,
-0.8274702,
-0.6773733,
-0.97041106,
-0.2371938,
-0.7191273,
-0.36731863,
-0.6625139,
-0.3092258,
-0.47899795,
-2.6395798e-2,
-4.1056633e-2,
-0.7962029,
-0.5768552,
-0.5356126,
-1.3688564e-2,
-0.41969243,
-0.8178707,
-0.5881722,
-0.4442004,
-0.42637897,
-0.76563597,
-8.336306e-3,
-3.3709526e-2,
-0.53669834,
-0.53756106,
-0.31038988,
-0.41079557,
-0.39238024,
-0.24557912,
-9.8520994e-2,
-0.6807518,
-0.12773252,
-0.67073166,
-0.34699106,
-0.9979162,
-0.42680383,
-0.9087982,
-0.6900128,
-0.94652975,
-0.17221642,
-0.33502197,
-0.30609477,
-0.70375323,
-0.41938114,
-0.8668362,
-0.77143216,
-8.8229895e-2,
-0.18202114,
-0.21520734,
-0.10074675,
-0.38907886,
-5.9812307e-2,
-0.62150526,
-0.99084735,
-0.31110406,
-0.7914846,
-0.8661854,
-0.518523,
-0.6151075,
-0.9395801,
-0.4002422,
-0.35337317,
-0.40262416,
-0.7039368,
-0.935411,
-1.2230396e-2,
-0.6683055,
-0.11150932,
-5.5537343e-2,
-8.355498e-2,
-0.6007279,
-0.4403205,
-0.5811975,
-0.86318696,
-5.6501627e-2,
-0.23753202,
-0.9949539,
-0.64893156,
-0.90060663,
-0.14257383,
-0.8300431,
-0.37252688,
-0.18130136,
-0.20323014,
-0.4809363,
-0.8961161,
-0.23287201,
-0.43141174,
-0.3489914,
-0.51495457,
-0.8010473,
-0.23635447,
-0.54324985,
-0.69954085,
-0.48034823,
-0.68947554,
-0.77823305,
-0.7533914,
-0.24090028,
-0.8162971,
-0.46965337,
-0.59434736,
-0.1630373,
-0.6848186,
-1.57516e-2,
-0.8775939,
-0.99723464,
-0.4292655,
-0.47325504,
-0.8548535,
-0.4219792,
-0.7294735,
-0.77217937,
-0.8508531,
-0.117975116,
-0.36563516,
-0.37111998,
-0.3301561,
-6.940341e-2,
-0.5864358,
-0.113250256,
-0.67253065,
-0.8080728,
-0.44792616,
-0.34973896,
-0.25323582]
diff --git a/ghc/tests/numeric/should_run/arith009.hs b/ghc/tests/numeric/should_run/arith009.hs
deleted file mode 100644 (file)
index 43fe1b2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- a prefix minus precedence test
-
-f :: Int -> Int -> Int -> Int
-f x y z = - x * y ^ z
-
-main = putStr (shows (f 5 2 3) "\n")
diff --git a/ghc/tests/numeric/should_run/arith009.stdout b/ghc/tests/numeric/should_run/arith009.stdout
deleted file mode 100644 (file)
index 949a11b..0000000
+++ /dev/null
@@ -1 +0,0 @@
--40
diff --git a/ghc/tests/numeric/should_run/arith010.hs b/ghc/tests/numeric/should_run/arith010.hs
deleted file mode 100644 (file)
index 846f76e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---     Tests enumerations
-
-main = do
-       print [1..10]
-       print [10..1]           -- []
-       print [1,3..10]
-       print [10,8..1]
-       print ['a'..'f']
-       print ['f'..'a']        -- []
-       print ['a','c'..'m']
-       print ['m','l'..'a']
diff --git a/ghc/tests/numeric/should_run/arith010.stdout b/ghc/tests/numeric/should_run/arith010.stdout
deleted file mode 100644 (file)
index e6a2b37..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-[1,2,3,4,5,6,7,8,9,10]
-[]
-[1,3,5,7,9]
-[10,8,6,4,2]
-"abcdef"
-""
-"acegikm"
-"mlkjihgfedcba"
diff --git a/ghc/tests/numeric/should_run/arith011.hs b/ghc/tests/numeric/should_run/arith011.hs
deleted file mode 100644 (file)
index 1dbd52d..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
--- !!! Testing Int and Word
-module Main(main) where
-import Int
-import Word
-import Bits
-import Ix -- added SOF
-
-main :: IO ()
-main = test
-
-test :: IO ()
-test = do
-   testIntlike "Int"    (0::Int)
-   testIntlike "Int8"   (0::Int8)
-   testIntlike "Int16"  (0::Int16)
-   testIntlike "Int32"  (0::Int32)
-   testIntlike "Int64"  (0::Int64)
-   testIntlike "Word8"  (0::Word8)
-   testIntlike "Word16" (0::Word16)
-   testIntlike "Word32" (0::Word32)
-   testIntlike "Word64" (0::Word64)
-   testInteger
-
-testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO ()
-testIntlike name zero = do
-  putStrLn $ "--------------------------------"
-  putStrLn $ "--Testing " ++ name
-  putStrLn $ "--------------------------------"
-  testBounded  zero
-  testEnum     zero
-  testReadShow zero
-  testEq       zero
-  testOrd      zero
-  testNum      zero
-  testReal     zero
-  testIntegral zero
-  testConversions zero
-  testBits     zero True
-
-testInteger  = do
-  let zero = 0 :: Integer
-  putStrLn $ "--------------------------------"
-  putStrLn $ "--Testing Integer"
-  putStrLn $ "--------------------------------"
-  testEnum     zero
-  testReadShow zero
-  testEq       zero
-  testOrd      zero
-  testNum      zero
-  testReal     zero
-  testIntegral zero
-  testBits     zero False
-
--- In all these tests, zero is a dummy element used to get
--- the overloading to work
-
-testBounded zero = do
-  putStrLn "testBounded"
-  print $ (minBound-1, minBound, minBound+1) `asTypeOf` (zero,zero,zero)
-  print $ (maxBound-1, maxBound, maxBound+1) `asTypeOf` (zero,zero,zero)
-
-testEnum zero = do
-  putStrLn "testEnum"
-  print $ take 10 [zero .. ]           -- enumFrom
-  print $ take 10 [zero, toEnum 2 .. ] -- enumFromThen
-  print [zero .. toEnum 20]            -- enumFromTo
-  print [zero, toEnum 2 .. toEnum 20]  -- enumFromThenTo
-
-testConversions zero = do
-  putStrLn "testConversions"
-  putStr "Integer : " >> print (map fromIntegral numbers :: [Integer])
-  putStr "Int     : " >> print (map fromIntegral numbers :: [Int])
-  putStr "Int8    : " >> print (map fromIntegral numbers :: [Int8])
-  putStr "Int16   : " >> print (map fromIntegral numbers :: [Int16])
-  putStr "Int32   : " >> print (map fromIntegral numbers :: [Int32])
-  putStr "Int64   : " >> print (map fromIntegral numbers :: [Int64])
-  putStr "Word8   : " >> print (map fromIntegral numbers :: [Word8])
-  putStr "Word16  : " >> print (map fromIntegral numbers :: [Word16])
-  putStr "Word32  : " >> print (map fromIntegral numbers :: [Word32])
-  putStr "Word64  : " >> print (map fromIntegral numbers :: [Word64])
-  where numbers = [minBound, 0, maxBound] `asTypeOf` [zero]
-
-samples :: (Num a) => a -> ([a], [a])
-samples zero = (map fromInteger ([-3 .. -1]++[0 .. 3]),
-                map fromInteger ([-3 .. -1]++[1 .. 3]))
-  
-table1 :: (Show a, Show b) => String -> (a -> b) -> [a] -> IO ()
-table1 nm f xs = do
-  sequence [ f' x | x <- xs ]
-  putStrLn "#"
- where
-  f' x = putStrLn (nm ++ " " ++ show x ++ " = " ++ show (f x))
-
-table2 :: (Show a, Show b, Show c) => String -> (a -> b -> c) -> [a] -> [b] -> IO ()
-table2 nm op xs ys = do
-  sequence [ sequence [ op' x y | y <- ys ] >> putStrLn " "
-           | x <- xs 
-           ]
-  putStrLn "#"
- where
-  op' x y = putStrLn (show x ++ " " ++ nm ++ " " ++ show y 
-                      ++ " = " ++ show (op x y))
-
-testReadShow zero = do
-  putStrLn "testReadShow"
-  print xs
-  print (map read_show xs)
- where
-  (xs,zs) = samples zero
-  read_show x = (read (show x) `asTypeOf` zero)
-
-testEq zero = do
-  putStrLn "testEq"
-  table2 "==" (==) xs xs
-  table2 "/=" (/=) xs xs
- where
-  (xs,ys) = samples zero
-
-testOrd zero = do
-  putStrLn "testOrd"
-  table2 "<="              (<=)    xs xs
-  table2 "< "              (<)     xs xs
-  table2 "> "              (>)     xs xs
-  table2 ">="              (>=)    xs xs
-  table2 "`compare`" compare xs xs
- where
-  (xs,ys) = samples zero
-
-testNum zero = do
-  putStrLn "testNum"
-  table2 "+"     (+)    xs xs
-  table2 "-"     (-)    xs xs
-  table2 "*"     (*)    xs xs
-  table1 "negate" negate xs
- where
-  (xs,ys) = samples zero
-
-testReal zero = do
-  putStrLn "testReal"
-  table1 "toRational" toRational xs
- where
-  (xs,ys) = samples zero
-
-testIntegral zero = do
-  putStrLn "testIntegral"
-  table2 "`divMod` " divMod  xs ys
-  table2 "`div`    " div     xs ys
-  table2 "`mod`    " mod     xs ys
-  table2 "`quotRem`" quotRem xs ys
-  table2 "`quot`   " quot    xs ys
-  table2 "`rem`    " rem     xs ys
- where
-  (xs,ys) = samples zero
-
-testBits zero do_bitsize = do
-  putStrLn "testBits"
-  table2 ".&.  "            (.&.)         xs ys
-  table2 ".|.  "            (.|.)         xs ys
-  table2 "`xor`"            xor           xs ys
-  table1 "complement"       complement    xs
-  table2 "`shiftL`"         shiftL        xs ([0..3] ++ [32])
-  table2 "`shiftR`"         shiftR        xs ([0..3] ++ [32]) 
-  table2 "`rotate`"         rotate        xs ([-3..3])
-  table1 "bit"              (\ x -> (bit x) `asTypeOf` zero)   [(0::Int)..3]
-  table2 "`setBit`"         setBit        xs ([0..3] ++ [32])
-  table2 "`clearBit`"       clearBit      xs ([0..3] ++ [32])
-  table2 "`complementBit`"  complementBit xs ([0..3] ++ [32])
-  table2 "`testBit`"        testBit       xs ([0..3] ++ [32])
-  if do_bitsize then table1 "bitSize" bitSize xs else return ()
-  table1 "isSigned"         isSigned      xs
- where
-  (xs,ys) = samples zero
diff --git a/ghc/tests/numeric/should_run/arith011.stdout b/ghc/tests/numeric/should_run/arith011.stdout
deleted file mode 100644 (file)
index 972103c..0000000
+++ /dev/null
@@ -1,14088 +0,0 @@
---------------------------------
---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
-#
-testConversions
-Integer : [-2147483648,0,2147483647]
-Int     : [-2147483648,0,2147483647]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [-2147483648,0,2147483647]
-Int64   : [-2147483648,0,2147483647]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [2147483648,0,2147483647]
-Word64  : [18446744071562067968,0,2147483647]
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = 0
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = 0
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -1073741825
--3 `rotate` -2 = 2147483647
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -5
--3 `rotate` 2 = -9
--3 `rotate` 3 = -17
--2 `rotate` -3 = -536870913
--2 `rotate` -2 = -1073741825
--2 `rotate` -1 = 2147483647
--2 `rotate` 0 = -2
--2 `rotate` 1 = -3
--2 `rotate` 2 = -5
--2 `rotate` 3 = -9
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -1
--1 `rotate` 2 = -1
--1 `rotate` 3 = -1
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 536870912
-1 `rotate` -2 = 1073741824
-1 `rotate` -1 = -2147483648
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 1073741824
-2 `rotate` -2 = -2147483648
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 1610612736
-3 `rotate` -2 = -1073741824
-3 `rotate` -1 = -2147483647
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -3
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -2
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -1
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -3
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -2
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -1
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = False
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = False
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize -3 = 32
-bitSize -2 = 32
-bitSize -1 = 32
-bitSize 0 = 32
-bitSize 1 = 32
-bitSize 2 = 32
-bitSize 3 = 32
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
---------------------------------
---Testing Int8
---------------------------------
-testBounded
-(127,-128,-127)
-(126,127,-128)
-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
-#
-testConversions
-Integer : [-128,0,127]
-Int     : [-128,0,127]
-Int8    : [-128,0,127]
-Int16   : [-128,0,127]
-Int32   : [-128,0,127]
-Int64   : [-128,0,127]
-Word8   : [128,0,127]
-Word16  : [65408,0,127]
-Word32  : [4294967168,0,127]
-Word64  : [18446744073709551488,0,127]
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = 0
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = 0
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -65
--3 `rotate` -2 = 127
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -5
--3 `rotate` 2 = -9
--3 `rotate` 3 = -17
--2 `rotate` -3 = -33
--2 `rotate` -2 = -65
--2 `rotate` -1 = 127
--2 `rotate` 0 = -2
--2 `rotate` 1 = -3
--2 `rotate` 2 = -5
--2 `rotate` 3 = -9
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -1
--1 `rotate` 2 = -1
--1 `rotate` 3 = -1
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 32
-1 `rotate` -2 = 64
-1 `rotate` -1 = -128
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 64
-2 `rotate` -2 = -128
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 96
-3 `rotate` -2 = -64
-3 `rotate` -1 = -127
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -3
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -2
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -1
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -3
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -2
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -1
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = False
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = False
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize -3 = 8
-bitSize -2 = 8
-bitSize -1 = 8
-bitSize 0 = 8
-bitSize 1 = 8
-bitSize 2 = 8
-bitSize 3 = 8
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
---------------------------------
---Testing Int16
---------------------------------
-testBounded
-(32767,-32768,-32767)
-(32766,32767,-32768)
-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
-#
-testConversions
-Integer : [-32768,0,32767]
-Int     : [-32768,0,32767]
-Int8    : [0,0,-1]
-Int16   : [-32768,0,32767]
-Int32   : [-32768,0,32767]
-Int64   : [-32768,0,32767]
-Word8   : [0,0,255]
-Word16  : [32768,0,32767]
-Word32  : [4294934528,0,32767]
-Word64  : [18446744073709518848,0,32767]
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = 0
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = 0
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -16385
--3 `rotate` -2 = 32767
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -5
--3 `rotate` 2 = -9
--3 `rotate` 3 = -17
--2 `rotate` -3 = -8193
--2 `rotate` -2 = -16385
--2 `rotate` -1 = 32767
--2 `rotate` 0 = -2
--2 `rotate` 1 = -3
--2 `rotate` 2 = -5
--2 `rotate` 3 = -9
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -1
--1 `rotate` 2 = -1
--1 `rotate` 3 = -1
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 8192
-1 `rotate` -2 = 16384
-1 `rotate` -1 = -32768
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 16384
-2 `rotate` -2 = -32768
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 24576
-3 `rotate` -2 = -16384
-3 `rotate` -1 = -32767
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -3
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -2
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -1
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -3
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -2
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -1
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = False
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = False
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize -3 = 16
-bitSize -2 = 16
-bitSize -1 = 16
-bitSize 0 = 16
-bitSize 1 = 16
-bitSize 2 = 16
-bitSize 3 = 16
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
---------------------------------
---Testing Int32
---------------------------------
-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
-#
-testConversions
-Integer : [-2147483648,0,2147483647]
-Int     : [-2147483648,0,2147483647]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [-2147483648,0,2147483647]
-Int64   : [-2147483648,0,2147483647]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [2147483648,0,2147483647]
-Word64  : [18446744071562067968,0,2147483647]
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = 0
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = 0
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -1073741825
--3 `rotate` -2 = 2147483647
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -5
--3 `rotate` 2 = -9
--3 `rotate` 3 = -17
--2 `rotate` -3 = -536870913
--2 `rotate` -2 = -1073741825
--2 `rotate` -1 = 2147483647
--2 `rotate` 0 = -2
--2 `rotate` 1 = -3
--2 `rotate` 2 = -5
--2 `rotate` 3 = -9
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -1
--1 `rotate` 2 = -1
--1 `rotate` 3 = -1
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 536870912
-1 `rotate` -2 = 1073741824
-1 `rotate` -1 = -2147483648
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 1073741824
-2 `rotate` -2 = -2147483648
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 1610612736
-3 `rotate` -2 = -1073741824
-3 `rotate` -1 = -2147483647
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -3
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -2
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -1
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -3
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -2
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -1
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = False
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = False
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize -3 = 32
-bitSize -2 = 32
-bitSize -1 = 32
-bitSize 0 = 32
-bitSize 1 = 32
-bitSize 2 = 32
-bitSize 3 = 32
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
---------------------------------
---Testing Int64
---------------------------------
-testBounded
-(9223372036854775807,-9223372036854775808,-9223372036854775807)
-(9223372036854775806,9223372036854775807,-9223372036854775808)
-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
-#
-testConversions
-Integer : [-9223372036854775808,0,9223372036854775807]
-Int     : [0,0,-1]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [0,0,-1]
-Int64   : [-9223372036854775808,0,9223372036854775807]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [0,0,4294967295]
-Word64  : [9223372036854775808,0,9223372036854775807]
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = -12884901888
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = -8589934592
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = -4294967296
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 4294967296
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 8589934592
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 12884901888
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -4611686018427387905
--3 `rotate` -2 = 9223372036854775807
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -5
--3 `rotate` 2 = -9
--3 `rotate` 3 = -17
--2 `rotate` -3 = -2305843009213693953
--2 `rotate` -2 = -4611686018427387905
--2 `rotate` -1 = 9223372036854775807
--2 `rotate` 0 = -2
--2 `rotate` 1 = -3
--2 `rotate` 2 = -5
--2 `rotate` 3 = -9
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -1
--1 `rotate` 2 = -1
--1 `rotate` 3 = -1
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 2305843009213693952
-1 `rotate` -2 = 4611686018427387904
-1 `rotate` -1 = -9223372036854775808
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 4611686018427387904
-2 `rotate` -2 = -9223372036854775808
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 6917529027641081856
-3 `rotate` -2 = -4611686018427387904
-3 `rotate` -1 = -9223372036854775807
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 4294967296
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 4294967297
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 4294967298
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 4294967299
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -4294967299
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -4294967298
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -4294967297
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -4294967299
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -4294967298
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -4294967297
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 4294967296
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 4294967297
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 4294967298
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 4294967299
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = True
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = True
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = True
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize -3 = 64
-bitSize -2 = 64
-bitSize -1 = 64
-bitSize 0 = 64
-bitSize 1 = 64
-bitSize 2 = 64
-bitSize 3 = 64
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
---------------------------------
---Testing Word8
---------------------------------
-testBounded
-(255,0,1)
-(254,255,0)
-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
-[253,254,255,0,1,2,3]
-[253,254,255,0,1,2,3]
-testEq
-253 == 253 = True
-253 == 254 = False
-253 == 255 = False
-253 == 0 = False
-253 == 1 = False
-253 == 2 = False
-253 == 3 = False
-254 == 253 = False
-254 == 254 = True
-254 == 255 = False
-254 == 0 = False
-254 == 1 = False
-254 == 2 = False
-254 == 3 = False
-255 == 253 = False
-255 == 254 = False
-255 == 255 = True
-255 == 0 = False
-255 == 1 = False
-255 == 2 = False
-255 == 3 = False
-0 == 253 = False
-0 == 254 = False
-0 == 255 = False
-0 == 0 = True
-0 == 1 = False
-0 == 2 = False
-0 == 3 = False
-1 == 253 = False
-1 == 254 = False
-1 == 255 = False
-1 == 0 = False
-1 == 1 = True
-1 == 2 = False
-1 == 3 = False
-2 == 253 = False
-2 == 254 = False
-2 == 255 = False
-2 == 0 = False
-2 == 1 = False
-2 == 2 = True
-2 == 3 = False
-3 == 253 = False
-3 == 254 = False
-3 == 255 = False
-3 == 0 = False
-3 == 1 = False
-3 == 2 = False
-3 == 3 = True
-#
-253 /= 253 = False
-253 /= 254 = True
-253 /= 255 = True
-253 /= 0 = True
-253 /= 1 = True
-253 /= 2 = True
-253 /= 3 = True
-254 /= 253 = True
-254 /= 254 = False
-254 /= 255 = True
-254 /= 0 = True
-254 /= 1 = True
-254 /= 2 = True
-254 /= 3 = True
-255 /= 253 = True
-255 /= 254 = True
-255 /= 255 = False
-255 /= 0 = True
-255 /= 1 = True
-255 /= 2 = True
-255 /= 3 = True
-0 /= 253 = True
-0 /= 254 = True
-0 /= 255 = True
-0 /= 0 = False
-0 /= 1 = True
-0 /= 2 = True
-0 /= 3 = True
-1 /= 253 = True
-1 /= 254 = True
-1 /= 255 = True
-1 /= 0 = True
-1 /= 1 = False
-1 /= 2 = True
-1 /= 3 = True
-2 /= 253 = True
-2 /= 254 = True
-2 /= 255 = True
-2 /= 0 = True
-2 /= 1 = True
-2 /= 2 = False
-2 /= 3 = True
-3 /= 253 = True
-3 /= 254 = True
-3 /= 255 = True
-3 /= 0 = True
-3 /= 1 = True
-3 /= 2 = True
-3 /= 3 = False
-#
-testOrd
-253 <= 253 = True
-253 <= 254 = True
-253 <= 255 = True
-253 <= 0 = False
-253 <= 1 = False
-253 <= 2 = False
-253 <= 3 = False
-254 <= 253 = False
-254 <= 254 = True
-254 <= 255 = True
-254 <= 0 = False
-254 <= 1 = False
-254 <= 2 = False
-254 <= 3 = False
-255 <= 253 = False
-255 <= 254 = False
-255 <= 255 = True
-255 <= 0 = False
-255 <= 1 = False
-255 <= 2 = False
-255 <= 3 = False
-0 <= 253 = True
-0 <= 254 = True
-0 <= 255 = True
-0 <= 0 = True
-0 <= 1 = True
-0 <= 2 = True
-0 <= 3 = True
-1 <= 253 = True
-1 <= 254 = True
-1 <= 255 = True
-1 <= 0 = False
-1 <= 1 = True
-1 <= 2 = True
-1 <= 3 = True
-2 <= 253 = True
-2 <= 254 = True
-2 <= 255 = True
-2 <= 0 = False
-2 <= 1 = False
-2 <= 2 = True
-2 <= 3 = True
-3 <= 253 = True
-3 <= 254 = True
-3 <= 255 = True
-3 <= 0 = False
-3 <= 1 = False
-3 <= 2 = False
-3 <= 3 = True
-#
-253 <  253 = False
-253 <  254 = True
-253 <  255 = True
-253 <  0 = False
-253 <  1 = False
-253 <  2 = False
-253 <  3 = False
-254 <  253 = False
-254 <  254 = False
-254 <  255 = True
-254 <  0 = False
-254 <  1 = False
-254 <  2 = False
-254 <  3 = False
-255 <  253 = False
-255 <  254 = False
-255 <  255 = False
-255 <  0 = False
-255 <  1 = False
-255 <  2 = False
-255 <  3 = False
-0 <  253 = True
-0 <  254 = True
-0 <  255 = True
-0 <  0 = False
-0 <  1 = True
-0 <  2 = True
-0 <  3 = True
-1 <  253 = True
-1 <  254 = True
-1 <  255 = True
-1 <  0 = False
-1 <  1 = False
-1 <  2 = True
-1 <  3 = True
-2 <  253 = True
-2 <  254 = True
-2 <  255 = True
-2 <  0 = False
-2 <  1 = False
-2 <  2 = False
-2 <  3 = True
-3 <  253 = True
-3 <  254 = True
-3 <  255 = True
-3 <  0 = False
-3 <  1 = False
-3 <  2 = False
-3 <  3 = False
-#
-253 >  253 = False
-253 >  254 = False
-253 >  255 = False
-253 >  0 = True
-253 >  1 = True
-253 >  2 = True
-253 >  3 = True
-254 >  253 = True
-254 >  254 = False
-254 >  255 = False
-254 >  0 = True
-254 >  1 = True
-254 >  2 = True
-254 >  3 = True
-255 >  253 = True
-255 >  254 = True
-255 >  255 = False
-255 >  0 = True
-255 >  1 = True
-255 >  2 = True
-255 >  3 = True
-0 >  253 = False
-0 >  254 = False
-0 >  255 = False
-0 >  0 = False
-0 >  1 = False
-0 >  2 = False
-0 >  3 = False
-1 >  253 = False
-1 >  254 = False
-1 >  255 = False
-1 >  0 = True
-1 >  1 = False
-1 >  2 = False
-1 >  3 = False
-2 >  253 = False
-2 >  254 = False
-2 >  255 = False
-2 >  0 = True
-2 >  1 = True
-2 >  2 = False
-2 >  3 = False
-3 >  253 = False
-3 >  254 = False
-3 >  255 = False
-3 >  0 = True
-3 >  1 = True
-3 >  2 = True
-3 >  3 = False
-#
-253 >= 253 = True
-253 >= 254 = False
-253 >= 255 = False
-253 >= 0 = True
-253 >= 1 = True
-253 >= 2 = True
-253 >= 3 = True
-254 >= 253 = True
-254 >= 254 = True
-254 >= 255 = False
-254 >= 0 = True
-254 >= 1 = True
-254 >= 2 = True
-254 >= 3 = True
-255 >= 253 = True
-255 >= 254 = True
-255 >= 255 = True
-255 >= 0 = True
-255 >= 1 = True
-255 >= 2 = True
-255 >= 3 = True
-0 >= 253 = False
-0 >= 254 = False
-0 >= 255 = False
-0 >= 0 = True
-0 >= 1 = False
-0 >= 2 = False
-0 >= 3 = False
-1 >= 253 = False
-1 >= 254 = False
-1 >= 255 = False
-1 >= 0 = True
-1 >= 1 = True
-1 >= 2 = False
-1 >= 3 = False
-2 >= 253 = False
-2 >= 254 = False
-2 >= 255 = False
-2 >= 0 = True
-2 >= 1 = True
-2 >= 2 = True
-2 >= 3 = False
-3 >= 253 = False
-3 >= 254 = False
-3 >= 255 = False
-3 >= 0 = True
-3 >= 1 = True
-3 >= 2 = True
-3 >= 3 = True
-#
-253 `compare` 253 = EQ
-253 `compare` 254 = LT
-253 `compare` 255 = LT
-253 `compare` 0 = GT
-253 `compare` 1 = GT
-253 `compare` 2 = GT
-253 `compare` 3 = GT
-254 `compare` 253 = GT
-254 `compare` 254 = EQ
-254 `compare` 255 = LT
-254 `compare` 0 = GT
-254 `compare` 1 = GT
-254 `compare` 2 = GT
-254 `compare` 3 = GT
-255 `compare` 253 = GT
-255 `compare` 254 = GT
-255 `compare` 255 = EQ
-255 `compare` 0 = GT
-255 `compare` 1 = GT
-255 `compare` 2 = GT
-255 `compare` 3 = GT
-0 `compare` 253 = LT
-0 `compare` 254 = LT
-0 `compare` 255 = LT
-0 `compare` 0 = EQ
-0 `compare` 1 = LT
-0 `compare` 2 = LT
-0 `compare` 3 = LT
-1 `compare` 253 = LT
-1 `compare` 254 = LT
-1 `compare` 255 = LT
-1 `compare` 0 = GT
-1 `compare` 1 = EQ
-1 `compare` 2 = LT
-1 `compare` 3 = LT
-2 `compare` 253 = LT
-2 `compare` 254 = LT
-2 `compare` 255 = LT
-2 `compare` 0 = GT
-2 `compare` 1 = GT
-2 `compare` 2 = EQ
-2 `compare` 3 = LT
-3 `compare` 253 = LT
-3 `compare` 254 = LT
-3 `compare` 255 = LT
-3 `compare` 0 = GT
-3 `compare` 1 = GT
-3 `compare` 2 = GT
-3 `compare` 3 = EQ
-#
-testNum
-253 + 253 = 250
-253 + 254 = 251
-253 + 255 = 252
-253 + 0 = 253
-253 + 1 = 254
-253 + 2 = 255
-253 + 3 = 0
-254 + 253 = 251
-254 + 254 = 252
-254 + 255 = 253
-254 + 0 = 254
-254 + 1 = 255
-254 + 2 = 0
-254 + 3 = 1
-255 + 253 = 252
-255 + 254 = 253
-255 + 255 = 254
-255 + 0 = 255
-255 + 1 = 0
-255 + 2 = 1
-255 + 3 = 2
-0 + 253 = 253
-0 + 254 = 254
-0 + 255 = 255
-0 + 0 = 0
-0 + 1 = 1
-0 + 2 = 2
-0 + 3 = 3
-1 + 253 = 254
-1 + 254 = 255
-1 + 255 = 0
-1 + 0 = 1
-1 + 1 = 2
-1 + 2 = 3
-1 + 3 = 4
-2 + 253 = 255
-2 + 254 = 0
-2 + 255 = 1
-2 + 0 = 2
-2 + 1 = 3
-2 + 2 = 4
-2 + 3 = 5
-3 + 253 = 0
-3 + 254 = 1
-3 + 255 = 2
-3 + 0 = 3
-3 + 1 = 4
-3 + 2 = 5
-3 + 3 = 6
-#
-253 - 253 = 0
-253 - 254 = 255
-253 - 255 = 254
-253 - 0 = 253
-253 - 1 = 252
-253 - 2 = 251
-253 - 3 = 250
-254 - 253 = 1
-254 - 254 = 0
-254 - 255 = 255
-254 - 0 = 254
-254 - 1 = 253
-254 - 2 = 252
-254 - 3 = 251
-255 - 253 = 2
-255 - 254 = 1
-255 - 255 = 0
-255 - 0 = 255
-255 - 1 = 254
-255 - 2 = 253
-255 - 3 = 252
-0 - 253 = 3
-0 - 254 = 2
-0 - 255 = 1
-0 - 0 = 0
-0 - 1 = 255
-0 - 2 = 254
-0 - 3 = 253
-1 - 253 = 4
-1 - 254 = 3
-1 - 255 = 2
-1 - 0 = 1
-1 - 1 = 0
-1 - 2 = 255
-1 - 3 = 254
-2 - 253 = 5
-2 - 254 = 4
-2 - 255 = 3
-2 - 0 = 2
-2 - 1 = 1
-2 - 2 = 0
-2 - 3 = 255
-3 - 253 = 6
-3 - 254 = 5
-3 - 255 = 4
-3 - 0 = 3
-3 - 1 = 2
-3 - 2 = 1
-3 - 3 = 0
-#
-253 * 253 = 9
-253 * 254 = 6
-253 * 255 = 3
-253 * 0 = 0
-253 * 1 = 253
-253 * 2 = 250
-253 * 3 = 247
-254 * 253 = 6
-254 * 254 = 4
-254 * 255 = 2
-254 * 0 = 0
-254 * 1 = 254
-254 * 2 = 252
-254 * 3 = 250
-255 * 253 = 3
-255 * 254 = 2
-255 * 255 = 1
-255 * 0 = 0
-255 * 1 = 255
-255 * 2 = 254
-255 * 3 = 253
-0 * 253 = 0
-0 * 254 = 0
-0 * 255 = 0
-0 * 0 = 0
-0 * 1 = 0
-0 * 2 = 0
-0 * 3 = 0
-1 * 253 = 253
-1 * 254 = 254
-1 * 255 = 255
-1 * 0 = 0
-1 * 1 = 1
-1 * 2 = 2
-1 * 3 = 3
-2 * 253 = 250
-2 * 254 = 252
-2 * 255 = 254
-2 * 0 = 0
-2 * 1 = 2
-2 * 2 = 4
-2 * 3 = 6
-3 * 253 = 247
-3 * 254 = 250
-3 * 255 = 253
-3 * 0 = 0
-3 * 1 = 3
-3 * 2 = 6
-3 * 3 = 9
-#
-negate 253 = 3
-negate 254 = 2
-negate 255 = 1
-negate 0 = 0
-negate 1 = 255
-negate 2 = 254
-negate 3 = 253
-#
-testReal
-toRational 253 = 253 % 1
-toRational 254 = 254 % 1
-toRational 255 = 255 % 1
-toRational 0 = 0 % 1
-toRational 1 = 1 % 1
-toRational 2 = 2 % 1
-toRational 3 = 3 % 1
-#
-testIntegral
-253 `divMod`  253 = (1,0)
-253 `divMod`  254 = (0,253)
-253 `divMod`  255 = (0,253)
-253 `divMod`  1 = (253,0)
-253 `divMod`  2 = (126,1)
-253 `divMod`  3 = (84,1)
-254 `divMod`  253 = (1,1)
-254 `divMod`  254 = (1,0)
-254 `divMod`  255 = (0,254)
-254 `divMod`  1 = (254,0)
-254 `divMod`  2 = (127,0)
-254 `divMod`  3 = (84,2)
-255 `divMod`  253 = (1,2)
-255 `divMod`  254 = (1,1)
-255 `divMod`  255 = (1,0)
-255 `divMod`  1 = (255,0)
-255 `divMod`  2 = (127,1)
-255 `divMod`  3 = (85,0)
-0 `divMod`  253 = (0,0)
-0 `divMod`  254 = (0,0)
-0 `divMod`  255 = (0,0)
-0 `divMod`  1 = (0,0)
-0 `divMod`  2 = (0,0)
-0 `divMod`  3 = (0,0)
-1 `divMod`  253 = (0,1)
-1 `divMod`  254 = (0,1)
-1 `divMod`  255 = (0,1)
-1 `divMod`  1 = (1,0)
-1 `divMod`  2 = (0,1)
-1 `divMod`  3 = (0,1)
-2 `divMod`  253 = (0,2)
-2 `divMod`  254 = (0,2)
-2 `divMod`  255 = (0,2)
-2 `divMod`  1 = (2,0)
-2 `divMod`  2 = (1,0)
-2 `divMod`  3 = (0,2)
-3 `divMod`  253 = (0,3)
-3 `divMod`  254 = (0,3)
-3 `divMod`  255 = (0,3)
-3 `divMod`  1 = (3,0)
-3 `divMod`  2 = (1,1)
-3 `divMod`  3 = (1,0)
-#
-253 `div`     253 = 1
-253 `div`     254 = 0
-253 `div`     255 = 0
-253 `div`     1 = 253
-253 `div`     2 = 126
-253 `div`     3 = 84
-254 `div`     253 = 1
-254 `div`     254 = 1
-254 `div`     255 = 0
-254 `div`     1 = 254
-254 `div`     2 = 127
-254 `div`     3 = 84
-255 `div`     253 = 1
-255 `div`     254 = 1
-255 `div`     255 = 1
-255 `div`     1 = 255
-255 `div`     2 = 127
-255 `div`     3 = 85
-0 `div`     253 = 0
-0 `div`     254 = 0
-0 `div`     255 = 0
-0 `div`     1 = 0
-0 `div`     2 = 0
-0 `div`     3 = 0
-1 `div`     253 = 0
-1 `div`     254 = 0
-1 `div`     255 = 0
-1 `div`     1 = 1
-1 `div`     2 = 0
-1 `div`     3 = 0
-2 `div`     253 = 0
-2 `div`     254 = 0
-2 `div`     255 = 0
-2 `div`     1 = 2
-2 `div`     2 = 1
-2 `div`     3 = 0
-3 `div`     253 = 0
-3 `div`     254 = 0
-3 `div`     255 = 0
-3 `div`     1 = 3
-3 `div`     2 = 1
-3 `div`     3 = 1
-#
-253 `mod`     253 = 0
-253 `mod`     254 = 253
-253 `mod`     255 = 253
-253 `mod`     1 = 0
-253 `mod`     2 = 1
-253 `mod`     3 = 1
-254 `mod`     253 = 1
-254 `mod`     254 = 0
-254 `mod`     255 = 254
-254 `mod`     1 = 0
-254 `mod`     2 = 0
-254 `mod`     3 = 2
-255 `mod`     253 = 2
-255 `mod`     254 = 1
-255 `mod`     255 = 0
-255 `mod`     1 = 0
-255 `mod`     2 = 1
-255 `mod`     3 = 0
-0 `mod`     253 = 0
-0 `mod`     254 = 0
-0 `mod`     255 = 0
-0 `mod`     1 = 0
-0 `mod`     2 = 0
-0 `mod`     3 = 0
-1 `mod`     253 = 1
-1 `mod`     254 = 1
-1 `mod`     255 = 1
-1 `mod`     1 = 0
-1 `mod`     2 = 1
-1 `mod`     3 = 1
-2 `mod`     253 = 2
-2 `mod`     254 = 2
-2 `mod`     255 = 2
-2 `mod`     1 = 0
-2 `mod`     2 = 0
-2 `mod`     3 = 2
-3 `mod`     253 = 3
-3 `mod`     254 = 3
-3 `mod`     255 = 3
-3 `mod`     1 = 0
-3 `mod`     2 = 1
-3 `mod`     3 = 0
-#
-253 `quotRem` 253 = (1,0)
-253 `quotRem` 254 = (0,253)
-253 `quotRem` 255 = (0,253)
-253 `quotRem` 1 = (253,0)
-253 `quotRem` 2 = (126,1)
-253 `quotRem` 3 = (84,1)
-254 `quotRem` 253 = (1,1)
-254 `quotRem` 254 = (1,0)
-254 `quotRem` 255 = (0,254)
-254 `quotRem` 1 = (254,0)
-254 `quotRem` 2 = (127,0)
-254 `quotRem` 3 = (84,2)
-255 `quotRem` 253 = (1,2)
-255 `quotRem` 254 = (1,1)
-255 `quotRem` 255 = (1,0)
-255 `quotRem` 1 = (255,0)
-255 `quotRem` 2 = (127,1)
-255 `quotRem` 3 = (85,0)
-0 `quotRem` 253 = (0,0)
-0 `quotRem` 254 = (0,0)
-0 `quotRem` 255 = (0,0)
-0 `quotRem` 1 = (0,0)
-0 `quotRem` 2 = (0,0)
-0 `quotRem` 3 = (0,0)
-1 `quotRem` 253 = (0,1)
-1 `quotRem` 254 = (0,1)
-1 `quotRem` 255 = (0,1)
-1 `quotRem` 1 = (1,0)
-1 `quotRem` 2 = (0,1)
-1 `quotRem` 3 = (0,1)
-2 `quotRem` 253 = (0,2)
-2 `quotRem` 254 = (0,2)
-2 `quotRem` 255 = (0,2)
-2 `quotRem` 1 = (2,0)
-2 `quotRem` 2 = (1,0)
-2 `quotRem` 3 = (0,2)
-3 `quotRem` 253 = (0,3)
-3 `quotRem` 254 = (0,3)
-3 `quotRem` 255 = (0,3)
-3 `quotRem` 1 = (3,0)
-3 `quotRem` 2 = (1,1)
-3 `quotRem` 3 = (1,0)
-#
-253 `quot`    253 = 1
-253 `quot`    254 = 0
-253 `quot`    255 = 0
-253 `quot`    1 = 253
-253 `quot`    2 = 126
-253 `quot`    3 = 84
-254 `quot`    253 = 1
-254 `quot`    254 = 1
-254 `quot`    255 = 0
-254 `quot`    1 = 254
-254 `quot`    2 = 127
-254 `quot`    3 = 84
-255 `quot`    253 = 1
-255 `quot`    254 = 1
-255 `quot`    255 = 1
-255 `quot`    1 = 255
-255 `quot`    2 = 127
-255 `quot`    3 = 85
-0 `quot`    253 = 0
-0 `quot`    254 = 0
-0 `quot`    255 = 0
-0 `quot`    1 = 0
-0 `quot`    2 = 0
-0 `quot`    3 = 0
-1 `quot`    253 = 0
-1 `quot`    254 = 0
-1 `quot`    255 = 0
-1 `quot`    1 = 1
-1 `quot`    2 = 0
-1 `quot`    3 = 0
-2 `quot`    253 = 0
-2 `quot`    254 = 0
-2 `quot`    255 = 0
-2 `quot`    1 = 2
-2 `quot`    2 = 1
-2 `quot`    3 = 0
-3 `quot`    253 = 0
-3 `quot`    254 = 0
-3 `quot`    255 = 0
-3 `quot`    1 = 3
-3 `quot`    2 = 1
-3 `quot`    3 = 1
-#
-253 `rem`     253 = 0
-253 `rem`     254 = 253
-253 `rem`     255 = 253
-253 `rem`     1 = 0
-253 `rem`     2 = 1
-253 `rem`     3 = 1
-254 `rem`     253 = 1
-254 `rem`     254 = 0
-254 `rem`     255 = 254
-254 `rem`     1 = 0
-254 `rem`     2 = 0
-254 `rem`     3 = 2
-255 `rem`     253 = 2
-255 `rem`     254 = 1
-255 `rem`     255 = 0
-255 `rem`     1 = 0
-255 `rem`     2 = 1
-255 `rem`     3 = 0
-0 `rem`     253 = 0
-0 `rem`     254 = 0
-0 `rem`     255 = 0
-0 `rem`     1 = 0
-0 `rem`     2 = 0
-0 `rem`     3 = 0
-1 `rem`     253 = 1
-1 `rem`     254 = 1
-1 `rem`     255 = 1
-1 `rem`     1 = 0
-1 `rem`     2 = 1
-1 `rem`     3 = 1
-2 `rem`     253 = 2
-2 `rem`     254 = 2
-2 `rem`     255 = 2
-2 `rem`     1 = 0
-2 `rem`     2 = 0
-2 `rem`     3 = 2
-3 `rem`     253 = 3
-3 `rem`     254 = 3
-3 `rem`     255 = 3
-3 `rem`     1 = 0
-3 `rem`     2 = 1
-3 `rem`     3 = 0
-#
-testConversions
-Integer : [0,0,255]
-Int     : [0,0,255]
-Int8    : [0,0,-1]
-Int16   : [0,0,255]
-Int32   : [0,0,255]
-Int64   : [0,0,255]
-Word8   : [0,0,255]
-Word16  : [0,0,255]
-Word32  : [0,0,255]
-Word64  : [0,0,255]
-testBits
-253 .&.   253 = 253
-253 .&.   254 = 252
-253 .&.   255 = 253
-253 .&.   1 = 1
-253 .&.   2 = 0
-253 .&.   3 = 1
-254 .&.   253 = 252
-254 .&.   254 = 254
-254 .&.   255 = 254
-254 .&.   1 = 0
-254 .&.   2 = 2
-254 .&.   3 = 2
-255 .&.   253 = 253
-255 .&.   254 = 254
-255 .&.   255 = 255
-255 .&.   1 = 1
-255 .&.   2 = 2
-255 .&.   3 = 3
-0 .&.   253 = 0
-0 .&.   254 = 0
-0 .&.   255 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   253 = 1
-1 .&.   254 = 0
-1 .&.   255 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   253 = 0
-2 .&.   254 = 2
-2 .&.   255 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   253 = 1
-3 .&.   254 = 2
-3 .&.   255 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
-253 .|.   253 = 253
-253 .|.   254 = 255
-253 .|.   255 = 255
-253 .|.   1 = 253
-253 .|.   2 = 255
-253 .|.   3 = 255
-254 .|.   253 = 255
-254 .|.   254 = 254
-254 .|.   255 = 255
-254 .|.   1 = 255
-254 .|.   2 = 254
-254 .|.   3 = 255
-255 .|.   253 = 255
-255 .|.   254 = 255
-255 .|.   255 = 255
-255 .|.   1 = 255
-255 .|.   2 = 255
-255 .|.   3 = 255
-0 .|.   253 = 253
-0 .|.   254 = 254
-0 .|.   255 = 255
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   253 = 253
-1 .|.   254 = 255
-1 .|.   255 = 255
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   253 = 255
-2 .|.   254 = 254
-2 .|.   255 = 255
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   253 = 255
-3 .|.   254 = 255
-3 .|.   255 = 255
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
-253 `xor` 253 = 0
-253 `xor` 254 = 3
-253 `xor` 255 = 2
-253 `xor` 1 = 252
-253 `xor` 2 = 255
-253 `xor` 3 = 254
-254 `xor` 253 = 3
-254 `xor` 254 = 0
-254 `xor` 255 = 1
-254 `xor` 1 = 255
-254 `xor` 2 = 252
-254 `xor` 3 = 253
-255 `xor` 253 = 2
-255 `xor` 254 = 1
-255 `xor` 255 = 0
-255 `xor` 1 = 254
-255 `xor` 2 = 253
-255 `xor` 3 = 252
-0 `xor` 253 = 253
-0 `xor` 254 = 254
-0 `xor` 255 = 255
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` 253 = 252
-1 `xor` 254 = 255
-1 `xor` 255 = 254
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` 253 = 255
-2 `xor` 254 = 252
-2 `xor` 255 = 253
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` 253 = 254
-3 `xor` 254 = 253
-3 `xor` 255 = 252
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement 253 = 2
-complement 254 = 1
-complement 255 = 0
-complement 0 = 255
-complement 1 = 254
-complement 2 = 253
-complement 3 = 252
-#
-253 `shiftL` 0 = 253
-253 `shiftL` 1 = 250
-253 `shiftL` 2 = 244
-253 `shiftL` 3 = 232
-253 `shiftL` 32 = 0
-254 `shiftL` 0 = 254
-254 `shiftL` 1 = 252
-254 `shiftL` 2 = 248
-254 `shiftL` 3 = 240
-254 `shiftL` 32 = 0
-255 `shiftL` 0 = 255
-255 `shiftL` 1 = 254
-255 `shiftL` 2 = 252
-255 `shiftL` 3 = 248
-255 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
-253 `shiftR` 0 = 253
-253 `shiftR` 1 = 126
-253 `shiftR` 2 = 63
-253 `shiftR` 3 = 31
-253 `shiftR` 32 = 0
-254 `shiftR` 0 = 254
-254 `shiftR` 1 = 127
-254 `shiftR` 2 = 63
-254 `shiftR` 3 = 31
-254 `shiftR` 32 = 0
-255 `shiftR` 0 = 255
-255 `shiftR` 1 = 127
-255 `shiftR` 2 = 63
-255 `shiftR` 3 = 31
-255 `shiftR` 32 = 0
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
-253 `rotate` -3 = 191
-253 `rotate` -2 = 127
-253 `rotate` -1 = 254
-253 `rotate` 0 = 253
-253 `rotate` 1 = 251
-253 `rotate` 2 = 247
-253 `rotate` 3 = 239
-254 `rotate` -3 = 223
-254 `rotate` -2 = 191
-254 `rotate` -1 = 127
-254 `rotate` 0 = 254
-254 `rotate` 1 = 253
-254 `rotate` 2 = 251
-254 `rotate` 3 = 247
-255 `rotate` -3 = 255
-255 `rotate` -2 = 255
-255 `rotate` -1 = 255
-255 `rotate` 0 = 255
-255 `rotate` 1 = 255
-255 `rotate` 2 = 255
-255 `rotate` 3 = 255
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 32
-1 `rotate` -2 = 64
-1 `rotate` -1 = 128
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 64
-2 `rotate` -2 = 128
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 96
-3 `rotate` -2 = 192
-3 `rotate` -1 = 129
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
-253 `setBit` 0 = 253
-253 `setBit` 1 = 255
-253 `setBit` 2 = 253
-253 `setBit` 3 = 253
-253 `setBit` 32 = 253
-254 `setBit` 0 = 255
-254 `setBit` 1 = 254
-254 `setBit` 2 = 254
-254 `setBit` 3 = 254
-254 `setBit` 32 = 254
-255 `setBit` 0 = 255
-255 `setBit` 1 = 255
-255 `setBit` 2 = 255
-255 `setBit` 3 = 255
-255 `setBit` 32 = 255
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
-253 `clearBit` 0 = 252
-253 `clearBit` 1 = 253
-253 `clearBit` 2 = 249
-253 `clearBit` 3 = 245
-253 `clearBit` 32 = 253
-254 `clearBit` 0 = 254
-254 `clearBit` 1 = 252
-254 `clearBit` 2 = 250
-254 `clearBit` 3 = 246
-254 `clearBit` 32 = 254
-255 `clearBit` 0 = 254
-255 `clearBit` 1 = 253
-255 `clearBit` 2 = 251
-255 `clearBit` 3 = 247
-255 `clearBit` 32 = 255
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
-253 `complementBit` 0 = 252
-253 `complementBit` 1 = 255
-253 `complementBit` 2 = 249
-253 `complementBit` 3 = 245
-253 `complementBit` 32 = 253
-254 `complementBit` 0 = 255
-254 `complementBit` 1 = 252
-254 `complementBit` 2 = 250
-254 `complementBit` 3 = 246
-254 `complementBit` 32 = 254
-255 `complementBit` 0 = 254
-255 `complementBit` 1 = 253
-255 `complementBit` 2 = 251
-255 `complementBit` 3 = 247
-255 `complementBit` 32 = 255
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
-253 `testBit` 0 = True
-253 `testBit` 1 = False
-253 `testBit` 2 = True
-253 `testBit` 3 = True
-253 `testBit` 32 = False
-254 `testBit` 0 = False
-254 `testBit` 1 = True
-254 `testBit` 2 = True
-254 `testBit` 3 = True
-254 `testBit` 32 = False
-255 `testBit` 0 = True
-255 `testBit` 1 = True
-255 `testBit` 2 = True
-255 `testBit` 3 = True
-255 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize 253 = 8
-bitSize 254 = 8
-bitSize 255 = 8
-bitSize 0 = 8
-bitSize 1 = 8
-bitSize 2 = 8
-bitSize 3 = 8
-#
-isSigned 253 = False
-isSigned 254 = False
-isSigned 255 = False
-isSigned 0 = False
-isSigned 1 = False
-isSigned 2 = False
-isSigned 3 = False
-#
---------------------------------
---Testing Word16
---------------------------------
-testBounded
-(65535,0,1)
-(65534,65535,0)
-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
-[65533,65534,65535,0,1,2,3]
-[65533,65534,65535,0,1,2,3]
-testEq
-65533 == 65533 = True
-65533 == 65534 = False
-65533 == 65535 = False
-65533 == 0 = False
-65533 == 1 = False
-65533 == 2 = False
-65533 == 3 = False
-65534 == 65533 = False
-65534 == 65534 = True
-65534 == 65535 = False
-65534 == 0 = False
-65534 == 1 = False
-65534 == 2 = False
-65534 == 3 = False
-65535 == 65533 = False
-65535 == 65534 = False
-65535 == 65535 = True
-65535 == 0 = False
-65535 == 1 = False
-65535 == 2 = False
-65535 == 3 = False
-0 == 65533 = False
-0 == 65534 = False
-0 == 65535 = False
-0 == 0 = True
-0 == 1 = False
-0 == 2 = False
-0 == 3 = False
-1 == 65533 = False
-1 == 65534 = False
-1 == 65535 = False
-1 == 0 = False
-1 == 1 = True
-1 == 2 = False
-1 == 3 = False
-2 == 65533 = False
-2 == 65534 = False
-2 == 65535 = False
-2 == 0 = False
-2 == 1 = False
-2 == 2 = True
-2 == 3 = False
-3 == 65533 = False
-3 == 65534 = False
-3 == 65535 = False
-3 == 0 = False
-3 == 1 = False
-3 == 2 = False
-3 == 3 = True
-#
-65533 /= 65533 = False
-65533 /= 65534 = True
-65533 /= 65535 = True
-65533 /= 0 = True
-65533 /= 1 = True
-65533 /= 2 = True
-65533 /= 3 = True
-65534 /= 65533 = True
-65534 /= 65534 = False
-65534 /= 65535 = True
-65534 /= 0 = True
-65534 /= 1 = True
-65534 /= 2 = True
-65534 /= 3 = True
-65535 /= 65533 = True
-65535 /= 65534 = True
-65535 /= 65535 = False
-65535 /= 0 = True
-65535 /= 1 = True
-65535 /= 2 = True
-65535 /= 3 = True
-0 /= 65533 = True
-0 /= 65534 = True
-0 /= 65535 = True
-0 /= 0 = False
-0 /= 1 = True
-0 /= 2 = True
-0 /= 3 = True
-1 /= 65533 = True
-1 /= 65534 = True
-1 /= 65535 = True
-1 /= 0 = True
-1 /= 1 = False
-1 /= 2 = True
-1 /= 3 = True
-2 /= 65533 = True
-2 /= 65534 = True
-2 /= 65535 = True
-2 /= 0 = True
-2 /= 1 = True
-2 /= 2 = False
-2 /= 3 = True
-3 /= 65533 = True
-3 /= 65534 = True
-3 /= 65535 = True
-3 /= 0 = True
-3 /= 1 = True
-3 /= 2 = True
-3 /= 3 = False
-#
-testOrd
-65533 <= 65533 = True
-65533 <= 65534 = True
-65533 <= 65535 = True
-65533 <= 0 = False
-65533 <= 1 = False
-65533 <= 2 = False
-65533 <= 3 = False
-65534 <= 65533 = False
-65534 <= 65534 = True
-65534 <= 65535 = True
-65534 <= 0 = False
-65534 <= 1 = False
-65534 <= 2 = False
-65534 <= 3 = False
-65535 <= 65533 = False
-65535 <= 65534 = False
-65535 <= 65535 = True
-65535 <= 0 = False
-65535 <= 1 = False
-65535 <= 2 = False
-65535 <= 3 = False
-0 <= 65533 = True
-0 <= 65534 = True
-0 <= 65535 = True
-0 <= 0 = True
-0 <= 1 = True
-0 <= 2 = True
-0 <= 3 = True
-1 <= 65533 = True
-1 <= 65534 = True
-1 <= 65535 = True
-1 <= 0 = False
-1 <= 1 = True
-1 <= 2 = True
-1 <= 3 = True
-2 <= 65533 = True
-2 <= 65534 = True
-2 <= 65535 = True
-2 <= 0 = False
-2 <= 1 = False
-2 <= 2 = True
-2 <= 3 = True
-3 <= 65533 = True
-3 <= 65534 = True
-3 <= 65535 = True
-3 <= 0 = False
-3 <= 1 = False
-3 <= 2 = False
-3 <= 3 = True
-#
-65533 <  65533 = False
-65533 <  65534 = True
-65533 <  65535 = True
-65533 <  0 = False
-65533 <  1 = False
-65533 <  2 = False
-65533 <  3 = False
-65534 <  65533 = False
-65534 <  65534 = False
-65534 <  65535 = True
-65534 <  0 = False
-65534 <  1 = False
-65534 <  2 = False
-65534 <  3 = False
-65535 <  65533 = False
-65535 <  65534 = False
-65535 <  65535 = False
-65535 <  0 = False
-65535 <  1 = False
-65535 <  2 = False
-65535 <  3 = False
-0 <  65533 = True
-0 <  65534 = True
-0 <  65535 = True
-0 <  0 = False
-0 <  1 = True
-0 <  2 = True
-0 <  3 = True
-1 <  65533 = True
-1 <  65534 = True
-1 <  65535 = True
-1 <  0 = False
-1 <  1 = False
-1 <  2 = True
-1 <  3 = True
-2 <  65533 = True
-2 <  65534 = True
-2 <  65535 = True
-2 <  0 = False
-2 <  1 = False
-2 <  2 = False
-2 <  3 = True
-3 <  65533 = True
-3 <  65534 = True
-3 <  65535 = True
-3 <  0 = False
-3 <  1 = False
-3 <  2 = False
-3 <  3 = False
-#
-65533 >  65533 = False
-65533 >  65534 = False
-65533 >  65535 = False
-65533 >  0 = True
-65533 >  1 = True
-65533 >  2 = True
-65533 >  3 = True
-65534 >  65533 = True
-65534 >  65534 = False
-65534 >  65535 = False
-65534 >  0 = True
-65534 >  1 = True
-65534 >  2 = True
-65534 >  3 = True
-65535 >  65533 = True
-65535 >  65534 = True
-65535 >  65535 = False
-65535 >  0 = True
-65535 >  1 = True
-65535 >  2 = True
-65535 >  3 = True
-0 >  65533 = False
-0 >  65534 = False
-0 >  65535 = False
-0 >  0 = False
-0 >  1 = False
-0 >  2 = False
-0 >  3 = False
-1 >  65533 = False
-1 >  65534 = False
-1 >  65535 = False
-1 >  0 = True
-1 >  1 = False
-1 >  2 = False
-1 >  3 = False
-2 >  65533 = False
-2 >  65534 = False
-2 >  65535 = False
-2 >  0 = True
-2 >  1 = True
-2 >  2 = False
-2 >  3 = False
-3 >  65533 = False
-3 >  65534 = False
-3 >  65535 = False
-3 >  0 = True
-3 >  1 = True
-3 >  2 = True
-3 >  3 = False
-#
-65533 >= 65533 = True
-65533 >= 65534 = False
-65533 >= 65535 = False
-65533 >= 0 = True
-65533 >= 1 = True
-65533 >= 2 = True
-65533 >= 3 = True
-65534 >= 65533 = True
-65534 >= 65534 = True
-65534 >= 65535 = False
-65534 >= 0 = True
-65534 >= 1 = True
-65534 >= 2 = True
-65534 >= 3 = True
-65535 >= 65533 = True
-65535 >= 65534 = True
-65535 >= 65535 = True
-65535 >= 0 = True
-65535 >= 1 = True
-65535 >= 2 = True
-65535 >= 3 = True
-0 >= 65533 = False
-0 >= 65534 = False
-0 >= 65535 = False
-0 >= 0 = True
-0 >= 1 = False
-0 >= 2 = False
-0 >= 3 = False
-1 >= 65533 = False
-1 >= 65534 = False
-1 >= 65535 = False
-1 >= 0 = True
-1 >= 1 = True
-1 >= 2 = False
-1 >= 3 = False
-2 >= 65533 = False
-2 >= 65534 = False
-2 >= 65535 = False
-2 >= 0 = True
-2 >= 1 = True
-2 >= 2 = True
-2 >= 3 = False
-3 >= 65533 = False
-3 >= 65534 = False
-3 >= 65535 = False
-3 >= 0 = True
-3 >= 1 = True
-3 >= 2 = True
-3 >= 3 = True
-#
-65533 `compare` 65533 = EQ
-65533 `compare` 65534 = LT
-65533 `compare` 65535 = LT
-65533 `compare` 0 = GT
-65533 `compare` 1 = GT
-65533 `compare` 2 = GT
-65533 `compare` 3 = GT
-65534 `compare` 65533 = GT
-65534 `compare` 65534 = EQ
-65534 `compare` 65535 = LT
-65534 `compare` 0 = GT
-65534 `compare` 1 = GT
-65534 `compare` 2 = GT
-65534 `compare` 3 = GT
-65535 `compare` 65533 = GT
-65535 `compare` 65534 = GT
-65535 `compare` 65535 = EQ
-65535 `compare` 0 = GT
-65535 `compare` 1 = GT
-65535 `compare` 2 = GT
-65535 `compare` 3 = GT
-0 `compare` 65533 = LT
-0 `compare` 65534 = LT
-0 `compare` 65535 = LT
-0 `compare` 0 = EQ
-0 `compare` 1 = LT
-0 `compare` 2 = LT
-0 `compare` 3 = LT
-1 `compare` 65533 = LT
-1 `compare` 65534 = LT
-1 `compare` 65535 = LT
-1 `compare` 0 = GT
-1 `compare` 1 = EQ
-1 `compare` 2 = LT
-1 `compare` 3 = LT
-2 `compare` 65533 = LT
-2 `compare` 65534 = LT
-2 `compare` 65535 = LT
-2 `compare` 0 = GT
-2 `compare` 1 = GT
-2 `compare` 2 = EQ
-2 `compare` 3 = LT
-3 `compare` 65533 = LT
-3 `compare` 65534 = LT
-3 `compare` 65535 = LT
-3 `compare` 0 = GT
-3 `compare` 1 = GT
-3 `compare` 2 = GT
-3 `compare` 3 = EQ
-#
-testNum
-65533 + 65533 = 65530
-65533 + 65534 = 65531
-65533 + 65535 = 65532
-65533 + 0 = 65533
-65533 + 1 = 65534
-65533 + 2 = 65535
-65533 + 3 = 0
-65534 + 65533 = 65531
-65534 + 65534 = 65532
-65534 + 65535 = 65533
-65534 + 0 = 65534
-65534 + 1 = 65535
-65534 + 2 = 0
-65534 + 3 = 1
-65535 + 65533 = 65532
-65535 + 65534 = 65533
-65535 + 65535 = 65534
-65535 + 0 = 65535
-65535 + 1 = 0
-65535 + 2 = 1
-65535 + 3 = 2
-0 + 65533 = 65533
-0 + 65534 = 65534
-0 + 65535 = 65535
-0 + 0 = 0
-0 + 1 = 1
-0 + 2 = 2
-0 + 3 = 3
-1 + 65533 = 65534
-1 + 65534 = 65535
-1 + 65535 = 0
-1 + 0 = 1
-1 + 1 = 2
-1 + 2 = 3
-1 + 3 = 4
-2 + 65533 = 65535
-2 + 65534 = 0
-2 + 65535 = 1
-2 + 0 = 2
-2 + 1 = 3
-2 + 2 = 4
-2 + 3 = 5
-3 + 65533 = 0
-3 + 65534 = 1
-3 + 65535 = 2
-3 + 0 = 3
-3 + 1 = 4
-3 + 2 = 5
-3 + 3 = 6
-#
-65533 - 65533 = 0
-65533 - 65534 = 65535
-65533 - 65535 = 65534
-65533 - 0 = 65533
-65533 - 1 = 65532
-65533 - 2 = 65531
-65533 - 3 = 65530
-65534 - 65533 = 1
-65534 - 65534 = 0
-65534 - 65535 = 65535
-65534 - 0 = 65534
-65534 - 1 = 65533
-65534 - 2 = 65532
-65534 - 3 = 65531
-65535 - 65533 = 2
-65535 - 65534 = 1
-65535 - 65535 = 0
-65535 - 0 = 65535
-65535 - 1 = 65534
-65535 - 2 = 65533
-65535 - 3 = 65532
-0 - 65533 = 3
-0 - 65534 = 2
-0 - 65535 = 1
-0 - 0 = 0
-0 - 1 = 65535
-0 - 2 = 65534
-0 - 3 = 65533
-1 - 65533 = 4
-1 - 65534 = 3
-1 - 65535 = 2
-1 - 0 = 1
-1 - 1 = 0
-1 - 2 = 65535
-1 - 3 = 65534
-2 - 65533 = 5
-2 - 65534 = 4
-2 - 65535 = 3
-2 - 0 = 2
-2 - 1 = 1
-2 - 2 = 0
-2 - 3 = 65535
-3 - 65533 = 6
-3 - 65534 = 5
-3 - 65535 = 4
-3 - 0 = 3
-3 - 1 = 2
-3 - 2 = 1
-3 - 3 = 0
-#
-65533 * 65533 = 9
-65533 * 65534 = 6
-65533 * 65535 = 3
-65533 * 0 = 0
-65533 * 1 = 65533
-65533 * 2 = 65530
-65533 * 3 = 65527
-65534 * 65533 = 6
-65534 * 65534 = 4
-65534 * 65535 = 2
-65534 * 0 = 0
-65534 * 1 = 65534
-65534 * 2 = 65532
-65534 * 3 = 65530
-65535 * 65533 = 3
-65535 * 65534 = 2
-65535 * 65535 = 1
-65535 * 0 = 0
-65535 * 1 = 65535
-65535 * 2 = 65534
-65535 * 3 = 65533
-0 * 65533 = 0
-0 * 65534 = 0
-0 * 65535 = 0
-0 * 0 = 0
-0 * 1 = 0
-0 * 2 = 0
-0 * 3 = 0
-1 * 65533 = 65533
-1 * 65534 = 65534
-1 * 65535 = 65535
-1 * 0 = 0
-1 * 1 = 1
-1 * 2 = 2
-1 * 3 = 3
-2 * 65533 = 65530
-2 * 65534 = 65532
-2 * 65535 = 65534
-2 * 0 = 0
-2 * 1 = 2
-2 * 2 = 4
-2 * 3 = 6
-3 * 65533 = 65527
-3 * 65534 = 65530
-3 * 65535 = 65533
-3 * 0 = 0
-3 * 1 = 3
-3 * 2 = 6
-3 * 3 = 9
-#
-negate 65533 = 3
-negate 65534 = 2
-negate 65535 = 1
-negate 0 = 0
-negate 1 = 65535
-negate 2 = 65534
-negate 3 = 65533
-#
-testReal
-toRational 65533 = 65533 % 1
-toRational 65534 = 65534 % 1
-toRational 65535 = 65535 % 1
-toRational 0 = 0 % 1
-toRational 1 = 1 % 1
-toRational 2 = 2 % 1
-toRational 3 = 3 % 1
-#
-testIntegral
-65533 `divMod`  65533 = (1,0)
-65533 `divMod`  65534 = (0,65533)
-65533 `divMod`  65535 = (0,65533)
-65533 `divMod`  1 = (65533,0)
-65533 `divMod`  2 = (32766,1)
-65533 `divMod`  3 = (21844,1)
-65534 `divMod`  65533 = (1,1)
-65534 `divMod`  65534 = (1,0)
-65534 `divMod`  65535 = (0,65534)
-65534 `divMod`  1 = (65534,0)
-65534 `divMod`  2 = (32767,0)
-65534 `divMod`  3 = (21844,2)
-65535 `divMod`  65533 = (1,2)
-65535 `divMod`  65534 = (1,1)
-65535 `divMod`  65535 = (1,0)
-65535 `divMod`  1 = (65535,0)
-65535 `divMod`  2 = (32767,1)
-65535 `divMod`  3 = (21845,0)
-0 `divMod`  65533 = (0,0)
-0 `divMod`  65534 = (0,0)
-0 `divMod`  65535 = (0,0)
-0 `divMod`  1 = (0,0)
-0 `divMod`  2 = (0,0)
-0 `divMod`  3 = (0,0)
-1 `divMod`  65533 = (0,1)
-1 `divMod`  65534 = (0,1)
-1 `divMod`  65535 = (0,1)
-1 `divMod`  1 = (1,0)
-1 `divMod`  2 = (0,1)
-1 `divMod`  3 = (0,1)
-2 `divMod`  65533 = (0,2)
-2 `divMod`  65534 = (0,2)
-2 `divMod`  65535 = (0,2)
-2 `divMod`  1 = (2,0)
-2 `divMod`  2 = (1,0)
-2 `divMod`  3 = (0,2)
-3 `divMod`  65533 = (0,3)
-3 `divMod`  65534 = (0,3)
-3 `divMod`  65535 = (0,3)
-3 `divMod`  1 = (3,0)
-3 `divMod`  2 = (1,1)
-3 `divMod`  3 = (1,0)
-#
-65533 `div`     65533 = 1
-65533 `div`     65534 = 0
-65533 `div`     65535 = 0
-65533 `div`     1 = 65533
-65533 `div`     2 = 32766
-65533 `div`     3 = 21844
-65534 `div`     65533 = 1
-65534 `div`     65534 = 1
-65534 `div`     65535 = 0
-65534 `div`     1 = 65534
-65534 `div`     2 = 32767
-65534 `div`     3 = 21844
-65535 `div`     65533 = 1
-65535 `div`     65534 = 1
-65535 `div`     65535 = 1
-65535 `div`     1 = 65535
-65535 `div`     2 = 32767
-65535 `div`     3 = 21845
-0 `div`     65533 = 0
-0 `div`     65534 = 0
-0 `div`     65535 = 0
-0 `div`     1 = 0
-0 `div`     2 = 0
-0 `div`     3 = 0
-1 `div`     65533 = 0
-1 `div`     65534 = 0
-1 `div`     65535 = 0
-1 `div`     1 = 1
-1 `div`     2 = 0
-1 `div`     3 = 0
-2 `div`     65533 = 0
-2 `div`     65534 = 0
-2 `div`     65535 = 0
-2 `div`     1 = 2
-2 `div`     2 = 1
-2 `div`     3 = 0
-3 `div`     65533 = 0
-3 `div`     65534 = 0
-3 `div`     65535 = 0
-3 `div`     1 = 3
-3 `div`     2 = 1
-3 `div`     3 = 1
-#
-65533 `mod`     65533 = 0
-65533 `mod`     65534 = 65533
-65533 `mod`     65535 = 65533
-65533 `mod`     1 = 0
-65533 `mod`     2 = 1
-65533 `mod`     3 = 1
-65534 `mod`     65533 = 1
-65534 `mod`     65534 = 0
-65534 `mod`     65535 = 65534
-65534 `mod`     1 = 0
-65534 `mod`     2 = 0
-65534 `mod`     3 = 2
-65535 `mod`     65533 = 2
-65535 `mod`     65534 = 1
-65535 `mod`     65535 = 0
-65535 `mod`     1 = 0
-65535 `mod`     2 = 1
-65535 `mod`     3 = 0
-0 `mod`     65533 = 0
-0 `mod`     65534 = 0
-0 `mod`     65535 = 0
-0 `mod`     1 = 0
-0 `mod`     2 = 0
-0 `mod`     3 = 0
-1 `mod`     65533 = 1
-1 `mod`     65534 = 1
-1 `mod`     65535 = 1
-1 `mod`     1 = 0
-1 `mod`     2 = 1
-1 `mod`     3 = 1
-2 `mod`     65533 = 2
-2 `mod`     65534 = 2
-2 `mod`     65535 = 2
-2 `mod`     1 = 0
-2 `mod`     2 = 0
-2 `mod`     3 = 2
-3 `mod`     65533 = 3
-3 `mod`     65534 = 3
-3 `mod`     65535 = 3
-3 `mod`     1 = 0
-3 `mod`     2 = 1
-3 `mod`     3 = 0
-#
-65533 `quotRem` 65533 = (1,0)
-65533 `quotRem` 65534 = (0,65533)
-65533 `quotRem` 65535 = (0,65533)
-65533 `quotRem` 1 = (65533,0)
-65533 `quotRem` 2 = (32766,1)
-65533 `quotRem` 3 = (21844,1)
-65534 `quotRem` 65533 = (1,1)
-65534 `quotRem` 65534 = (1,0)
-65534 `quotRem` 65535 = (0,65534)
-65534 `quotRem` 1 = (65534,0)
-65534 `quotRem` 2 = (32767,0)
-65534 `quotRem` 3 = (21844,2)
-65535 `quotRem` 65533 = (1,2)
-65535 `quotRem` 65534 = (1,1)
-65535 `quotRem` 65535 = (1,0)
-65535 `quotRem` 1 = (65535,0)
-65535 `quotRem` 2 = (32767,1)
-65535 `quotRem` 3 = (21845,0)
-0 `quotRem` 65533 = (0,0)
-0 `quotRem` 65534 = (0,0)
-0 `quotRem` 65535 = (0,0)
-0 `quotRem` 1 = (0,0)
-0 `quotRem` 2 = (0,0)
-0 `quotRem` 3 = (0,0)
-1 `quotRem` 65533 = (0,1)
-1 `quotRem` 65534 = (0,1)
-1 `quotRem` 65535 = (0,1)
-1 `quotRem` 1 = (1,0)
-1 `quotRem` 2 = (0,1)
-1 `quotRem` 3 = (0,1)
-2 `quotRem` 65533 = (0,2)
-2 `quotRem` 65534 = (0,2)
-2 `quotRem` 65535 = (0,2)
-2 `quotRem` 1 = (2,0)
-2 `quotRem` 2 = (1,0)
-2 `quotRem` 3 = (0,2)
-3 `quotRem` 65533 = (0,3)
-3 `quotRem` 65534 = (0,3)
-3 `quotRem` 65535 = (0,3)
-3 `quotRem` 1 = (3,0)
-3 `quotRem` 2 = (1,1)
-3 `quotRem` 3 = (1,0)
-#
-65533 `quot`    65533 = 1
-65533 `quot`    65534 = 0
-65533 `quot`    65535 = 0
-65533 `quot`    1 = 65533
-65533 `quot`    2 = 32766
-65533 `quot`    3 = 21844
-65534 `quot`    65533 = 1
-65534 `quot`    65534 = 1
-65534 `quot`    65535 = 0
-65534 `quot`    1 = 65534
-65534 `quot`    2 = 32767
-65534 `quot`    3 = 21844
-65535 `quot`    65533 = 1
-65535 `quot`    65534 = 1
-65535 `quot`    65535 = 1
-65535 `quot`    1 = 65535
-65535 `quot`    2 = 32767
-65535 `quot`    3 = 21845
-0 `quot`    65533 = 0
-0 `quot`    65534 = 0
-0 `quot`    65535 = 0
-0 `quot`    1 = 0
-0 `quot`    2 = 0
-0 `quot`    3 = 0
-1 `quot`    65533 = 0
-1 `quot`    65534 = 0
-1 `quot`    65535 = 0
-1 `quot`    1 = 1
-1 `quot`    2 = 0
-1 `quot`    3 = 0
-2 `quot`    65533 = 0
-2 `quot`    65534 = 0
-2 `quot`    65535 = 0
-2 `quot`    1 = 2
-2 `quot`    2 = 1
-2 `quot`    3 = 0
-3 `quot`    65533 = 0
-3 `quot`    65534 = 0
-3 `quot`    65535 = 0
-3 `quot`    1 = 3
-3 `quot`    2 = 1
-3 `quot`    3 = 1
-#
-65533 `rem`     65533 = 0
-65533 `rem`     65534 = 65533
-65533 `rem`     65535 = 65533
-65533 `rem`     1 = 0
-65533 `rem`     2 = 1
-65533 `rem`     3 = 1
-65534 `rem`     65533 = 1
-65534 `rem`     65534 = 0
-65534 `rem`     65535 = 65534
-65534 `rem`     1 = 0
-65534 `rem`     2 = 0
-65534 `rem`     3 = 2
-65535 `rem`     65533 = 2
-65535 `rem`     65534 = 1
-65535 `rem`     65535 = 0
-65535 `rem`     1 = 0
-65535 `rem`     2 = 1
-65535 `rem`     3 = 0
-0 `rem`     65533 = 0
-0 `rem`     65534 = 0
-0 `rem`     65535 = 0
-0 `rem`     1 = 0
-0 `rem`     2 = 0
-0 `rem`     3 = 0
-1 `rem`     65533 = 1
-1 `rem`     65534 = 1
-1 `rem`     65535 = 1
-1 `rem`     1 = 0
-1 `rem`     2 = 1
-1 `rem`     3 = 1
-2 `rem`     65533 = 2
-2 `rem`     65534 = 2
-2 `rem`     65535 = 2
-2 `rem`     1 = 0
-2 `rem`     2 = 0
-2 `rem`     3 = 2
-3 `rem`     65533 = 3
-3 `rem`     65534 = 3
-3 `rem`     65535 = 3
-3 `rem`     1 = 0
-3 `rem`     2 = 1
-3 `rem`     3 = 0
-#
-testConversions
-Integer : [0,0,65535]
-Int     : [0,0,65535]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [0,0,65535]
-Int64   : [0,0,65535]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [0,0,65535]
-Word64  : [0,0,65535]
-testBits
-65533 .&.   65533 = 65533
-65533 .&.   65534 = 65532
-65533 .&.   65535 = 65533
-65533 .&.   1 = 1
-65533 .&.   2 = 0
-65533 .&.   3 = 1
-65534 .&.   65533 = 65532
-65534 .&.   65534 = 65534
-65534 .&.   65535 = 65534
-65534 .&.   1 = 0
-65534 .&.   2 = 2
-65534 .&.   3 = 2
-65535 .&.   65533 = 65533
-65535 .&.   65534 = 65534
-65535 .&.   65535 = 65535
-65535 .&.   1 = 1
-65535 .&.   2 = 2
-65535 .&.   3 = 3
-0 .&.   65533 = 0
-0 .&.   65534 = 0
-0 .&.   65535 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   65533 = 1
-1 .&.   65534 = 0
-1 .&.   65535 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   65533 = 0
-2 .&.   65534 = 2
-2 .&.   65535 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   65533 = 1
-3 .&.   65534 = 2
-3 .&.   65535 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
-65533 .|.   65533 = 65533
-65533 .|.   65534 = 65535
-65533 .|.   65535 = 65535
-65533 .|.   1 = 65533
-65533 .|.   2 = 65535
-65533 .|.   3 = 65535
-65534 .|.   65533 = 65535
-65534 .|.   65534 = 65534
-65534 .|.   65535 = 65535
-65534 .|.   1 = 65535
-65534 .|.   2 = 65534
-65534 .|.   3 = 65535
-65535 .|.   65533 = 65535
-65535 .|.   65534 = 65535
-65535 .|.   65535 = 65535
-65535 .|.   1 = 65535
-65535 .|.   2 = 65535
-65535 .|.   3 = 65535
-0 .|.   65533 = 65533
-0 .|.   65534 = 65534
-0 .|.   65535 = 65535
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   65533 = 65533
-1 .|.   65534 = 65535
-1 .|.   65535 = 65535
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   65533 = 65535
-2 .|.   65534 = 65534
-2 .|.   65535 = 65535
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   65533 = 65535
-3 .|.   65534 = 65535
-3 .|.   65535 = 65535
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
-65533 `xor` 65533 = 0
-65533 `xor` 65534 = 3
-65533 `xor` 65535 = 2
-65533 `xor` 1 = 65532
-65533 `xor` 2 = 65535
-65533 `xor` 3 = 65534
-65534 `xor` 65533 = 3
-65534 `xor` 65534 = 0
-65534 `xor` 65535 = 1
-65534 `xor` 1 = 65535
-65534 `xor` 2 = 65532
-65534 `xor` 3 = 65533
-65535 `xor` 65533 = 2
-65535 `xor` 65534 = 1
-65535 `xor` 65535 = 0
-65535 `xor` 1 = 65534
-65535 `xor` 2 = 65533
-65535 `xor` 3 = 65532
-0 `xor` 65533 = 65533
-0 `xor` 65534 = 65534
-0 `xor` 65535 = 65535
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` 65533 = 65532
-1 `xor` 65534 = 65535
-1 `xor` 65535 = 65534
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` 65533 = 65535
-2 `xor` 65534 = 65532
-2 `xor` 65535 = 65533
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` 65533 = 65534
-3 `xor` 65534 = 65533
-3 `xor` 65535 = 65532
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement 65533 = 2
-complement 65534 = 1
-complement 65535 = 0
-complement 0 = 65535
-complement 1 = 65534
-complement 2 = 65533
-complement 3 = 65532
-#
-65533 `shiftL` 0 = 65533
-65533 `shiftL` 1 = 65530
-65533 `shiftL` 2 = 65524
-65533 `shiftL` 3 = 65512
-65533 `shiftL` 32 = 0
-65534 `shiftL` 0 = 65534
-65534 `shiftL` 1 = 65532
-65534 `shiftL` 2 = 65528
-65534 `shiftL` 3 = 65520
-65534 `shiftL` 32 = 0
-65535 `shiftL` 0 = 65535
-65535 `shiftL` 1 = 65534
-65535 `shiftL` 2 = 65532
-65535 `shiftL` 3 = 65528
-65535 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
-65533 `shiftR` 0 = 65533
-65533 `shiftR` 1 = 32766
-65533 `shiftR` 2 = 16383
-65533 `shiftR` 3 = 8191
-65533 `shiftR` 32 = 0
-65534 `shiftR` 0 = 65534
-65534 `shiftR` 1 = 32767
-65534 `shiftR` 2 = 16383
-65534 `shiftR` 3 = 8191
-65534 `shiftR` 32 = 0
-65535 `shiftR` 0 = 65535
-65535 `shiftR` 1 = 32767
-65535 `shiftR` 2 = 16383
-65535 `shiftR` 3 = 8191
-65535 `shiftR` 32 = 0
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
-65533 `rotate` -3 = 49151
-65533 `rotate` -2 = 32767
-65533 `rotate` -1 = 65534
-65533 `rotate` 0 = 65533
-65533 `rotate` 1 = 65531
-65533 `rotate` 2 = 65527
-65533 `rotate` 3 = 65519
-65534 `rotate` -3 = 57343
-65534 `rotate` -2 = 49151
-65534 `rotate` -1 = 32767
-65534 `rotate` 0 = 65534
-65534 `rotate` 1 = 65533
-65534 `rotate` 2 = 65531
-65534 `rotate` 3 = 65527
-65535 `rotate` -3 = 65535
-65535 `rotate` -2 = 65535
-65535 `rotate` -1 = 65535
-65535 `rotate` 0 = 65535
-65535 `rotate` 1 = 65535
-65535 `rotate` 2 = 65535
-65535 `rotate` 3 = 65535
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 8192
-1 `rotate` -2 = 16384
-1 `rotate` -1 = 32768
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 16384
-2 `rotate` -2 = 32768
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 24576
-3 `rotate` -2 = 49152
-3 `rotate` -1 = 32769
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
-65533 `setBit` 0 = 65533
-65533 `setBit` 1 = 65535
-65533 `setBit` 2 = 65533
-65533 `setBit` 3 = 65533
-65533 `setBit` 32 = 65533
-65534 `setBit` 0 = 65535
-65534 `setBit` 1 = 65534
-65534 `setBit` 2 = 65534
-65534 `setBit` 3 = 65534
-65534 `setBit` 32 = 65534
-65535 `setBit` 0 = 65535
-65535 `setBit` 1 = 65535
-65535 `setBit` 2 = 65535
-65535 `setBit` 3 = 65535
-65535 `setBit` 32 = 65535
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
-65533 `clearBit` 0 = 65532
-65533 `clearBit` 1 = 65533
-65533 `clearBit` 2 = 65529
-65533 `clearBit` 3 = 65525
-65533 `clearBit` 32 = 65533
-65534 `clearBit` 0 = 65534
-65534 `clearBit` 1 = 65532
-65534 `clearBit` 2 = 65530
-65534 `clearBit` 3 = 65526
-65534 `clearBit` 32 = 65534
-65535 `clearBit` 0 = 65534
-65535 `clearBit` 1 = 65533
-65535 `clearBit` 2 = 65531
-65535 `clearBit` 3 = 65527
-65535 `clearBit` 32 = 65535
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
-65533 `complementBit` 0 = 65532
-65533 `complementBit` 1 = 65535
-65533 `complementBit` 2 = 65529
-65533 `complementBit` 3 = 65525
-65533 `complementBit` 32 = 65533
-65534 `complementBit` 0 = 65535
-65534 `complementBit` 1 = 65532
-65534 `complementBit` 2 = 65530
-65534 `complementBit` 3 = 65526
-65534 `complementBit` 32 = 65534
-65535 `complementBit` 0 = 65534
-65535 `complementBit` 1 = 65533
-65535 `complementBit` 2 = 65531
-65535 `complementBit` 3 = 65527
-65535 `complementBit` 32 = 65535
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
-65533 `testBit` 0 = True
-65533 `testBit` 1 = False
-65533 `testBit` 2 = True
-65533 `testBit` 3 = True
-65533 `testBit` 32 = False
-65534 `testBit` 0 = False
-65534 `testBit` 1 = True
-65534 `testBit` 2 = True
-65534 `testBit` 3 = True
-65534 `testBit` 32 = False
-65535 `testBit` 0 = True
-65535 `testBit` 1 = True
-65535 `testBit` 2 = True
-65535 `testBit` 3 = True
-65535 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize 65533 = 16
-bitSize 65534 = 16
-bitSize 65535 = 16
-bitSize 0 = 16
-bitSize 1 = 16
-bitSize 2 = 16
-bitSize 3 = 16
-#
-isSigned 65533 = False
-isSigned 65534 = False
-isSigned 65535 = False
-isSigned 0 = False
-isSigned 1 = False
-isSigned 2 = False
-isSigned 3 = False
-#
---------------------------------
---Testing Word32
---------------------------------
-testBounded
-(4294967295,0,1)
-(4294967294,4294967295,0)
-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
-[4294967293,4294967294,4294967295,0,1,2,3]
-[4294967293,4294967294,4294967295,0,1,2,3]
-testEq
-4294967293 == 4294967293 = True
-4294967293 == 4294967294 = False
-4294967293 == 4294967295 = False
-4294967293 == 0 = False
-4294967293 == 1 = False
-4294967293 == 2 = False
-4294967293 == 3 = False
-4294967294 == 4294967293 = False
-4294967294 == 4294967294 = True
-4294967294 == 4294967295 = False
-4294967294 == 0 = False
-4294967294 == 1 = False
-4294967294 == 2 = False
-4294967294 == 3 = False
-4294967295 == 4294967293 = False
-4294967295 == 4294967294 = False
-4294967295 == 4294967295 = True
-4294967295 == 0 = False
-4294967295 == 1 = False
-4294967295 == 2 = False
-4294967295 == 3 = False
-0 == 4294967293 = False
-0 == 4294967294 = False
-0 == 4294967295 = False
-0 == 0 = True
-0 == 1 = False
-0 == 2 = False
-0 == 3 = False
-1 == 4294967293 = False
-1 == 4294967294 = False
-1 == 4294967295 = False
-1 == 0 = False
-1 == 1 = True
-1 == 2 = False
-1 == 3 = False
-2 == 4294967293 = False
-2 == 4294967294 = False
-2 == 4294967295 = False
-2 == 0 = False
-2 == 1 = False
-2 == 2 = True
-2 == 3 = False
-3 == 4294967293 = False
-3 == 4294967294 = False
-3 == 4294967295 = False
-3 == 0 = False
-3 == 1 = False
-3 == 2 = False
-3 == 3 = True
-#
-4294967293 /= 4294967293 = False
-4294967293 /= 4294967294 = True
-4294967293 /= 4294967295 = True
-4294967293 /= 0 = True
-4294967293 /= 1 = True
-4294967293 /= 2 = True
-4294967293 /= 3 = True
-4294967294 /= 4294967293 = True
-4294967294 /= 4294967294 = False
-4294967294 /= 4294967295 = True
-4294967294 /= 0 = True
-4294967294 /= 1 = True
-4294967294 /= 2 = True
-4294967294 /= 3 = True
-4294967295 /= 4294967293 = True
-4294967295 /= 4294967294 = True
-4294967295 /= 4294967295 = False
-4294967295 /= 0 = True
-4294967295 /= 1 = True
-4294967295 /= 2 = True
-4294967295 /= 3 = True
-0 /= 4294967293 = True
-0 /= 4294967294 = True
-0 /= 4294967295 = True
-0 /= 0 = False
-0 /= 1 = True
-0 /= 2 = True
-0 /= 3 = True
-1 /= 4294967293 = True
-1 /= 4294967294 = True
-1 /= 4294967295 = True
-1 /= 0 = True
-1 /= 1 = False
-1 /= 2 = True
-1 /= 3 = True
-2 /= 4294967293 = True
-2 /= 4294967294 = True
-2 /= 4294967295 = True
-2 /= 0 = True
-2 /= 1 = True
-2 /= 2 = False
-2 /= 3 = True
-3 /= 4294967293 = True
-3 /= 4294967294 = True
-3 /= 4294967295 = True
-3 /= 0 = True
-3 /= 1 = True
-3 /= 2 = True
-3 /= 3 = False
-#
-testOrd
-4294967293 <= 4294967293 = True
-4294967293 <= 4294967294 = True
-4294967293 <= 4294967295 = True
-4294967293 <= 0 = False
-4294967293 <= 1 = False
-4294967293 <= 2 = False
-4294967293 <= 3 = False
-4294967294 <= 4294967293 = False
-4294967294 <= 4294967294 = True
-4294967294 <= 4294967295 = True
-4294967294 <= 0 = False
-4294967294 <= 1 = False
-4294967294 <= 2 = False
-4294967294 <= 3 = False
-4294967295 <= 4294967293 = False
-4294967295 <= 4294967294 = False
-4294967295 <= 4294967295 = True
-4294967295 <= 0 = False
-4294967295 <= 1 = False
-4294967295 <= 2 = False
-4294967295 <= 3 = False
-0 <= 4294967293 = True
-0 <= 4294967294 = True
-0 <= 4294967295 = True
-0 <= 0 = True
-0 <= 1 = True
-0 <= 2 = True
-0 <= 3 = True
-1 <= 4294967293 = True
-1 <= 4294967294 = True
-1 <= 4294967295 = True
-1 <= 0 = False
-1 <= 1 = True
-1 <= 2 = True
-1 <= 3 = True
-2 <= 4294967293 = True
-2 <= 4294967294 = True
-2 <= 4294967295 = True
-2 <= 0 = False
-2 <= 1 = False
-2 <= 2 = True
-2 <= 3 = True
-3 <= 4294967293 = True
-3 <= 4294967294 = True
-3 <= 4294967295 = True
-3 <= 0 = False
-3 <= 1 = False
-3 <= 2 = False
-3 <= 3 = True
-#
-4294967293 <  4294967293 = False
-4294967293 <  4294967294 = True
-4294967293 <  4294967295 = True
-4294967293 <  0 = False
-4294967293 <  1 = False
-4294967293 <  2 = False
-4294967293 <  3 = False
-4294967294 <  4294967293 = False
-4294967294 <  4294967294 = False
-4294967294 <  4294967295 = True
-4294967294 <  0 = False
-4294967294 <  1 = False
-4294967294 <  2 = False
-4294967294 <  3 = False
-4294967295 <  4294967293 = False
-4294967295 <  4294967294 = False
-4294967295 <  4294967295 = False
-4294967295 <  0 = False
-4294967295 <  1 = False
-4294967295 <  2 = False
-4294967295 <  3 = False
-0 <  4294967293 = True
-0 <  4294967294 = True
-0 <  4294967295 = True
-0 <  0 = False
-0 <  1 = True
-0 <  2 = True
-0 <  3 = True
-1 <  4294967293 = True
-1 <  4294967294 = True
-1 <  4294967295 = True
-1 <  0 = False
-1 <  1 = False
-1 <  2 = True
-1 <  3 = True
-2 <  4294967293 = True
-2 <  4294967294 = True
-2 <  4294967295 = True
-2 <  0 = False
-2 <  1 = False
-2 <  2 = False
-2 <  3 = True
-3 <  4294967293 = True
-3 <  4294967294 = True
-3 <  4294967295 = True
-3 <  0 = False
-3 <  1 = False
-3 <  2 = False
-3 <  3 = False
-#
-4294967293 >  4294967293 = False
-4294967293 >  4294967294 = False
-4294967293 >  4294967295 = False
-4294967293 >  0 = True
-4294967293 >  1 = True
-4294967293 >  2 = True
-4294967293 >  3 = True
-4294967294 >  4294967293 = True
-4294967294 >  4294967294 = False
-4294967294 >  4294967295 = False
-4294967294 >  0 = True
-4294967294 >  1 = True
-4294967294 >  2 = True
-4294967294 >  3 = True
-4294967295 >  4294967293 = True
-4294967295 >  4294967294 = True
-4294967295 >  4294967295 = False
-4294967295 >  0 = True
-4294967295 >  1 = True
-4294967295 >  2 = True
-4294967295 >  3 = True
-0 >  4294967293 = False
-0 >  4294967294 = False
-0 >  4294967295 = False
-0 >  0 = False
-0 >  1 = False
-0 >  2 = False
-0 >  3 = False
-1 >  4294967293 = False
-1 >  4294967294 = False
-1 >  4294967295 = False
-1 >  0 = True
-1 >  1 = False
-1 >  2 = False
-1 >  3 = False
-2 >  4294967293 = False
-2 >  4294967294 = False
-2 >  4294967295 = False
-2 >  0 = True
-2 >  1 = True
-2 >  2 = False
-2 >  3 = False
-3 >  4294967293 = False
-3 >  4294967294 = False
-3 >  4294967295 = False
-3 >  0 = True
-3 >  1 = True
-3 >  2 = True
-3 >  3 = False
-#
-4294967293 >= 4294967293 = True
-4294967293 >= 4294967294 = False
-4294967293 >= 4294967295 = False
-4294967293 >= 0 = True
-4294967293 >= 1 = True
-4294967293 >= 2 = True
-4294967293 >= 3 = True
-4294967294 >= 4294967293 = True
-4294967294 >= 4294967294 = True
-4294967294 >= 4294967295 = False
-4294967294 >= 0 = True
-4294967294 >= 1 = True
-4294967294 >= 2 = True
-4294967294 >= 3 = True
-4294967295 >= 4294967293 = True
-4294967295 >= 4294967294 = True
-4294967295 >= 4294967295 = True
-4294967295 >= 0 = True
-4294967295 >= 1 = True
-4294967295 >= 2 = True
-4294967295 >= 3 = True
-0 >= 4294967293 = False
-0 >= 4294967294 = False
-0 >= 4294967295 = False
-0 >= 0 = True
-0 >= 1 = False
-0 >= 2 = False
-0 >= 3 = False
-1 >= 4294967293 = False
-1 >= 4294967294 = False
-1 >= 4294967295 = False
-1 >= 0 = True
-1 >= 1 = True
-1 >= 2 = False
-1 >= 3 = False
-2 >= 4294967293 = False
-2 >= 4294967294 = False
-2 >= 4294967295 = False
-2 >= 0 = True
-2 >= 1 = True
-2 >= 2 = True
-2 >= 3 = False
-3 >= 4294967293 = False
-3 >= 4294967294 = False
-3 >= 4294967295 = False
-3 >= 0 = True
-3 >= 1 = True
-3 >= 2 = True
-3 >= 3 = True
-#
-4294967293 `compare` 4294967293 = EQ
-4294967293 `compare` 4294967294 = LT
-4294967293 `compare` 4294967295 = LT
-4294967293 `compare` 0 = GT
-4294967293 `compare` 1 = GT
-4294967293 `compare` 2 = GT
-4294967293 `compare` 3 = GT
-4294967294 `compare` 4294967293 = GT
-4294967294 `compare` 4294967294 = EQ
-4294967294 `compare` 4294967295 = LT
-4294967294 `compare` 0 = GT
-4294967294 `compare` 1 = GT
-4294967294 `compare` 2 = GT
-4294967294 `compare` 3 = GT
-4294967295 `compare` 4294967293 = GT
-4294967295 `compare` 4294967294 = GT
-4294967295 `compare` 4294967295 = EQ
-4294967295 `compare` 0 = GT
-4294967295 `compare` 1 = GT
-4294967295 `compare` 2 = GT
-4294967295 `compare` 3 = GT
-0 `compare` 4294967293 = LT
-0 `compare` 4294967294 = LT
-0 `compare` 4294967295 = LT
-0 `compare` 0 = EQ
-0 `compare` 1 = LT
-0 `compare` 2 = LT
-0 `compare` 3 = LT
-1 `compare` 4294967293 = LT
-1 `compare` 4294967294 = LT
-1 `compare` 4294967295 = LT
-1 `compare` 0 = GT
-1 `compare` 1 = EQ
-1 `compare` 2 = LT
-1 `compare` 3 = LT
-2 `compare` 4294967293 = LT
-2 `compare` 4294967294 = LT
-2 `compare` 4294967295 = LT
-2 `compare` 0 = GT
-2 `compare` 1 = GT
-2 `compare` 2 = EQ
-2 `compare` 3 = LT
-3 `compare` 4294967293 = LT
-3 `compare` 4294967294 = LT
-3 `compare` 4294967295 = LT
-3 `compare` 0 = GT
-3 `compare` 1 = GT
-3 `compare` 2 = GT
-3 `compare` 3 = EQ
-#
-testNum
-4294967293 + 4294967293 = 4294967290
-4294967293 + 4294967294 = 4294967291
-4294967293 + 4294967295 = 4294967292
-4294967293 + 0 = 4294967293
-4294967293 + 1 = 4294967294
-4294967293 + 2 = 4294967295
-4294967293 + 3 = 0
-4294967294 + 4294967293 = 4294967291
-4294967294 + 4294967294 = 4294967292
-4294967294 + 4294967295 = 4294967293
-4294967294 + 0 = 4294967294
-4294967294 + 1 = 4294967295
-4294967294 + 2 = 0
-4294967294 + 3 = 1
-4294967295 + 4294967293 = 4294967292
-4294967295 + 4294967294 = 4294967293
-4294967295 + 4294967295 = 4294967294
-4294967295 + 0 = 4294967295
-4294967295 + 1 = 0
-4294967295 + 2 = 1
-4294967295 + 3 = 2
-0 + 4294967293 = 4294967293
-0 + 4294967294 = 4294967294
-0 + 4294967295 = 4294967295
-0 + 0 = 0
-0 + 1 = 1
-0 + 2 = 2
-0 + 3 = 3
-1 + 4294967293 = 4294967294
-1 + 4294967294 = 4294967295
-1 + 4294967295 = 0
-1 + 0 = 1
-1 + 1 = 2
-1 + 2 = 3
-1 + 3 = 4
-2 + 4294967293 = 4294967295
-2 + 4294967294 = 0
-2 + 4294967295 = 1
-2 + 0 = 2
-2 + 1 = 3
-2 + 2 = 4
-2 + 3 = 5
-3 + 4294967293 = 0
-3 + 4294967294 = 1
-3 + 4294967295 = 2
-3 + 0 = 3
-3 + 1 = 4
-3 + 2 = 5
-3 + 3 = 6
-#
-4294967293 - 4294967293 = 0
-4294967293 - 4294967294 = 4294967295
-4294967293 - 4294967295 = 4294967294
-4294967293 - 0 = 4294967293
-4294967293 - 1 = 4294967292
-4294967293 - 2 = 4294967291
-4294967293 - 3 = 4294967290
-4294967294 - 4294967293 = 1
-4294967294 - 4294967294 = 0
-4294967294 - 4294967295 = 4294967295
-4294967294 - 0 = 4294967294
-4294967294 - 1 = 4294967293
-4294967294 - 2 = 4294967292
-4294967294 - 3 = 4294967291
-4294967295 - 4294967293 = 2
-4294967295 - 4294967294 = 1
-4294967295 - 4294967295 = 0
-4294967295 - 0 = 4294967295
-4294967295 - 1 = 4294967294
-4294967295 - 2 = 4294967293
-4294967295 - 3 = 4294967292
-0 - 4294967293 = 3
-0 - 4294967294 = 2
-0 - 4294967295 = 1
-0 - 0 = 0
-0 - 1 = 4294967295
-0 - 2 = 4294967294
-0 - 3 = 4294967293
-1 - 4294967293 = 4
-1 - 4294967294 = 3
-1 - 4294967295 = 2
-1 - 0 = 1
-1 - 1 = 0
-1 - 2 = 4294967295
-1 - 3 = 4294967294
-2 - 4294967293 = 5
-2 - 4294967294 = 4
-2 - 4294967295 = 3
-2 - 0 = 2
-2 - 1 = 1
-2 - 2 = 0
-2 - 3 = 4294967295
-3 - 4294967293 = 6
-3 - 4294967294 = 5
-3 - 4294967295 = 4
-3 - 0 = 3
-3 - 1 = 2
-3 - 2 = 1
-3 - 3 = 0
-#
-4294967293 * 4294967293 = 9
-4294967293 * 4294967294 = 6
-4294967293 * 4294967295 = 3
-4294967293 * 0 = 0
-4294967293 * 1 = 4294967293
-4294967293 * 2 = 4294967290
-4294967293 * 3 = 4294967287
-4294967294 * 4294967293 = 6
-4294967294 * 4294967294 = 4
-4294967294 * 4294967295 = 2
-4294967294 * 0 = 0
-4294967294 * 1 = 4294967294
-4294967294 * 2 = 4294967292
-4294967294 * 3 = 4294967290
-4294967295 * 4294967293 = 3
-4294967295 * 4294967294 = 2
-4294967295 * 4294967295 = 1
-4294967295 * 0 = 0
-4294967295 * 1 = 4294967295
-4294967295 * 2 = 4294967294
-4294967295 * 3 = 4294967293
-0 * 4294967293 = 0
-0 * 4294967294 = 0
-0 * 4294967295 = 0
-0 * 0 = 0
-0 * 1 = 0
-0 * 2 = 0
-0 * 3 = 0
-1 * 4294967293 = 4294967293
-1 * 4294967294 = 4294967294
-1 * 4294967295 = 4294967295
-1 * 0 = 0
-1 * 1 = 1
-1 * 2 = 2
-1 * 3 = 3
-2 * 4294967293 = 4294967290
-2 * 4294967294 = 4294967292
-2 * 4294967295 = 4294967294
-2 * 0 = 0
-2 * 1 = 2
-2 * 2 = 4
-2 * 3 = 6
-3 * 4294967293 = 4294967287
-3 * 4294967294 = 4294967290
-3 * 4294967295 = 4294967293
-3 * 0 = 0
-3 * 1 = 3
-3 * 2 = 6
-3 * 3 = 9
-#
-negate 4294967293 = 3
-negate 4294967294 = 2
-negate 4294967295 = 1
-negate 0 = 0
-negate 1 = 4294967295
-negate 2 = 4294967294
-negate 3 = 4294967293
-#
-testReal
-toRational 4294967293 = 4294967293 % 1
-toRational 4294967294 = 4294967294 % 1
-toRational 4294967295 = 4294967295 % 1
-toRational 0 = 0 % 1
-toRational 1 = 1 % 1
-toRational 2 = 2 % 1
-toRational 3 = 3 % 1
-#
-testIntegral
-4294967293 `divMod`  4294967293 = (1,0)
-4294967293 `divMod`  4294967294 = (0,4294967293)
-4294967293 `divMod`  4294967295 = (0,4294967293)
-4294967293 `divMod`  1 = (4294967293,0)
-4294967293 `divMod`  2 = (2147483646,1)
-4294967293 `divMod`  3 = (1431655764,1)
-4294967294 `divMod`  4294967293 = (1,1)
-4294967294 `divMod`  4294967294 = (1,0)
-4294967294 `divMod`  4294967295 = (0,4294967294)
-4294967294 `divMod`  1 = (4294967294,0)
-4294967294 `divMod`  2 = (2147483647,0)
-4294967294 `divMod`  3 = (1431655764,2)
-4294967295 `divMod`  4294967293 = (1,2)
-4294967295 `divMod`  4294967294 = (1,1)
-4294967295 `divMod`  4294967295 = (1,0)
-4294967295 `divMod`  1 = (4294967295,0)
-4294967295 `divMod`  2 = (2147483647,1)
-4294967295 `divMod`  3 = (1431655765,0)
-0 `divMod`  4294967293 = (0,0)
-0 `divMod`  4294967294 = (0,0)
-0 `divMod`  4294967295 = (0,0)
-0 `divMod`  1 = (0,0)
-0 `divMod`  2 = (0,0)
-0 `divMod`  3 = (0,0)
-1 `divMod`  4294967293 = (0,1)
-1 `divMod`  4294967294 = (0,1)
-1 `divMod`  4294967295 = (0,1)
-1 `divMod`  1 = (1,0)
-1 `divMod`  2 = (0,1)
-1 `divMod`  3 = (0,1)
-2 `divMod`  4294967293 = (0,2)
-2 `divMod`  4294967294 = (0,2)
-2 `divMod`  4294967295 = (0,2)
-2 `divMod`  1 = (2,0)
-2 `divMod`  2 = (1,0)
-2 `divMod`  3 = (0,2)
-3 `divMod`  4294967293 = (0,3)
-3 `divMod`  4294967294 = (0,3)
-3 `divMod`  4294967295 = (0,3)
-3 `divMod`  1 = (3,0)
-3 `divMod`  2 = (1,1)
-3 `divMod`  3 = (1,0)
-#
-4294967293 `div`     4294967293 = 1
-4294967293 `div`     4294967294 = 0
-4294967293 `div`     4294967295 = 0
-4294967293 `div`     1 = 4294967293
-4294967293 `div`     2 = 2147483646
-4294967293 `div`     3 = 1431655764
-4294967294 `div`     4294967293 = 1
-4294967294 `div`     4294967294 = 1
-4294967294 `div`     4294967295 = 0
-4294967294 `div`     1 = 4294967294
-4294967294 `div`     2 = 2147483647
-4294967294 `div`     3 = 1431655764
-4294967295 `div`     4294967293 = 1
-4294967295 `div`     4294967294 = 1
-4294967295 `div`     4294967295 = 1
-4294967295 `div`     1 = 4294967295
-4294967295 `div`     2 = 2147483647
-4294967295 `div`     3 = 1431655765
-0 `div`     4294967293 = 0
-0 `div`     4294967294 = 0
-0 `div`     4294967295 = 0
-0 `div`     1 = 0
-0 `div`     2 = 0
-0 `div`     3 = 0
-1 `div`     4294967293 = 0
-1 `div`     4294967294 = 0
-1 `div`     4294967295 = 0
-1 `div`     1 = 1
-1 `div`     2 = 0
-1 `div`     3 = 0
-2 `div`     4294967293 = 0
-2 `div`     4294967294 = 0
-2 `div`     4294967295 = 0
-2 `div`     1 = 2
-2 `div`     2 = 1
-2 `div`     3 = 0
-3 `div`     4294967293 = 0
-3 `div`     4294967294 = 0
-3 `div`     4294967295 = 0
-3 `div`     1 = 3
-3 `div`     2 = 1
-3 `div`     3 = 1
-#
-4294967293 `mod`     4294967293 = 0
-4294967293 `mod`     4294967294 = 4294967293
-4294967293 `mod`     4294967295 = 4294967293
-4294967293 `mod`     1 = 0
-4294967293 `mod`     2 = 1
-4294967293 `mod`     3 = 1
-4294967294 `mod`     4294967293 = 1
-4294967294 `mod`     4294967294 = 0
-4294967294 `mod`     4294967295 = 4294967294
-4294967294 `mod`     1 = 0
-4294967294 `mod`     2 = 0
-4294967294 `mod`     3 = 2
-4294967295 `mod`     4294967293 = 2
-4294967295 `mod`     4294967294 = 1
-4294967295 `mod`     4294967295 = 0
-4294967295 `mod`     1 = 0
-4294967295 `mod`     2 = 1
-4294967295 `mod`     3 = 0
-0 `mod`     4294967293 = 0
-0 `mod`     4294967294 = 0
-0 `mod`     4294967295 = 0
-0 `mod`     1 = 0
-0 `mod`     2 = 0
-0 `mod`     3 = 0
-1 `mod`     4294967293 = 1
-1 `mod`     4294967294 = 1
-1 `mod`     4294967295 = 1
-1 `mod`     1 = 0
-1 `mod`     2 = 1
-1 `mod`     3 = 1
-2 `mod`     4294967293 = 2
-2 `mod`     4294967294 = 2
-2 `mod`     4294967295 = 2
-2 `mod`     1 = 0
-2 `mod`     2 = 0
-2 `mod`     3 = 2
-3 `mod`     4294967293 = 3
-3 `mod`     4294967294 = 3
-3 `mod`     4294967295 = 3
-3 `mod`     1 = 0
-3 `mod`     2 = 1
-3 `mod`     3 = 0
-#
-4294967293 `quotRem` 4294967293 = (1,0)
-4294967293 `quotRem` 4294967294 = (0,4294967293)
-4294967293 `quotRem` 4294967295 = (0,4294967293)
-4294967293 `quotRem` 1 = (4294967293,0)
-4294967293 `quotRem` 2 = (2147483646,1)
-4294967293 `quotRem` 3 = (1431655764,1)
-4294967294 `quotRem` 4294967293 = (1,1)
-4294967294 `quotRem` 4294967294 = (1,0)
-4294967294 `quotRem` 4294967295 = (0,4294967294)
-4294967294 `quotRem` 1 = (4294967294,0)
-4294967294 `quotRem` 2 = (2147483647,0)
-4294967294 `quotRem` 3 = (1431655764,2)
-4294967295 `quotRem` 4294967293 = (1,2)
-4294967295 `quotRem` 4294967294 = (1,1)
-4294967295 `quotRem` 4294967295 = (1,0)
-4294967295 `quotRem` 1 = (4294967295,0)
-4294967295 `quotRem` 2 = (2147483647,1)
-4294967295 `quotRem` 3 = (1431655765,0)
-0 `quotRem` 4294967293 = (0,0)
-0 `quotRem` 4294967294 = (0,0)
-0 `quotRem` 4294967295 = (0,0)
-0 `quotRem` 1 = (0,0)
-0 `quotRem` 2 = (0,0)
-0 `quotRem` 3 = (0,0)
-1 `quotRem` 4294967293 = (0,1)
-1 `quotRem` 4294967294 = (0,1)
-1 `quotRem` 4294967295 = (0,1)
-1 `quotRem` 1 = (1,0)
-1 `quotRem` 2 = (0,1)
-1 `quotRem` 3 = (0,1)
-2 `quotRem` 4294967293 = (0,2)
-2 `quotRem` 4294967294 = (0,2)
-2 `quotRem` 4294967295 = (0,2)
-2 `quotRem` 1 = (2,0)
-2 `quotRem` 2 = (1,0)
-2 `quotRem` 3 = (0,2)
-3 `quotRem` 4294967293 = (0,3)
-3 `quotRem` 4294967294 = (0,3)
-3 `quotRem` 4294967295 = (0,3)
-3 `quotRem` 1 = (3,0)
-3 `quotRem` 2 = (1,1)
-3 `quotRem` 3 = (1,0)
-#
-4294967293 `quot`    4294967293 = 1
-4294967293 `quot`    4294967294 = 0
-4294967293 `quot`    4294967295 = 0
-4294967293 `quot`    1 = 4294967293
-4294967293 `quot`    2 = 2147483646
-4294967293 `quot`    3 = 1431655764
-4294967294 `quot`    4294967293 = 1
-4294967294 `quot`    4294967294 = 1
-4294967294 `quot`    4294967295 = 0
-4294967294 `quot`    1 = 4294967294
-4294967294 `quot`    2 = 2147483647
-4294967294 `quot`    3 = 1431655764
-4294967295 `quot`    4294967293 = 1
-4294967295 `quot`    4294967294 = 1
-4294967295 `quot`    4294967295 = 1
-4294967295 `quot`    1 = 4294967295
-4294967295 `quot`    2 = 2147483647
-4294967295 `quot`    3 = 1431655765
-0 `quot`    4294967293 = 0
-0 `quot`    4294967294 = 0
-0 `quot`    4294967295 = 0
-0 `quot`    1 = 0
-0 `quot`    2 = 0
-0 `quot`    3 = 0
-1 `quot`    4294967293 = 0
-1 `quot`    4294967294 = 0
-1 `quot`    4294967295 = 0
-1 `quot`    1 = 1
-1 `quot`    2 = 0
-1 `quot`    3 = 0
-2 `quot`    4294967293 = 0
-2 `quot`    4294967294 = 0
-2 `quot`    4294967295 = 0
-2 `quot`    1 = 2
-2 `quot`    2 = 1
-2 `quot`    3 = 0
-3 `quot`    4294967293 = 0
-3 `quot`    4294967294 = 0
-3 `quot`    4294967295 = 0
-3 `quot`    1 = 3
-3 `quot`    2 = 1
-3 `quot`    3 = 1
-#
-4294967293 `rem`     4294967293 = 0
-4294967293 `rem`     4294967294 = 4294967293
-4294967293 `rem`     4294967295 = 4294967293
-4294967293 `rem`     1 = 0
-4294967293 `rem`     2 = 1
-4294967293 `rem`     3 = 1
-4294967294 `rem`     4294967293 = 1
-4294967294 `rem`     4294967294 = 0
-4294967294 `rem`     4294967295 = 4294967294
-4294967294 `rem`     1 = 0
-4294967294 `rem`     2 = 0
-4294967294 `rem`     3 = 2
-4294967295 `rem`     4294967293 = 2
-4294967295 `rem`     4294967294 = 1
-4294967295 `rem`     4294967295 = 0
-4294967295 `rem`     1 = 0
-4294967295 `rem`     2 = 1
-4294967295 `rem`     3 = 0
-0 `rem`     4294967293 = 0
-0 `rem`     4294967294 = 0
-0 `rem`     4294967295 = 0
-0 `rem`     1 = 0
-0 `rem`     2 = 0
-0 `rem`     3 = 0
-1 `rem`     4294967293 = 1
-1 `rem`     4294967294 = 1
-1 `rem`     4294967295 = 1
-1 `rem`     1 = 0
-1 `rem`     2 = 1
-1 `rem`     3 = 1
-2 `rem`     4294967293 = 2
-2 `rem`     4294967294 = 2
-2 `rem`     4294967295 = 2
-2 `rem`     1 = 0
-2 `rem`     2 = 0
-2 `rem`     3 = 2
-3 `rem`     4294967293 = 3
-3 `rem`     4294967294 = 3
-3 `rem`     4294967295 = 3
-3 `rem`     1 = 0
-3 `rem`     2 = 1
-3 `rem`     3 = 0
-#
-testConversions
-Integer : [0,0,4294967295]
-Int     : [0,0,-1]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [0,0,-1]
-Int64   : [0,0,4294967295]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [0,0,4294967295]
-Word64  : [0,0,4294967295]
-testBits
-4294967293 .&.   4294967293 = 4294967293
-4294967293 .&.   4294967294 = 4294967292
-4294967293 .&.   4294967295 = 4294967293
-4294967293 .&.   1 = 1
-4294967293 .&.   2 = 0
-4294967293 .&.   3 = 1
-4294967294 .&.   4294967293 = 4294967292
-4294967294 .&.   4294967294 = 4294967294
-4294967294 .&.   4294967295 = 4294967294
-4294967294 .&.   1 = 0
-4294967294 .&.   2 = 2
-4294967294 .&.   3 = 2
-4294967295 .&.   4294967293 = 4294967293
-4294967295 .&.   4294967294 = 4294967294
-4294967295 .&.   4294967295 = 4294967295
-4294967295 .&.   1 = 1
-4294967295 .&.   2 = 2
-4294967295 .&.   3 = 3
-0 .&.   4294967293 = 0
-0 .&.   4294967294 = 0
-0 .&.   4294967295 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   4294967293 = 1
-1 .&.   4294967294 = 0
-1 .&.   4294967295 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   4294967293 = 0
-2 .&.   4294967294 = 2
-2 .&.   4294967295 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   4294967293 = 1
-3 .&.   4294967294 = 2
-3 .&.   4294967295 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
-4294967293 .|.   4294967293 = 4294967293
-4294967293 .|.   4294967294 = 4294967295
-4294967293 .|.   4294967295 = 4294967295
-4294967293 .|.   1 = 4294967293
-4294967293 .|.   2 = 4294967295
-4294967293 .|.   3 = 4294967295
-4294967294 .|.   4294967293 = 4294967295
-4294967294 .|.   4294967294 = 4294967294
-4294967294 .|.   4294967295 = 4294967295
-4294967294 .|.   1 = 4294967295
-4294967294 .|.   2 = 4294967294
-4294967294 .|.   3 = 4294967295
-4294967295 .|.   4294967293 = 4294967295
-4294967295 .|.   4294967294 = 4294967295
-4294967295 .|.   4294967295 = 4294967295
-4294967295 .|.   1 = 4294967295
-4294967295 .|.   2 = 4294967295
-4294967295 .|.   3 = 4294967295
-0 .|.   4294967293 = 4294967293
-0 .|.   4294967294 = 4294967294
-0 .|.   4294967295 = 4294967295
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   4294967293 = 4294967293
-1 .|.   4294967294 = 4294967295
-1 .|.   4294967295 = 4294967295
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   4294967293 = 4294967295
-2 .|.   4294967294 = 4294967294
-2 .|.   4294967295 = 4294967295
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   4294967293 = 4294967295
-3 .|.   4294967294 = 4294967295
-3 .|.   4294967295 = 4294967295
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
-4294967293 `xor` 4294967293 = 0
-4294967293 `xor` 4294967294 = 3
-4294967293 `xor` 4294967295 = 2
-4294967293 `xor` 1 = 4294967292
-4294967293 `xor` 2 = 4294967295
-4294967293 `xor` 3 = 4294967294
-4294967294 `xor` 4294967293 = 3
-4294967294 `xor` 4294967294 = 0
-4294967294 `xor` 4294967295 = 1
-4294967294 `xor` 1 = 4294967295
-4294967294 `xor` 2 = 4294967292
-4294967294 `xor` 3 = 4294967293
-4294967295 `xor` 4294967293 = 2
-4294967295 `xor` 4294967294 = 1
-4294967295 `xor` 4294967295 = 0
-4294967295 `xor` 1 = 4294967294
-4294967295 `xor` 2 = 4294967293
-4294967295 `xor` 3 = 4294967292
-0 `xor` 4294967293 = 4294967293
-0 `xor` 4294967294 = 4294967294
-0 `xor` 4294967295 = 4294967295
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` 4294967293 = 4294967292
-1 `xor` 4294967294 = 4294967295
-1 `xor` 4294967295 = 4294967294
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` 4294967293 = 4294967295
-2 `xor` 4294967294 = 4294967292
-2 `xor` 4294967295 = 4294967293
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` 4294967293 = 4294967294
-3 `xor` 4294967294 = 4294967293
-3 `xor` 4294967295 = 4294967292
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement 4294967293 = 2
-complement 4294967294 = 1
-complement 4294967295 = 0
-complement 0 = 4294967295
-complement 1 = 4294967294
-complement 2 = 4294967293
-complement 3 = 4294967292
-#
-4294967293 `shiftL` 0 = 4294967293
-4294967293 `shiftL` 1 = 4294967290
-4294967293 `shiftL` 2 = 4294967284
-4294967293 `shiftL` 3 = 4294967272
-4294967293 `shiftL` 32 = 0
-4294967294 `shiftL` 0 = 4294967294
-4294967294 `shiftL` 1 = 4294967292
-4294967294 `shiftL` 2 = 4294967288
-4294967294 `shiftL` 3 = 4294967280
-4294967294 `shiftL` 32 = 0
-4294967295 `shiftL` 0 = 4294967295
-4294967295 `shiftL` 1 = 4294967294
-4294967295 `shiftL` 2 = 4294967292
-4294967295 `shiftL` 3 = 4294967288
-4294967295 `shiftL` 32 = 0
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 0
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 0
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 0
-#
-4294967293 `shiftR` 0 = 4294967293
-4294967293 `shiftR` 1 = 2147483646
-4294967293 `shiftR` 2 = 1073741823
-4294967293 `shiftR` 3 = 536870911
-4294967293 `shiftR` 32 = 0
-4294967294 `shiftR` 0 = 4294967294
-4294967294 `shiftR` 1 = 2147483647
-4294967294 `shiftR` 2 = 1073741823
-4294967294 `shiftR` 3 = 536870911
-4294967294 `shiftR` 32 = 0
-4294967295 `shiftR` 0 = 4294967295
-4294967295 `shiftR` 1 = 2147483647
-4294967295 `shiftR` 2 = 1073741823
-4294967295 `shiftR` 3 = 536870911
-4294967295 `shiftR` 32 = 0
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
-4294967293 `rotate` -3 = 3221225471
-4294967293 `rotate` -2 = 2147483647
-4294967293 `rotate` -1 = 4294967294
-4294967293 `rotate` 0 = 4294967293
-4294967293 `rotate` 1 = 4294967291
-4294967293 `rotate` 2 = 4294967287
-4294967293 `rotate` 3 = 4294967279
-4294967294 `rotate` -3 = 3758096383
-4294967294 `rotate` -2 = 3221225471
-4294967294 `rotate` -1 = 2147483647
-4294967294 `rotate` 0 = 4294967294
-4294967294 `rotate` 1 = 4294967293
-4294967294 `rotate` 2 = 4294967291
-4294967294 `rotate` 3 = 4294967287
-4294967295 `rotate` -3 = 4294967295
-4294967295 `rotate` -2 = 4294967295
-4294967295 `rotate` -1 = 4294967295
-4294967295 `rotate` 0 = 4294967295
-4294967295 `rotate` 1 = 4294967295
-4294967295 `rotate` 2 = 4294967295
-4294967295 `rotate` 3 = 4294967295
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 536870912
-1 `rotate` -2 = 1073741824
-1 `rotate` -1 = 2147483648
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 1073741824
-2 `rotate` -2 = 2147483648
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 1610612736
-3 `rotate` -2 = 3221225472
-3 `rotate` -1 = 2147483649
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
-4294967293 `setBit` 0 = 4294967293
-4294967293 `setBit` 1 = 4294967295
-4294967293 `setBit` 2 = 4294967293
-4294967293 `setBit` 3 = 4294967293
-4294967293 `setBit` 32 = 4294967293
-4294967294 `setBit` 0 = 4294967295
-4294967294 `setBit` 1 = 4294967294
-4294967294 `setBit` 2 = 4294967294
-4294967294 `setBit` 3 = 4294967294
-4294967294 `setBit` 32 = 4294967294
-4294967295 `setBit` 0 = 4294967295
-4294967295 `setBit` 1 = 4294967295
-4294967295 `setBit` 2 = 4294967295
-4294967295 `setBit` 3 = 4294967295
-4294967295 `setBit` 32 = 4294967295
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 0
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 1
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 2
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 3
-#
-4294967293 `clearBit` 0 = 4294967292
-4294967293 `clearBit` 1 = 4294967293
-4294967293 `clearBit` 2 = 4294967289
-4294967293 `clearBit` 3 = 4294967285
-4294967293 `clearBit` 32 = 4294967293
-4294967294 `clearBit` 0 = 4294967294
-4294967294 `clearBit` 1 = 4294967292
-4294967294 `clearBit` 2 = 4294967290
-4294967294 `clearBit` 3 = 4294967286
-4294967294 `clearBit` 32 = 4294967294
-4294967295 `clearBit` 0 = 4294967294
-4294967295 `clearBit` 1 = 4294967293
-4294967295 `clearBit` 2 = 4294967291
-4294967295 `clearBit` 3 = 4294967287
-4294967295 `clearBit` 32 = 4294967295
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
-4294967293 `complementBit` 0 = 4294967292
-4294967293 `complementBit` 1 = 4294967295
-4294967293 `complementBit` 2 = 4294967289
-4294967293 `complementBit` 3 = 4294967285
-4294967293 `complementBit` 32 = 4294967293
-4294967294 `complementBit` 0 = 4294967295
-4294967294 `complementBit` 1 = 4294967292
-4294967294 `complementBit` 2 = 4294967290
-4294967294 `complementBit` 3 = 4294967286
-4294967294 `complementBit` 32 = 4294967294
-4294967295 `complementBit` 0 = 4294967294
-4294967295 `complementBit` 1 = 4294967293
-4294967295 `complementBit` 2 = 4294967291
-4294967295 `complementBit` 3 = 4294967287
-4294967295 `complementBit` 32 = 4294967295
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 0
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 1
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 2
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 3
-#
-4294967293 `testBit` 0 = True
-4294967293 `testBit` 1 = False
-4294967293 `testBit` 2 = True
-4294967293 `testBit` 3 = True
-4294967293 `testBit` 32 = False
-4294967294 `testBit` 0 = False
-4294967294 `testBit` 1 = True
-4294967294 `testBit` 2 = True
-4294967294 `testBit` 3 = True
-4294967294 `testBit` 32 = False
-4294967295 `testBit` 0 = True
-4294967295 `testBit` 1 = True
-4294967295 `testBit` 2 = True
-4294967295 `testBit` 3 = True
-4294967295 `testBit` 32 = False
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize 4294967293 = 32
-bitSize 4294967294 = 32
-bitSize 4294967295 = 32
-bitSize 0 = 32
-bitSize 1 = 32
-bitSize 2 = 32
-bitSize 3 = 32
-#
-isSigned 4294967293 = False
-isSigned 4294967294 = False
-isSigned 4294967295 = False
-isSigned 0 = False
-isSigned 1 = False
-isSigned 2 = False
-isSigned 3 = False
-#
---------------------------------
---Testing Word64
---------------------------------
-testBounded
-(18446744073709551615,0,1)
-(18446744073709551614,18446744073709551615,0)
-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
-[18446744073709551613,18446744073709551614,18446744073709551615,0,1,2,3]
-[18446744073709551613,18446744073709551614,18446744073709551615,0,1,2,3]
-testEq
-18446744073709551613 == 18446744073709551613 = True
-18446744073709551613 == 18446744073709551614 = False
-18446744073709551613 == 18446744073709551615 = False
-18446744073709551613 == 0 = False
-18446744073709551613 == 1 = False
-18446744073709551613 == 2 = False
-18446744073709551613 == 3 = False
-18446744073709551614 == 18446744073709551613 = False
-18446744073709551614 == 18446744073709551614 = True
-18446744073709551614 == 18446744073709551615 = False
-18446744073709551614 == 0 = False
-18446744073709551614 == 1 = False
-18446744073709551614 == 2 = False
-18446744073709551614 == 3 = False
-18446744073709551615 == 18446744073709551613 = False
-18446744073709551615 == 18446744073709551614 = False
-18446744073709551615 == 18446744073709551615 = True
-18446744073709551615 == 0 = False
-18446744073709551615 == 1 = False
-18446744073709551615 == 2 = False
-18446744073709551615 == 3 = False
-0 == 18446744073709551613 = False
-0 == 18446744073709551614 = False
-0 == 18446744073709551615 = False
-0 == 0 = True
-0 == 1 = False
-0 == 2 = False
-0 == 3 = False
-1 == 18446744073709551613 = False
-1 == 18446744073709551614 = False
-1 == 18446744073709551615 = False
-1 == 0 = False
-1 == 1 = True
-1 == 2 = False
-1 == 3 = False
-2 == 18446744073709551613 = False
-2 == 18446744073709551614 = False
-2 == 18446744073709551615 = False
-2 == 0 = False
-2 == 1 = False
-2 == 2 = True
-2 == 3 = False
-3 == 18446744073709551613 = False
-3 == 18446744073709551614 = False
-3 == 18446744073709551615 = False
-3 == 0 = False
-3 == 1 = False
-3 == 2 = False
-3 == 3 = True
-#
-18446744073709551613 /= 18446744073709551613 = False
-18446744073709551613 /= 18446744073709551614 = True
-18446744073709551613 /= 18446744073709551615 = True
-18446744073709551613 /= 0 = True
-18446744073709551613 /= 1 = True
-18446744073709551613 /= 2 = True
-18446744073709551613 /= 3 = True
-18446744073709551614 /= 18446744073709551613 = True
-18446744073709551614 /= 18446744073709551614 = False
-18446744073709551614 /= 18446744073709551615 = True
-18446744073709551614 /= 0 = True
-18446744073709551614 /= 1 = True
-18446744073709551614 /= 2 = True
-18446744073709551614 /= 3 = True
-18446744073709551615 /= 18446744073709551613 = True
-18446744073709551615 /= 18446744073709551614 = True
-18446744073709551615 /= 18446744073709551615 = False
-18446744073709551615 /= 0 = True
-18446744073709551615 /= 1 = True
-18446744073709551615 /= 2 = True
-18446744073709551615 /= 3 = True
-0 /= 18446744073709551613 = True
-0 /= 18446744073709551614 = True
-0 /= 18446744073709551615 = True
-0 /= 0 = False
-0 /= 1 = True
-0 /= 2 = True
-0 /= 3 = True
-1 /= 18446744073709551613 = True
-1 /= 18446744073709551614 = True
-1 /= 18446744073709551615 = True
-1 /= 0 = True
-1 /= 1 = False
-1 /= 2 = True
-1 /= 3 = True
-2 /= 18446744073709551613 = True
-2 /= 18446744073709551614 = True
-2 /= 18446744073709551615 = True
-2 /= 0 = True
-2 /= 1 = True
-2 /= 2 = False
-2 /= 3 = True
-3 /= 18446744073709551613 = True
-3 /= 18446744073709551614 = True
-3 /= 18446744073709551615 = True
-3 /= 0 = True
-3 /= 1 = True
-3 /= 2 = True
-3 /= 3 = False
-#
-testOrd
-18446744073709551613 <= 18446744073709551613 = True
-18446744073709551613 <= 18446744073709551614 = True
-18446744073709551613 <= 18446744073709551615 = True
-18446744073709551613 <= 0 = False
-18446744073709551613 <= 1 = False
-18446744073709551613 <= 2 = False
-18446744073709551613 <= 3 = False
-18446744073709551614 <= 18446744073709551613 = False
-18446744073709551614 <= 18446744073709551614 = True
-18446744073709551614 <= 18446744073709551615 = True
-18446744073709551614 <= 0 = False
-18446744073709551614 <= 1 = False
-18446744073709551614 <= 2 = False
-18446744073709551614 <= 3 = False
-18446744073709551615 <= 18446744073709551613 = False
-18446744073709551615 <= 18446744073709551614 = False
-18446744073709551615 <= 18446744073709551615 = True
-18446744073709551615 <= 0 = False
-18446744073709551615 <= 1 = False
-18446744073709551615 <= 2 = False
-18446744073709551615 <= 3 = False
-0 <= 18446744073709551613 = True
-0 <= 18446744073709551614 = True
-0 <= 18446744073709551615 = True
-0 <= 0 = True
-0 <= 1 = True
-0 <= 2 = True
-0 <= 3 = True
-1 <= 18446744073709551613 = True
-1 <= 18446744073709551614 = True
-1 <= 18446744073709551615 = True
-1 <= 0 = False
-1 <= 1 = True
-1 <= 2 = True
-1 <= 3 = True
-2 <= 18446744073709551613 = True
-2 <= 18446744073709551614 = True
-2 <= 18446744073709551615 = True
-2 <= 0 = False
-2 <= 1 = False
-2 <= 2 = True
-2 <= 3 = True
-3 <= 18446744073709551613 = True
-3 <= 18446744073709551614 = True
-3 <= 18446744073709551615 = True
-3 <= 0 = False
-3 <= 1 = False
-3 <= 2 = False
-3 <= 3 = True
-#
-18446744073709551613 <  18446744073709551613 = False
-18446744073709551613 <  18446744073709551614 = True
-18446744073709551613 <  18446744073709551615 = True
-18446744073709551613 <  0 = False
-18446744073709551613 <  1 = False
-18446744073709551613 <  2 = False
-18446744073709551613 <  3 = False
-18446744073709551614 <  18446744073709551613 = False
-18446744073709551614 <  18446744073709551614 = False
-18446744073709551614 <  18446744073709551615 = True
-18446744073709551614 <  0 = False
-18446744073709551614 <  1 = False
-18446744073709551614 <  2 = False
-18446744073709551614 <  3 = False
-18446744073709551615 <  18446744073709551613 = False
-18446744073709551615 <  18446744073709551614 = False
-18446744073709551615 <  18446744073709551615 = False
-18446744073709551615 <  0 = False
-18446744073709551615 <  1 = False
-18446744073709551615 <  2 = False
-18446744073709551615 <  3 = False
-0 <  18446744073709551613 = True
-0 <  18446744073709551614 = True
-0 <  18446744073709551615 = True
-0 <  0 = False
-0 <  1 = True
-0 <  2 = True
-0 <  3 = True
-1 <  18446744073709551613 = True
-1 <  18446744073709551614 = True
-1 <  18446744073709551615 = True
-1 <  0 = False
-1 <  1 = False
-1 <  2 = True
-1 <  3 = True
-2 <  18446744073709551613 = True
-2 <  18446744073709551614 = True
-2 <  18446744073709551615 = True
-2 <  0 = False
-2 <  1 = False
-2 <  2 = False
-2 <  3 = True
-3 <  18446744073709551613 = True
-3 <  18446744073709551614 = True
-3 <  18446744073709551615 = True
-3 <  0 = False
-3 <  1 = False
-3 <  2 = False
-3 <  3 = False
-#
-18446744073709551613 >  18446744073709551613 = False
-18446744073709551613 >  18446744073709551614 = False
-18446744073709551613 >  18446744073709551615 = False
-18446744073709551613 >  0 = True
-18446744073709551613 >  1 = True
-18446744073709551613 >  2 = True
-18446744073709551613 >  3 = True
-18446744073709551614 >  18446744073709551613 = True
-18446744073709551614 >  18446744073709551614 = False
-18446744073709551614 >  18446744073709551615 = False
-18446744073709551614 >  0 = True
-18446744073709551614 >  1 = True
-18446744073709551614 >  2 = True
-18446744073709551614 >  3 = True
-18446744073709551615 >  18446744073709551613 = True
-18446744073709551615 >  18446744073709551614 = True
-18446744073709551615 >  18446744073709551615 = False
-18446744073709551615 >  0 = True
-18446744073709551615 >  1 = True
-18446744073709551615 >  2 = True
-18446744073709551615 >  3 = True
-0 >  18446744073709551613 = False
-0 >  18446744073709551614 = False
-0 >  18446744073709551615 = False
-0 >  0 = False
-0 >  1 = False
-0 >  2 = False
-0 >  3 = False
-1 >  18446744073709551613 = False
-1 >  18446744073709551614 = False
-1 >  18446744073709551615 = False
-1 >  0 = True
-1 >  1 = False
-1 >  2 = False
-1 >  3 = False
-2 >  18446744073709551613 = False
-2 >  18446744073709551614 = False
-2 >  18446744073709551615 = False
-2 >  0 = True
-2 >  1 = True
-2 >  2 = False
-2 >  3 = False
-3 >  18446744073709551613 = False
-3 >  18446744073709551614 = False
-3 >  18446744073709551615 = False
-3 >  0 = True
-3 >  1 = True
-3 >  2 = True
-3 >  3 = False
-#
-18446744073709551613 >= 18446744073709551613 = True
-18446744073709551613 >= 18446744073709551614 = False
-18446744073709551613 >= 18446744073709551615 = False
-18446744073709551613 >= 0 = True
-18446744073709551613 >= 1 = True
-18446744073709551613 >= 2 = True
-18446744073709551613 >= 3 = True
-18446744073709551614 >= 18446744073709551613 = True
-18446744073709551614 >= 18446744073709551614 = True
-18446744073709551614 >= 18446744073709551615 = False
-18446744073709551614 >= 0 = True
-18446744073709551614 >= 1 = True
-18446744073709551614 >= 2 = True
-18446744073709551614 >= 3 = True
-18446744073709551615 >= 18446744073709551613 = True
-18446744073709551615 >= 18446744073709551614 = True
-18446744073709551615 >= 18446744073709551615 = True
-18446744073709551615 >= 0 = True
-18446744073709551615 >= 1 = True
-18446744073709551615 >= 2 = True
-18446744073709551615 >= 3 = True
-0 >= 18446744073709551613 = False
-0 >= 18446744073709551614 = False
-0 >= 18446744073709551615 = False
-0 >= 0 = True
-0 >= 1 = False
-0 >= 2 = False
-0 >= 3 = False
-1 >= 18446744073709551613 = False
-1 >= 18446744073709551614 = False
-1 >= 18446744073709551615 = False
-1 >= 0 = True
-1 >= 1 = True
-1 >= 2 = False
-1 >= 3 = False
-2 >= 18446744073709551613 = False
-2 >= 18446744073709551614 = False
-2 >= 18446744073709551615 = False
-2 >= 0 = True
-2 >= 1 = True
-2 >= 2 = True
-2 >= 3 = False
-3 >= 18446744073709551613 = False
-3 >= 18446744073709551614 = False
-3 >= 18446744073709551615 = False
-3 >= 0 = True
-3 >= 1 = True
-3 >= 2 = True
-3 >= 3 = True
-#
-18446744073709551613 `compare` 18446744073709551613 = EQ
-18446744073709551613 `compare` 18446744073709551614 = LT
-18446744073709551613 `compare` 18446744073709551615 = LT
-18446744073709551613 `compare` 0 = GT
-18446744073709551613 `compare` 1 = GT
-18446744073709551613 `compare` 2 = GT
-18446744073709551613 `compare` 3 = GT
-18446744073709551614 `compare` 18446744073709551613 = GT
-18446744073709551614 `compare` 18446744073709551614 = EQ
-18446744073709551614 `compare` 18446744073709551615 = LT
-18446744073709551614 `compare` 0 = GT
-18446744073709551614 `compare` 1 = GT
-18446744073709551614 `compare` 2 = GT
-18446744073709551614 `compare` 3 = GT
-18446744073709551615 `compare` 18446744073709551613 = GT
-18446744073709551615 `compare` 18446744073709551614 = GT
-18446744073709551615 `compare` 18446744073709551615 = EQ
-18446744073709551615 `compare` 0 = GT
-18446744073709551615 `compare` 1 = GT
-18446744073709551615 `compare` 2 = GT
-18446744073709551615 `compare` 3 = GT
-0 `compare` 18446744073709551613 = LT
-0 `compare` 18446744073709551614 = LT
-0 `compare` 18446744073709551615 = LT
-0 `compare` 0 = EQ
-0 `compare` 1 = LT
-0 `compare` 2 = LT
-0 `compare` 3 = LT
-1 `compare` 18446744073709551613 = LT
-1 `compare` 18446744073709551614 = LT
-1 `compare` 18446744073709551615 = LT
-1 `compare` 0 = GT
-1 `compare` 1 = EQ
-1 `compare` 2 = LT
-1 `compare` 3 = LT
-2 `compare` 18446744073709551613 = LT
-2 `compare` 18446744073709551614 = LT
-2 `compare` 18446744073709551615 = LT
-2 `compare` 0 = GT
-2 `compare` 1 = GT
-2 `compare` 2 = EQ
-2 `compare` 3 = LT
-3 `compare` 18446744073709551613 = LT
-3 `compare` 18446744073709551614 = LT
-3 `compare` 18446744073709551615 = LT
-3 `compare` 0 = GT
-3 `compare` 1 = GT
-3 `compare` 2 = GT
-3 `compare` 3 = EQ
-#
-testNum
-18446744073709551613 + 18446744073709551613 = 18446744073709551610
-18446744073709551613 + 18446744073709551614 = 18446744073709551611
-18446744073709551613 + 18446744073709551615 = 18446744073709551612
-18446744073709551613 + 0 = 18446744073709551613
-18446744073709551613 + 1 = 18446744073709551614
-18446744073709551613 + 2 = 18446744073709551615
-18446744073709551613 + 3 = 0
-18446744073709551614 + 18446744073709551613 = 18446744073709551611
-18446744073709551614 + 18446744073709551614 = 18446744073709551612
-18446744073709551614 + 18446744073709551615 = 18446744073709551613
-18446744073709551614 + 0 = 18446744073709551614
-18446744073709551614 + 1 = 18446744073709551615
-18446744073709551614 + 2 = 0
-18446744073709551614 + 3 = 1
-18446744073709551615 + 18446744073709551613 = 18446744073709551612
-18446744073709551615 + 18446744073709551614 = 18446744073709551613
-18446744073709551615 + 18446744073709551615 = 18446744073709551614
-18446744073709551615 + 0 = 18446744073709551615
-18446744073709551615 + 1 = 0
-18446744073709551615 + 2 = 1
-18446744073709551615 + 3 = 2
-0 + 18446744073709551613 = 18446744073709551613
-0 + 18446744073709551614 = 18446744073709551614
-0 + 18446744073709551615 = 18446744073709551615
-0 + 0 = 0
-0 + 1 = 1
-0 + 2 = 2
-0 + 3 = 3
-1 + 18446744073709551613 = 18446744073709551614
-1 + 18446744073709551614 = 18446744073709551615
-1 + 18446744073709551615 = 0
-1 + 0 = 1
-1 + 1 = 2
-1 + 2 = 3
-1 + 3 = 4
-2 + 18446744073709551613 = 18446744073709551615
-2 + 18446744073709551614 = 0
-2 + 18446744073709551615 = 1
-2 + 0 = 2
-2 + 1 = 3
-2 + 2 = 4
-2 + 3 = 5
-3 + 18446744073709551613 = 0
-3 + 18446744073709551614 = 1
-3 + 18446744073709551615 = 2
-3 + 0 = 3
-3 + 1 = 4
-3 + 2 = 5
-3 + 3 = 6
-#
-18446744073709551613 - 18446744073709551613 = 0
-18446744073709551613 - 18446744073709551614 = 18446744073709551615
-18446744073709551613 - 18446744073709551615 = 18446744073709551614
-18446744073709551613 - 0 = 18446744073709551613
-18446744073709551613 - 1 = 18446744073709551612
-18446744073709551613 - 2 = 18446744073709551611
-18446744073709551613 - 3 = 18446744073709551610
-18446744073709551614 - 18446744073709551613 = 1
-18446744073709551614 - 18446744073709551614 = 0
-18446744073709551614 - 18446744073709551615 = 18446744073709551615
-18446744073709551614 - 0 = 18446744073709551614
-18446744073709551614 - 1 = 18446744073709551613
-18446744073709551614 - 2 = 18446744073709551612
-18446744073709551614 - 3 = 18446744073709551611
-18446744073709551615 - 18446744073709551613 = 2
-18446744073709551615 - 18446744073709551614 = 1
-18446744073709551615 - 18446744073709551615 = 0
-18446744073709551615 - 0 = 18446744073709551615
-18446744073709551615 - 1 = 18446744073709551614
-18446744073709551615 - 2 = 18446744073709551613
-18446744073709551615 - 3 = 18446744073709551612
-0 - 18446744073709551613 = 3
-0 - 18446744073709551614 = 2
-0 - 18446744073709551615 = 1
-0 - 0 = 0
-0 - 1 = 18446744073709551615
-0 - 2 = 18446744073709551614
-0 - 3 = 18446744073709551613
-1 - 18446744073709551613 = 4
-1 - 18446744073709551614 = 3
-1 - 18446744073709551615 = 2
-1 - 0 = 1
-1 - 1 = 0
-1 - 2 = 18446744073709551615
-1 - 3 = 18446744073709551614
-2 - 18446744073709551613 = 5
-2 - 18446744073709551614 = 4
-2 - 18446744073709551615 = 3
-2 - 0 = 2
-2 - 1 = 1
-2 - 2 = 0
-2 - 3 = 18446744073709551615
-3 - 18446744073709551613 = 6
-3 - 18446744073709551614 = 5
-3 - 18446744073709551615 = 4
-3 - 0 = 3
-3 - 1 = 2
-3 - 2 = 1
-3 - 3 = 0
-#
-18446744073709551613 * 18446744073709551613 = 9
-18446744073709551613 * 18446744073709551614 = 6
-18446744073709551613 * 18446744073709551615 = 3
-18446744073709551613 * 0 = 0
-18446744073709551613 * 1 = 18446744073709551613
-18446744073709551613 * 2 = 18446744073709551610
-18446744073709551613 * 3 = 18446744073709551607
-18446744073709551614 * 18446744073709551613 = 6
-18446744073709551614 * 18446744073709551614 = 4
-18446744073709551614 * 18446744073709551615 = 2
-18446744073709551614 * 0 = 0
-18446744073709551614 * 1 = 18446744073709551614
-18446744073709551614 * 2 = 18446744073709551612
-18446744073709551614 * 3 = 18446744073709551610
-18446744073709551615 * 18446744073709551613 = 3
-18446744073709551615 * 18446744073709551614 = 2
-18446744073709551615 * 18446744073709551615 = 1
-18446744073709551615 * 0 = 0
-18446744073709551615 * 1 = 18446744073709551615
-18446744073709551615 * 2 = 18446744073709551614
-18446744073709551615 * 3 = 18446744073709551613
-0 * 18446744073709551613 = 0
-0 * 18446744073709551614 = 0
-0 * 18446744073709551615 = 0
-0 * 0 = 0
-0 * 1 = 0
-0 * 2 = 0
-0 * 3 = 0
-1 * 18446744073709551613 = 18446744073709551613
-1 * 18446744073709551614 = 18446744073709551614
-1 * 18446744073709551615 = 18446744073709551615
-1 * 0 = 0
-1 * 1 = 1
-1 * 2 = 2
-1 * 3 = 3
-2 * 18446744073709551613 = 18446744073709551610
-2 * 18446744073709551614 = 18446744073709551612
-2 * 18446744073709551615 = 18446744073709551614
-2 * 0 = 0
-2 * 1 = 2
-2 * 2 = 4
-2 * 3 = 6
-3 * 18446744073709551613 = 18446744073709551607
-3 * 18446744073709551614 = 18446744073709551610
-3 * 18446744073709551615 = 18446744073709551613
-3 * 0 = 0
-3 * 1 = 3
-3 * 2 = 6
-3 * 3 = 9
-#
-negate 18446744073709551613 = 3
-negate 18446744073709551614 = 2
-negate 18446744073709551615 = 1
-negate 0 = 0
-negate 1 = 18446744073709551615
-negate 2 = 18446744073709551614
-negate 3 = 18446744073709551613
-#
-testReal
-toRational 18446744073709551613 = 18446744073709551613 % 1
-toRational 18446744073709551614 = 18446744073709551614 % 1
-toRational 18446744073709551615 = 18446744073709551615 % 1
-toRational 0 = 0 % 1
-toRational 1 = 1 % 1
-toRational 2 = 2 % 1
-toRational 3 = 3 % 1
-#
-testIntegral
-18446744073709551613 `divMod`  18446744073709551613 = (1,0)
-18446744073709551613 `divMod`  18446744073709551614 = (0,18446744073709551613)
-18446744073709551613 `divMod`  18446744073709551615 = (0,18446744073709551613)
-18446744073709551613 `divMod`  1 = (18446744073709551613,0)
-18446744073709551613 `divMod`  2 = (9223372036854775806,1)
-18446744073709551613 `divMod`  3 = (6148914691236517204,1)
-18446744073709551614 `divMod`  18446744073709551613 = (1,1)
-18446744073709551614 `divMod`  18446744073709551614 = (1,0)
-18446744073709551614 `divMod`  18446744073709551615 = (0,18446744073709551614)
-18446744073709551614 `divMod`  1 = (18446744073709551614,0)
-18446744073709551614 `divMod`  2 = (9223372036854775807,0)
-18446744073709551614 `divMod`  3 = (6148914691236517204,2)
-18446744073709551615 `divMod`  18446744073709551613 = (1,2)
-18446744073709551615 `divMod`  18446744073709551614 = (1,1)
-18446744073709551615 `divMod`  18446744073709551615 = (1,0)
-18446744073709551615 `divMod`  1 = (18446744073709551615,0)
-18446744073709551615 `divMod`  2 = (9223372036854775807,1)
-18446744073709551615 `divMod`  3 = (6148914691236517205,0)
-0 `divMod`  18446744073709551613 = (0,0)
-0 `divMod`  18446744073709551614 = (0,0)
-0 `divMod`  18446744073709551615 = (0,0)
-0 `divMod`  1 = (0,0)
-0 `divMod`  2 = (0,0)
-0 `divMod`  3 = (0,0)
-1 `divMod`  18446744073709551613 = (0,1)
-1 `divMod`  18446744073709551614 = (0,1)
-1 `divMod`  18446744073709551615 = (0,1)
-1 `divMod`  1 = (1,0)
-1 `divMod`  2 = (0,1)
-1 `divMod`  3 = (0,1)
-2 `divMod`  18446744073709551613 = (0,2)
-2 `divMod`  18446744073709551614 = (0,2)
-2 `divMod`  18446744073709551615 = (0,2)
-2 `divMod`  1 = (2,0)
-2 `divMod`  2 = (1,0)
-2 `divMod`  3 = (0,2)
-3 `divMod`  18446744073709551613 = (0,3)
-3 `divMod`  18446744073709551614 = (0,3)
-3 `divMod`  18446744073709551615 = (0,3)
-3 `divMod`  1 = (3,0)
-3 `divMod`  2 = (1,1)
-3 `divMod`  3 = (1,0)
-#
-18446744073709551613 `div`     18446744073709551613 = 1
-18446744073709551613 `div`     18446744073709551614 = 0
-18446744073709551613 `div`     18446744073709551615 = 0
-18446744073709551613 `div`     1 = 18446744073709551613
-18446744073709551613 `div`     2 = 9223372036854775806
-18446744073709551613 `div`     3 = 6148914691236517204
-18446744073709551614 `div`     18446744073709551613 = 1
-18446744073709551614 `div`     18446744073709551614 = 1
-18446744073709551614 `div`     18446744073709551615 = 0
-18446744073709551614 `div`     1 = 18446744073709551614
-18446744073709551614 `div`     2 = 9223372036854775807
-18446744073709551614 `div`     3 = 6148914691236517204
-18446744073709551615 `div`     18446744073709551613 = 1
-18446744073709551615 `div`     18446744073709551614 = 1
-18446744073709551615 `div`     18446744073709551615 = 1
-18446744073709551615 `div`     1 = 18446744073709551615
-18446744073709551615 `div`     2 = 9223372036854775807
-18446744073709551615 `div`     3 = 6148914691236517205
-0 `div`     18446744073709551613 = 0
-0 `div`     18446744073709551614 = 0
-0 `div`     18446744073709551615 = 0
-0 `div`     1 = 0
-0 `div`     2 = 0
-0 `div`     3 = 0
-1 `div`     18446744073709551613 = 0
-1 `div`     18446744073709551614 = 0
-1 `div`     18446744073709551615 = 0
-1 `div`     1 = 1
-1 `div`     2 = 0
-1 `div`     3 = 0
-2 `div`     18446744073709551613 = 0
-2 `div`     18446744073709551614 = 0
-2 `div`     18446744073709551615 = 0
-2 `div`     1 = 2
-2 `div`     2 = 1
-2 `div`     3 = 0
-3 `div`     18446744073709551613 = 0
-3 `div`     18446744073709551614 = 0
-3 `div`     18446744073709551615 = 0
-3 `div`     1 = 3
-3 `div`     2 = 1
-3 `div`     3 = 1
-#
-18446744073709551613 `mod`     18446744073709551613 = 0
-18446744073709551613 `mod`     18446744073709551614 = 18446744073709551613
-18446744073709551613 `mod`     18446744073709551615 = 18446744073709551613
-18446744073709551613 `mod`     1 = 0
-18446744073709551613 `mod`     2 = 1
-18446744073709551613 `mod`     3 = 1
-18446744073709551614 `mod`     18446744073709551613 = 1
-18446744073709551614 `mod`     18446744073709551614 = 0
-18446744073709551614 `mod`     18446744073709551615 = 18446744073709551614
-18446744073709551614 `mod`     1 = 0
-18446744073709551614 `mod`     2 = 0
-18446744073709551614 `mod`     3 = 2
-18446744073709551615 `mod`     18446744073709551613 = 2
-18446744073709551615 `mod`     18446744073709551614 = 1
-18446744073709551615 `mod`     18446744073709551615 = 0
-18446744073709551615 `mod`     1 = 0
-18446744073709551615 `mod`     2 = 1
-18446744073709551615 `mod`     3 = 0
-0 `mod`     18446744073709551613 = 0
-0 `mod`     18446744073709551614 = 0
-0 `mod`     18446744073709551615 = 0
-0 `mod`     1 = 0
-0 `mod`     2 = 0
-0 `mod`     3 = 0
-1 `mod`     18446744073709551613 = 1
-1 `mod`     18446744073709551614 = 1
-1 `mod`     18446744073709551615 = 1
-1 `mod`     1 = 0
-1 `mod`     2 = 1
-1 `mod`     3 = 1
-2 `mod`     18446744073709551613 = 2
-2 `mod`     18446744073709551614 = 2
-2 `mod`     18446744073709551615 = 2
-2 `mod`     1 = 0
-2 `mod`     2 = 0
-2 `mod`     3 = 2
-3 `mod`     18446744073709551613 = 3
-3 `mod`     18446744073709551614 = 3
-3 `mod`     18446744073709551615 = 3
-3 `mod`     1 = 0
-3 `mod`     2 = 1
-3 `mod`     3 = 0
-#
-18446744073709551613 `quotRem` 18446744073709551613 = (1,0)
-18446744073709551613 `quotRem` 18446744073709551614 = (0,18446744073709551613)
-18446744073709551613 `quotRem` 18446744073709551615 = (0,18446744073709551613)
-18446744073709551613 `quotRem` 1 = (18446744073709551613,0)
-18446744073709551613 `quotRem` 2 = (9223372036854775806,1)
-18446744073709551613 `quotRem` 3 = (6148914691236517204,1)
-18446744073709551614 `quotRem` 18446744073709551613 = (1,1)
-18446744073709551614 `quotRem` 18446744073709551614 = (1,0)
-18446744073709551614 `quotRem` 18446744073709551615 = (0,18446744073709551614)
-18446744073709551614 `quotRem` 1 = (18446744073709551614,0)
-18446744073709551614 `quotRem` 2 = (9223372036854775807,0)
-18446744073709551614 `quotRem` 3 = (6148914691236517204,2)
-18446744073709551615 `quotRem` 18446744073709551613 = (1,2)
-18446744073709551615 `quotRem` 18446744073709551614 = (1,1)
-18446744073709551615 `quotRem` 18446744073709551615 = (1,0)
-18446744073709551615 `quotRem` 1 = (18446744073709551615,0)
-18446744073709551615 `quotRem` 2 = (9223372036854775807,1)
-18446744073709551615 `quotRem` 3 = (6148914691236517205,0)
-0 `quotRem` 18446744073709551613 = (0,0)
-0 `quotRem` 18446744073709551614 = (0,0)
-0 `quotRem` 18446744073709551615 = (0,0)
-0 `quotRem` 1 = (0,0)
-0 `quotRem` 2 = (0,0)
-0 `quotRem` 3 = (0,0)
-1 `quotRem` 18446744073709551613 = (0,1)
-1 `quotRem` 18446744073709551614 = (0,1)
-1 `quotRem` 18446744073709551615 = (0,1)
-1 `quotRem` 1 = (1,0)
-1 `quotRem` 2 = (0,1)
-1 `quotRem` 3 = (0,1)
-2 `quotRem` 18446744073709551613 = (0,2)
-2 `quotRem` 18446744073709551614 = (0,2)
-2 `quotRem` 18446744073709551615 = (0,2)
-2 `quotRem` 1 = (2,0)
-2 `quotRem` 2 = (1,0)
-2 `quotRem` 3 = (0,2)
-3 `quotRem` 18446744073709551613 = (0,3)
-3 `quotRem` 18446744073709551614 = (0,3)
-3 `quotRem` 18446744073709551615 = (0,3)
-3 `quotRem` 1 = (3,0)
-3 `quotRem` 2 = (1,1)
-3 `quotRem` 3 = (1,0)
-#
-18446744073709551613 `quot`    18446744073709551613 = 1
-18446744073709551613 `quot`    18446744073709551614 = 0
-18446744073709551613 `quot`    18446744073709551615 = 0
-18446744073709551613 `quot`    1 = 18446744073709551613
-18446744073709551613 `quot`    2 = 9223372036854775806
-18446744073709551613 `quot`    3 = 6148914691236517204
-18446744073709551614 `quot`    18446744073709551613 = 1
-18446744073709551614 `quot`    18446744073709551614 = 1
-18446744073709551614 `quot`    18446744073709551615 = 0
-18446744073709551614 `quot`    1 = 18446744073709551614
-18446744073709551614 `quot`    2 = 9223372036854775807
-18446744073709551614 `quot`    3 = 6148914691236517204
-18446744073709551615 `quot`    18446744073709551613 = 1
-18446744073709551615 `quot`    18446744073709551614 = 1
-18446744073709551615 `quot`    18446744073709551615 = 1
-18446744073709551615 `quot`    1 = 18446744073709551615
-18446744073709551615 `quot`    2 = 9223372036854775807
-18446744073709551615 `quot`    3 = 6148914691236517205
-0 `quot`    18446744073709551613 = 0
-0 `quot`    18446744073709551614 = 0
-0 `quot`    18446744073709551615 = 0
-0 `quot`    1 = 0
-0 `quot`    2 = 0
-0 `quot`    3 = 0
-1 `quot`    18446744073709551613 = 0
-1 `quot`    18446744073709551614 = 0
-1 `quot`    18446744073709551615 = 0
-1 `quot`    1 = 1
-1 `quot`    2 = 0
-1 `quot`    3 = 0
-2 `quot`    18446744073709551613 = 0
-2 `quot`    18446744073709551614 = 0
-2 `quot`    18446744073709551615 = 0
-2 `quot`    1 = 2
-2 `quot`    2 = 1
-2 `quot`    3 = 0
-3 `quot`    18446744073709551613 = 0
-3 `quot`    18446744073709551614 = 0
-3 `quot`    18446744073709551615 = 0
-3 `quot`    1 = 3
-3 `quot`    2 = 1
-3 `quot`    3 = 1
-#
-18446744073709551613 `rem`     18446744073709551613 = 0
-18446744073709551613 `rem`     18446744073709551614 = 18446744073709551613
-18446744073709551613 `rem`     18446744073709551615 = 18446744073709551613
-18446744073709551613 `rem`     1 = 0
-18446744073709551613 `rem`     2 = 1
-18446744073709551613 `rem`     3 = 1
-18446744073709551614 `rem`     18446744073709551613 = 1
-18446744073709551614 `rem`     18446744073709551614 = 0
-18446744073709551614 `rem`     18446744073709551615 = 18446744073709551614
-18446744073709551614 `rem`     1 = 0
-18446744073709551614 `rem`     2 = 0
-18446744073709551614 `rem`     3 = 2
-18446744073709551615 `rem`     18446744073709551613 = 2
-18446744073709551615 `rem`     18446744073709551614 = 1
-18446744073709551615 `rem`     18446744073709551615 = 0
-18446744073709551615 `rem`     1 = 0
-18446744073709551615 `rem`     2 = 1
-18446744073709551615 `rem`     3 = 0
-0 `rem`     18446744073709551613 = 0
-0 `rem`     18446744073709551614 = 0
-0 `rem`     18446744073709551615 = 0
-0 `rem`     1 = 0
-0 `rem`     2 = 0
-0 `rem`     3 = 0
-1 `rem`     18446744073709551613 = 1
-1 `rem`     18446744073709551614 = 1
-1 `rem`     18446744073709551615 = 1
-1 `rem`     1 = 0
-1 `rem`     2 = 1
-1 `rem`     3 = 1
-2 `rem`     18446744073709551613 = 2
-2 `rem`     18446744073709551614 = 2
-2 `rem`     18446744073709551615 = 2
-2 `rem`     1 = 0
-2 `rem`     2 = 0
-2 `rem`     3 = 2
-3 `rem`     18446744073709551613 = 3
-3 `rem`     18446744073709551614 = 3
-3 `rem`     18446744073709551615 = 3
-3 `rem`     1 = 0
-3 `rem`     2 = 1
-3 `rem`     3 = 0
-#
-testConversions
-Integer : [0,0,18446744073709551615]
-Int     : [0,0,-1]
-Int8    : [0,0,-1]
-Int16   : [0,0,-1]
-Int32   : [0,0,-1]
-Int64   : [0,0,-1]
-Word8   : [0,0,255]
-Word16  : [0,0,65535]
-Word32  : [0,0,4294967295]
-Word64  : [0,0,18446744073709551615]
-testBits
-18446744073709551613 .&.   18446744073709551613 = 18446744073709551613
-18446744073709551613 .&.   18446744073709551614 = 18446744073709551612
-18446744073709551613 .&.   18446744073709551615 = 18446744073709551613
-18446744073709551613 .&.   1 = 1
-18446744073709551613 .&.   2 = 0
-18446744073709551613 .&.   3 = 1
-18446744073709551614 .&.   18446744073709551613 = 18446744073709551612
-18446744073709551614 .&.   18446744073709551614 = 18446744073709551614
-18446744073709551614 .&.   18446744073709551615 = 18446744073709551614
-18446744073709551614 .&.   1 = 0
-18446744073709551614 .&.   2 = 2
-18446744073709551614 .&.   3 = 2
-18446744073709551615 .&.   18446744073709551613 = 18446744073709551613
-18446744073709551615 .&.   18446744073709551614 = 18446744073709551614
-18446744073709551615 .&.   18446744073709551615 = 18446744073709551615
-18446744073709551615 .&.   1 = 1
-18446744073709551615 .&.   2 = 2
-18446744073709551615 .&.   3 = 3
-0 .&.   18446744073709551613 = 0
-0 .&.   18446744073709551614 = 0
-0 .&.   18446744073709551615 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   18446744073709551613 = 1
-1 .&.   18446744073709551614 = 0
-1 .&.   18446744073709551615 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   18446744073709551613 = 0
-2 .&.   18446744073709551614 = 2
-2 .&.   18446744073709551615 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   18446744073709551613 = 1
-3 .&.   18446744073709551614 = 2
-3 .&.   18446744073709551615 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
-18446744073709551613 .|.   18446744073709551613 = 18446744073709551613
-18446744073709551613 .|.   18446744073709551614 = 18446744073709551615
-18446744073709551613 .|.   18446744073709551615 = 18446744073709551615
-18446744073709551613 .|.   1 = 18446744073709551613
-18446744073709551613 .|.   2 = 18446744073709551615
-18446744073709551613 .|.   3 = 18446744073709551615
-18446744073709551614 .|.   18446744073709551613 = 18446744073709551615
-18446744073709551614 .|.   18446744073709551614 = 18446744073709551614
-18446744073709551614 .|.   18446744073709551615 = 18446744073709551615
-18446744073709551614 .|.   1 = 18446744073709551615
-18446744073709551614 .|.   2 = 18446744073709551614
-18446744073709551614 .|.   3 = 18446744073709551615
-18446744073709551615 .|.   18446744073709551613 = 18446744073709551615
-18446744073709551615 .|.   18446744073709551614 = 18446744073709551615
-18446744073709551615 .|.   18446744073709551615 = 18446744073709551615
-18446744073709551615 .|.   1 = 18446744073709551615
-18446744073709551615 .|.   2 = 18446744073709551615
-18446744073709551615 .|.   3 = 18446744073709551615
-0 .|.   18446744073709551613 = 18446744073709551613
-0 .|.   18446744073709551614 = 18446744073709551614
-0 .|.   18446744073709551615 = 18446744073709551615
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   18446744073709551613 = 18446744073709551613
-1 .|.   18446744073709551614 = 18446744073709551615
-1 .|.   18446744073709551615 = 18446744073709551615
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   18446744073709551613 = 18446744073709551615
-2 .|.   18446744073709551614 = 18446744073709551614
-2 .|.   18446744073709551615 = 18446744073709551615
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   18446744073709551613 = 18446744073709551615
-3 .|.   18446744073709551614 = 18446744073709551615
-3 .|.   18446744073709551615 = 18446744073709551615
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
-18446744073709551613 `xor` 18446744073709551613 = 0
-18446744073709551613 `xor` 18446744073709551614 = 3
-18446744073709551613 `xor` 18446744073709551615 = 2
-18446744073709551613 `xor` 1 = 18446744073709551612
-18446744073709551613 `xor` 2 = 18446744073709551615
-18446744073709551613 `xor` 3 = 18446744073709551614
-18446744073709551614 `xor` 18446744073709551613 = 3
-18446744073709551614 `xor` 18446744073709551614 = 0
-18446744073709551614 `xor` 18446744073709551615 = 1
-18446744073709551614 `xor` 1 = 18446744073709551615
-18446744073709551614 `xor` 2 = 18446744073709551612
-18446744073709551614 `xor` 3 = 18446744073709551613
-18446744073709551615 `xor` 18446744073709551613 = 2
-18446744073709551615 `xor` 18446744073709551614 = 1
-18446744073709551615 `xor` 18446744073709551615 = 0
-18446744073709551615 `xor` 1 = 18446744073709551614
-18446744073709551615 `xor` 2 = 18446744073709551613
-18446744073709551615 `xor` 3 = 18446744073709551612
-0 `xor` 18446744073709551613 = 18446744073709551613
-0 `xor` 18446744073709551614 = 18446744073709551614
-0 `xor` 18446744073709551615 = 18446744073709551615
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` 18446744073709551613 = 18446744073709551612
-1 `xor` 18446744073709551614 = 18446744073709551615
-1 `xor` 18446744073709551615 = 18446744073709551614
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` 18446744073709551613 = 18446744073709551615
-2 `xor` 18446744073709551614 = 18446744073709551612
-2 `xor` 18446744073709551615 = 18446744073709551613
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` 18446744073709551613 = 18446744073709551614
-3 `xor` 18446744073709551614 = 18446744073709551613
-3 `xor` 18446744073709551615 = 18446744073709551612
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement 18446744073709551613 = 2
-complement 18446744073709551614 = 1
-complement 18446744073709551615 = 0
-complement 0 = 18446744073709551615
-complement 1 = 18446744073709551614
-complement 2 = 18446744073709551613
-complement 3 = 18446744073709551612
-#
-18446744073709551613 `shiftL` 0 = 18446744073709551613
-18446744073709551613 `shiftL` 1 = 18446744073709551610
-18446744073709551613 `shiftL` 2 = 18446744073709551604
-18446744073709551613 `shiftL` 3 = 18446744073709551592
-18446744073709551613 `shiftL` 32 = 18446744060824649728
-18446744073709551614 `shiftL` 0 = 18446744073709551614
-18446744073709551614 `shiftL` 1 = 18446744073709551612
-18446744073709551614 `shiftL` 2 = 18446744073709551608
-18446744073709551614 `shiftL` 3 = 18446744073709551600
-18446744073709551614 `shiftL` 32 = 18446744065119617024
-18446744073709551615 `shiftL` 0 = 18446744073709551615
-18446744073709551615 `shiftL` 1 = 18446744073709551614
-18446744073709551615 `shiftL` 2 = 18446744073709551612
-18446744073709551615 `shiftL` 3 = 18446744073709551608
-18446744073709551615 `shiftL` 32 = 18446744069414584320
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 4294967296
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 8589934592
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 12884901888
-#
-18446744073709551613 `shiftR` 0 = 18446744073709551613
-18446744073709551613 `shiftR` 1 = 9223372036854775806
-18446744073709551613 `shiftR` 2 = 4611686018427387903
-18446744073709551613 `shiftR` 3 = 2305843009213693951
-18446744073709551613 `shiftR` 32 = 4294967295
-18446744073709551614 `shiftR` 0 = 18446744073709551614
-18446744073709551614 `shiftR` 1 = 9223372036854775807
-18446744073709551614 `shiftR` 2 = 4611686018427387903
-18446744073709551614 `shiftR` 3 = 2305843009213693951
-18446744073709551614 `shiftR` 32 = 4294967295
-18446744073709551615 `shiftR` 0 = 18446744073709551615
-18446744073709551615 `shiftR` 1 = 9223372036854775807
-18446744073709551615 `shiftR` 2 = 4611686018427387903
-18446744073709551615 `shiftR` 3 = 2305843009213693951
-18446744073709551615 `shiftR` 32 = 4294967295
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
-18446744073709551613 `rotate` -3 = 13835058055282163711
-18446744073709551613 `rotate` -2 = 9223372036854775807
-18446744073709551613 `rotate` -1 = 18446744073709551614
-18446744073709551613 `rotate` 0 = 18446744073709551613
-18446744073709551613 `rotate` 1 = 18446744073709551611
-18446744073709551613 `rotate` 2 = 18446744073709551607
-18446744073709551613 `rotate` 3 = 18446744073709551599
-18446744073709551614 `rotate` -3 = 16140901064495857663
-18446744073709551614 `rotate` -2 = 13835058055282163711
-18446744073709551614 `rotate` -1 = 9223372036854775807
-18446744073709551614 `rotate` 0 = 18446744073709551614
-18446744073709551614 `rotate` 1 = 18446744073709551613
-18446744073709551614 `rotate` 2 = 18446744073709551611
-18446744073709551614 `rotate` 3 = 18446744073709551607
-18446744073709551615 `rotate` -3 = 18446744073709551615
-18446744073709551615 `rotate` -2 = 18446744073709551615
-18446744073709551615 `rotate` -1 = 18446744073709551615
-18446744073709551615 `rotate` 0 = 18446744073709551615
-18446744073709551615 `rotate` 1 = 18446744073709551615
-18446744073709551615 `rotate` 2 = 18446744073709551615
-18446744073709551615 `rotate` 3 = 18446744073709551615
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 2305843009213693952
-1 `rotate` -2 = 4611686018427387904
-1 `rotate` -1 = 9223372036854775808
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 4611686018427387904
-2 `rotate` -2 = 9223372036854775808
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 6917529027641081856
-3 `rotate` -2 = 13835058055282163712
-3 `rotate` -1 = 9223372036854775809
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
-18446744073709551613 `setBit` 0 = 18446744073709551613
-18446744073709551613 `setBit` 1 = 18446744073709551615
-18446744073709551613 `setBit` 2 = 18446744073709551613
-18446744073709551613 `setBit` 3 = 18446744073709551613
-18446744073709551613 `setBit` 32 = 18446744073709551613
-18446744073709551614 `setBit` 0 = 18446744073709551615
-18446744073709551614 `setBit` 1 = 18446744073709551614
-18446744073709551614 `setBit` 2 = 18446744073709551614
-18446744073709551614 `setBit` 3 = 18446744073709551614
-18446744073709551614 `setBit` 32 = 18446744073709551614
-18446744073709551615 `setBit` 0 = 18446744073709551615
-18446744073709551615 `setBit` 1 = 18446744073709551615
-18446744073709551615 `setBit` 2 = 18446744073709551615
-18446744073709551615 `setBit` 3 = 18446744073709551615
-18446744073709551615 `setBit` 32 = 18446744073709551615
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 4294967296
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 4294967297
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 4294967298
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 4294967299
-#
-18446744073709551613 `clearBit` 0 = 18446744073709551612
-18446744073709551613 `clearBit` 1 = 18446744073709551613
-18446744073709551613 `clearBit` 2 = 18446744073709551609
-18446744073709551613 `clearBit` 3 = 18446744073709551605
-18446744073709551613 `clearBit` 32 = 18446744069414584317
-18446744073709551614 `clearBit` 0 = 18446744073709551614
-18446744073709551614 `clearBit` 1 = 18446744073709551612
-18446744073709551614 `clearBit` 2 = 18446744073709551610
-18446744073709551614 `clearBit` 3 = 18446744073709551606
-18446744073709551614 `clearBit` 32 = 18446744069414584318
-18446744073709551615 `clearBit` 0 = 18446744073709551614
-18446744073709551615 `clearBit` 1 = 18446744073709551613
-18446744073709551615 `clearBit` 2 = 18446744073709551611
-18446744073709551615 `clearBit` 3 = 18446744073709551607
-18446744073709551615 `clearBit` 32 = 18446744069414584319
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
-18446744073709551613 `complementBit` 0 = 18446744073709551612
-18446744073709551613 `complementBit` 1 = 18446744073709551615
-18446744073709551613 `complementBit` 2 = 18446744073709551609
-18446744073709551613 `complementBit` 3 = 18446744073709551605
-18446744073709551613 `complementBit` 32 = 18446744069414584317
-18446744073709551614 `complementBit` 0 = 18446744073709551615
-18446744073709551614 `complementBit` 1 = 18446744073709551612
-18446744073709551614 `complementBit` 2 = 18446744073709551610
-18446744073709551614 `complementBit` 3 = 18446744073709551606
-18446744073709551614 `complementBit` 32 = 18446744069414584318
-18446744073709551615 `complementBit` 0 = 18446744073709551614
-18446744073709551615 `complementBit` 1 = 18446744073709551613
-18446744073709551615 `complementBit` 2 = 18446744073709551611
-18446744073709551615 `complementBit` 3 = 18446744073709551607
-18446744073709551615 `complementBit` 32 = 18446744069414584319
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 4294967296
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 4294967297
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 4294967298
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 4294967299
-#
-18446744073709551613 `testBit` 0 = True
-18446744073709551613 `testBit` 1 = False
-18446744073709551613 `testBit` 2 = True
-18446744073709551613 `testBit` 3 = True
-18446744073709551613 `testBit` 32 = True
-18446744073709551614 `testBit` 0 = False
-18446744073709551614 `testBit` 1 = True
-18446744073709551614 `testBit` 2 = True
-18446744073709551614 `testBit` 3 = True
-18446744073709551614 `testBit` 32 = True
-18446744073709551615 `testBit` 0 = True
-18446744073709551615 `testBit` 1 = True
-18446744073709551615 `testBit` 2 = True
-18446744073709551615 `testBit` 3 = True
-18446744073709551615 `testBit` 32 = True
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-bitSize 18446744073709551613 = 64
-bitSize 18446744073709551614 = 64
-bitSize 18446744073709551615 = 64
-bitSize 0 = 64
-bitSize 1 = 64
-bitSize 2 = 64
-bitSize 3 = 64
-#
-isSigned 18446744073709551613 = False
-isSigned 18446744073709551614 = False
-isSigned 18446744073709551615 = False
-isSigned 0 = False
-isSigned 1 = False
-isSigned 2 = False
-isSigned 3 = False
-#
---------------------------------
---Testing Integer
---------------------------------
-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
-#
-testBits
--3 .&.   -3 = -3
--3 .&.   -2 = -4
--3 .&.   -1 = -3
--3 .&.   1 = 1
--3 .&.   2 = 0
--3 .&.   3 = 1
--2 .&.   -3 = -4
--2 .&.   -2 = -2
--2 .&.   -1 = -2
--2 .&.   1 = 0
--2 .&.   2 = 2
--2 .&.   3 = 2
--1 .&.   -3 = -3
--1 .&.   -2 = -2
--1 .&.   -1 = -1
--1 .&.   1 = 1
--1 .&.   2 = 2
--1 .&.   3 = 3
-0 .&.   -3 = 0
-0 .&.   -2 = 0
-0 .&.   -1 = 0
-0 .&.   1 = 0
-0 .&.   2 = 0
-0 .&.   3 = 0
-1 .&.   -3 = 1
-1 .&.   -2 = 0
-1 .&.   -1 = 1
-1 .&.   1 = 1
-1 .&.   2 = 0
-1 .&.   3 = 1
-2 .&.   -3 = 0
-2 .&.   -2 = 2
-2 .&.   -1 = 2
-2 .&.   1 = 0
-2 .&.   2 = 2
-2 .&.   3 = 2
-3 .&.   -3 = 1
-3 .&.   -2 = 2
-3 .&.   -1 = 3
-3 .&.   1 = 1
-3 .&.   2 = 2
-3 .&.   3 = 3
-#
--3 .|.   -3 = -3
--3 .|.   -2 = -1
--3 .|.   -1 = -1
--3 .|.   1 = -3
--3 .|.   2 = -1
--3 .|.   3 = -1
--2 .|.   -3 = -1
--2 .|.   -2 = -2
--2 .|.   -1 = -1
--2 .|.   1 = -1
--2 .|.   2 = -2
--2 .|.   3 = -1
--1 .|.   -3 = -1
--1 .|.   -2 = -1
--1 .|.   -1 = -1
--1 .|.   1 = -1
--1 .|.   2 = -1
--1 .|.   3 = -1
-0 .|.   -3 = -3
-0 .|.   -2 = -2
-0 .|.   -1 = -1
-0 .|.   1 = 1
-0 .|.   2 = 2
-0 .|.   3 = 3
-1 .|.   -3 = -3
-1 .|.   -2 = -1
-1 .|.   -1 = -1
-1 .|.   1 = 1
-1 .|.   2 = 3
-1 .|.   3 = 3
-2 .|.   -3 = -1
-2 .|.   -2 = -2
-2 .|.   -1 = -1
-2 .|.   1 = 3
-2 .|.   2 = 2
-2 .|.   3 = 3
-3 .|.   -3 = -1
-3 .|.   -2 = -1
-3 .|.   -1 = -1
-3 .|.   1 = 3
-3 .|.   2 = 3
-3 .|.   3 = 3
-#
--3 `xor` -3 = 0
--3 `xor` -2 = 3
--3 `xor` -1 = 2
--3 `xor` 1 = -4
--3 `xor` 2 = -1
--3 `xor` 3 = -2
--2 `xor` -3 = 3
--2 `xor` -2 = 0
--2 `xor` -1 = 1
--2 `xor` 1 = -1
--2 `xor` 2 = -4
--2 `xor` 3 = -3
--1 `xor` -3 = 2
--1 `xor` -2 = 1
--1 `xor` -1 = 0
--1 `xor` 1 = -2
--1 `xor` 2 = -3
--1 `xor` 3 = -4
-0 `xor` -3 = -3
-0 `xor` -2 = -2
-0 `xor` -1 = -1
-0 `xor` 1 = 1
-0 `xor` 2 = 2
-0 `xor` 3 = 3
-1 `xor` -3 = -4
-1 `xor` -2 = -1
-1 `xor` -1 = -2
-1 `xor` 1 = 0
-1 `xor` 2 = 3
-1 `xor` 3 = 2
-2 `xor` -3 = -1
-2 `xor` -2 = -4
-2 `xor` -1 = -3
-2 `xor` 1 = 3
-2 `xor` 2 = 0
-2 `xor` 3 = 1
-3 `xor` -3 = -2
-3 `xor` -2 = -3
-3 `xor` -1 = -4
-3 `xor` 1 = 2
-3 `xor` 2 = 1
-3 `xor` 3 = 0
-#
-complement -3 = 2
-complement -2 = 1
-complement -1 = 0
-complement 0 = -1
-complement 1 = -2
-complement 2 = -3
-complement 3 = -4
-#
--3 `shiftL` 0 = -3
--3 `shiftL` 1 = -6
--3 `shiftL` 2 = -12
--3 `shiftL` 3 = -24
--3 `shiftL` 32 = -12884901888
--2 `shiftL` 0 = -2
--2 `shiftL` 1 = -4
--2 `shiftL` 2 = -8
--2 `shiftL` 3 = -16
--2 `shiftL` 32 = -8589934592
--1 `shiftL` 0 = -1
--1 `shiftL` 1 = -2
--1 `shiftL` 2 = -4
--1 `shiftL` 3 = -8
--1 `shiftL` 32 = -4294967296
-0 `shiftL` 0 = 0
-0 `shiftL` 1 = 0
-0 `shiftL` 2 = 0
-0 `shiftL` 3 = 0
-0 `shiftL` 32 = 0
-1 `shiftL` 0 = 1
-1 `shiftL` 1 = 2
-1 `shiftL` 2 = 4
-1 `shiftL` 3 = 8
-1 `shiftL` 32 = 4294967296
-2 `shiftL` 0 = 2
-2 `shiftL` 1 = 4
-2 `shiftL` 2 = 8
-2 `shiftL` 3 = 16
-2 `shiftL` 32 = 8589934592
-3 `shiftL` 0 = 3
-3 `shiftL` 1 = 6
-3 `shiftL` 2 = 12
-3 `shiftL` 3 = 24
-3 `shiftL` 32 = 12884901888
-#
--3 `shiftR` 0 = -3
--3 `shiftR` 1 = -2
--3 `shiftR` 2 = -1
--3 `shiftR` 3 = -1
--3 `shiftR` 32 = -1
--2 `shiftR` 0 = -2
--2 `shiftR` 1 = -1
--2 `shiftR` 2 = -1
--2 `shiftR` 3 = -1
--2 `shiftR` 32 = -1
--1 `shiftR` 0 = -1
--1 `shiftR` 1 = -1
--1 `shiftR` 2 = -1
--1 `shiftR` 3 = -1
--1 `shiftR` 32 = -1
-0 `shiftR` 0 = 0
-0 `shiftR` 1 = 0
-0 `shiftR` 2 = 0
-0 `shiftR` 3 = 0
-0 `shiftR` 32 = 0
-1 `shiftR` 0 = 1
-1 `shiftR` 1 = 0
-1 `shiftR` 2 = 0
-1 `shiftR` 3 = 0
-1 `shiftR` 32 = 0
-2 `shiftR` 0 = 2
-2 `shiftR` 1 = 1
-2 `shiftR` 2 = 0
-2 `shiftR` 3 = 0
-2 `shiftR` 32 = 0
-3 `shiftR` 0 = 3
-3 `shiftR` 1 = 1
-3 `shiftR` 2 = 0
-3 `shiftR` 3 = 0
-3 `shiftR` 32 = 0
-#
--3 `rotate` -3 = -1
--3 `rotate` -2 = -1
--3 `rotate` -1 = -2
--3 `rotate` 0 = -3
--3 `rotate` 1 = -6
--3 `rotate` 2 = -12
--3 `rotate` 3 = -24
--2 `rotate` -3 = -1
--2 `rotate` -2 = -1
--2 `rotate` -1 = -1
--2 `rotate` 0 = -2
--2 `rotate` 1 = -4
--2 `rotate` 2 = -8
--2 `rotate` 3 = -16
--1 `rotate` -3 = -1
--1 `rotate` -2 = -1
--1 `rotate` -1 = -1
--1 `rotate` 0 = -1
--1 `rotate` 1 = -2
--1 `rotate` 2 = -4
--1 `rotate` 3 = -8
-0 `rotate` -3 = 0
-0 `rotate` -2 = 0
-0 `rotate` -1 = 0
-0 `rotate` 0 = 0
-0 `rotate` 1 = 0
-0 `rotate` 2 = 0
-0 `rotate` 3 = 0
-1 `rotate` -3 = 0
-1 `rotate` -2 = 0
-1 `rotate` -1 = 0
-1 `rotate` 0 = 1
-1 `rotate` 1 = 2
-1 `rotate` 2 = 4
-1 `rotate` 3 = 8
-2 `rotate` -3 = 0
-2 `rotate` -2 = 0
-2 `rotate` -1 = 1
-2 `rotate` 0 = 2
-2 `rotate` 1 = 4
-2 `rotate` 2 = 8
-2 `rotate` 3 = 16
-3 `rotate` -3 = 0
-3 `rotate` -2 = 0
-3 `rotate` -1 = 1
-3 `rotate` 0 = 3
-3 `rotate` 1 = 6
-3 `rotate` 2 = 12
-3 `rotate` 3 = 24
-#
-bit 0 = 1
-bit 1 = 2
-bit 2 = 4
-bit 3 = 8
-#
--3 `setBit` 0 = -3
--3 `setBit` 1 = -1
--3 `setBit` 2 = -3
--3 `setBit` 3 = -3
--3 `setBit` 32 = -3
--2 `setBit` 0 = -1
--2 `setBit` 1 = -2
--2 `setBit` 2 = -2
--2 `setBit` 3 = -2
--2 `setBit` 32 = -2
--1 `setBit` 0 = -1
--1 `setBit` 1 = -1
--1 `setBit` 2 = -1
--1 `setBit` 3 = -1
--1 `setBit` 32 = -1
-0 `setBit` 0 = 1
-0 `setBit` 1 = 2
-0 `setBit` 2 = 4
-0 `setBit` 3 = 8
-0 `setBit` 32 = 4294967296
-1 `setBit` 0 = 1
-1 `setBit` 1 = 3
-1 `setBit` 2 = 5
-1 `setBit` 3 = 9
-1 `setBit` 32 = 4294967297
-2 `setBit` 0 = 3
-2 `setBit` 1 = 2
-2 `setBit` 2 = 6
-2 `setBit` 3 = 10
-2 `setBit` 32 = 4294967298
-3 `setBit` 0 = 3
-3 `setBit` 1 = 3
-3 `setBit` 2 = 7
-3 `setBit` 3 = 11
-3 `setBit` 32 = 4294967299
-#
--3 `clearBit` 0 = -4
--3 `clearBit` 1 = -3
--3 `clearBit` 2 = -7
--3 `clearBit` 3 = -11
--3 `clearBit` 32 = -4294967299
--2 `clearBit` 0 = -2
--2 `clearBit` 1 = -4
--2 `clearBit` 2 = -6
--2 `clearBit` 3 = -10
--2 `clearBit` 32 = -4294967298
--1 `clearBit` 0 = -2
--1 `clearBit` 1 = -3
--1 `clearBit` 2 = -5
--1 `clearBit` 3 = -9
--1 `clearBit` 32 = -4294967297
-0 `clearBit` 0 = 0
-0 `clearBit` 1 = 0
-0 `clearBit` 2 = 0
-0 `clearBit` 3 = 0
-0 `clearBit` 32 = 0
-1 `clearBit` 0 = 0
-1 `clearBit` 1 = 1
-1 `clearBit` 2 = 1
-1 `clearBit` 3 = 1
-1 `clearBit` 32 = 1
-2 `clearBit` 0 = 2
-2 `clearBit` 1 = 0
-2 `clearBit` 2 = 2
-2 `clearBit` 3 = 2
-2 `clearBit` 32 = 2
-3 `clearBit` 0 = 2
-3 `clearBit` 1 = 1
-3 `clearBit` 2 = 3
-3 `clearBit` 3 = 3
-3 `clearBit` 32 = 3
-#
--3 `complementBit` 0 = -4
--3 `complementBit` 1 = -1
--3 `complementBit` 2 = -7
--3 `complementBit` 3 = -11
--3 `complementBit` 32 = -4294967299
--2 `complementBit` 0 = -1
--2 `complementBit` 1 = -4
--2 `complementBit` 2 = -6
--2 `complementBit` 3 = -10
--2 `complementBit` 32 = -4294967298
--1 `complementBit` 0 = -2
--1 `complementBit` 1 = -3
--1 `complementBit` 2 = -5
--1 `complementBit` 3 = -9
--1 `complementBit` 32 = -4294967297
-0 `complementBit` 0 = 1
-0 `complementBit` 1 = 2
-0 `complementBit` 2 = 4
-0 `complementBit` 3 = 8
-0 `complementBit` 32 = 4294967296
-1 `complementBit` 0 = 0
-1 `complementBit` 1 = 3
-1 `complementBit` 2 = 5
-1 `complementBit` 3 = 9
-1 `complementBit` 32 = 4294967297
-2 `complementBit` 0 = 3
-2 `complementBit` 1 = 0
-2 `complementBit` 2 = 6
-2 `complementBit` 3 = 10
-2 `complementBit` 32 = 4294967298
-3 `complementBit` 0 = 2
-3 `complementBit` 1 = 1
-3 `complementBit` 2 = 7
-3 `complementBit` 3 = 11
-3 `complementBit` 32 = 4294967299
-#
--3 `testBit` 0 = True
--3 `testBit` 1 = False
--3 `testBit` 2 = True
--3 `testBit` 3 = True
--3 `testBit` 32 = True
--2 `testBit` 0 = False
--2 `testBit` 1 = True
--2 `testBit` 2 = True
--2 `testBit` 3 = True
--2 `testBit` 32 = True
--1 `testBit` 0 = True
--1 `testBit` 1 = True
--1 `testBit` 2 = True
--1 `testBit` 3 = True
--1 `testBit` 32 = True
-0 `testBit` 0 = False
-0 `testBit` 1 = False
-0 `testBit` 2 = False
-0 `testBit` 3 = False
-0 `testBit` 32 = False
-1 `testBit` 0 = True
-1 `testBit` 1 = False
-1 `testBit` 2 = False
-1 `testBit` 3 = False
-1 `testBit` 32 = False
-2 `testBit` 0 = False
-2 `testBit` 1 = True
-2 `testBit` 2 = False
-2 `testBit` 3 = False
-2 `testBit` 32 = False
-3 `testBit` 0 = True
-3 `testBit` 1 = True
-3 `testBit` 2 = False
-3 `testBit` 3 = False
-3 `testBit` 32 = False
-#
-isSigned -3 = True
-isSigned -2 = True
-isSigned -1 = True
-isSigned 0 = True
-isSigned 1 = True
-isSigned 2 = True
-isSigned 3 = True
-#
diff --git a/ghc/tests/numeric/should_run/arith012.hs b/ghc/tests/numeric/should_run/arith012.hs
deleted file mode 100644 (file)
index 9558b37..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
--- !!! Testing NumExts
-module Main(main) where
-
-import NumExts
-
-main :: IO ()
-main = tst
-
-tst :: IO ()
-tst = do
-  test_doubleToFloat
-  test_floatToDouble
-  test_showHex
-  test_showOct
-  test_showBin
-
-----
--- Test data:
-doubles :: [Double]
-doubles = [ -1.2 , 0, 0.1, 0.5, 1.0, 1234.45454, 
-           1.6053e4, 1.64022e12, 6.894e-4, 6.34543455634582173,
-          5342413403.40540423255]
-ints :: [Int]
-ints = [ 0, 1, 255, 65513, 6029, 1024, 256, 201357245]
-
-integers :: [Integer]
-integers = [ 0, 1, 255, 65513, 6029, 1024, 256,
-           2343243543500233, 656194962055457832]
----
-
-test_doubleToFloat :: IO ()
-test_doubleToFloat = do
-  test_banner "doubleToFloat"
-  putStrLn (show doubles)
-  putStrLn (show $ map doubleToFloat doubles)
-
-test_floatToDouble :: IO ()
-test_floatToDouble = do
-  test_banner "doubleToFloat"
-  putStrLn (show doubles)
-  putStrLn (show $ map doubleToFloat doubles)
-  putStrLn (show $ map (floatToDouble.doubleToFloat) doubles)
-
-test_showHex :: IO ()
-test_showHex = do
-  test_banner "showHex"
-  putStrLn (show ints)
-  putStrLn (showList' (map showHex ints))
-  putStrLn (show integers)
-  putStrLn (showList' (map showHex integers))
-
-test_showBin :: IO ()
-test_showBin = do
-  test_banner "showBin"
-  putStrLn (show ints)
-  putStrLn (showList' (map showBin ints))
-  putStrLn (show integers)
-  putStrLn (showList' (map showBin integers))
-
-showList' :: [ShowS] -> String
-showList' [] = "[]"
-showList' (x:xs) = showChar '[' . x $ showl xs ""
-      where 
-       showl []     = showChar ']'
-       showl (x:xs) = showChar ',' . x . showl xs
-
-
-test_showOct :: IO ()
-test_showOct = do
-  test_banner "showOct"
-  putStrLn (show ints)
-  putStrLn (showList' (map showOct ints))
-  putStrLn (show integers)
-  putStrLn (showList' (map showOct integers))
-
-----
-test_banner :: String -> IO ()
-test_banner tst = do
-  putStrLn $ "--------------------------------"
-  putStrLn $ "--Testing " ++ tst
-  putStrLn $ "--------------------------------"
diff --git a/ghc/tests/numeric/should_run/arith012.stdout b/ghc/tests/numeric/should_run/arith012.stdout
deleted file mode 100644 (file)
index a641e42..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---------------------------------
---Testing doubleToFloat
---------------------------------
-[-1.2,0.0,0.1,0.5,1.0,1234.45454,16053.0,1.64022e12,6.894e-4,6.345434556345822,5.342413403405404e9]
-[-1.2,0.0,0.1,0.5,1.0,1234.4546,16053.0,1.64022e12,6.894e-4,6.3454347,5.3424133e9]
---------------------------------
---Testing doubleToFloat
---------------------------------
-[-1.2,0.0,0.1,0.5,1.0,1234.45454,16053.0,1.64022e12,6.894e-4,6.345434556345822,5.342413403405404e9]
-[-1.2,0.0,0.1,0.5,1.0,1234.4546,16053.0,1.64022e12,6.894e-4,6.3454347,5.3424133e9]
-[-1.2000000476837158,0.0,0.10000000149011612,0.5,1.0,1234.45458984375,16053.0,1.64021993472e12,6.894000107422471e-4,6.345434665679932,5.342413312e9]
---------------------------------
---Testing showHex
---------------------------------
-[0,1,255,65513,6029,1024,256,201357245]
-[0x0,0x1,0xff,0xffe9,0x178d,0x400,0x100,0xc0077bd]
-[0,1,255,65513,6029,1024,256,2343243543500233,656194962055457832]
-[0x0,0x1,0xff,0xffe9,0x178d,0x400,0x100,0x8532ae70855c9,0x91b45d760b76c28]
---------------------------------
---Testing showOct
---------------------------------
-[0,1,255,65513,6029,1024,256,201357245]
-[0o0,0o1,0o377,0o177751,0o13615,0o2000,0o400,0o1400073675]
-[0,1,255,65513,6029,1024,256,2343243543500233,656194962055457832]
-[0o0,0o1,0o377,0o177751,0o13615,0o2000,0o400,0o102462534702052711,0o44332135354055666050]
---------------------------------
---Testing showBin
---------------------------------
-[0,1,255,65513,6029,1024,256,201357245]
-[0b0,0b1,0b11111111,0b1111111111101001,0b1011110001101,0b10000000000,0b100000000,0b1100000000000111011110111101]
-[0,1,255,65513,6029,1024,256,2343243543500233,656194962055457832]
-[0b0,0b1,0b11111111,0b1111111111101001,0b1011110001101,0b10000000000,0b100000000,0b1000010100110010101011100111000010000101010111001001,0b100100011011010001011101011101100000101101110110110000101000]
diff --git a/ghc/tests/numeric/should_run/arith013.hs b/ghc/tests/numeric/should_run/arith013.hs
deleted file mode 100644 (file)
index 63784de..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- Test gcdInt/gcdInteger
-
-import PrelBase        ( gcdInt )
-import PrelNum ( gcdInteger )
-
-main :: IO ()
-main = do
-   test gcdInt     [                       -42, 0, 105             ]
-   test gcdInteger [-12193263111263526900, -42, 0, 105, 1234567890 ]
-
-
-test :: Integral a => (a -> a -> a) -> [a] -> IO ()
-test f xs = mapM_ print [ (a, b, f a b) | a <- xs, b <- reverse xs, a /= 0  || b /= 0 ]
diff --git a/ghc/tests/numeric/should_run/arith013.stdout b/ghc/tests/numeric/should_run/arith013.stdout
deleted file mode 100644 (file)
index ff44097..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(-42,105,21)
-(-42,0,42)
-(-42,-42,42)
-(0,105,105)
-(0,-42,42)
-(105,105,105)
-(105,0,105)
-(105,-42,21)
-(-12193263111263526900,1234567890,1234567890)
-(-12193263111263526900,105,15)
-(-12193263111263526900,0,12193263111263526900)
-(-12193263111263526900,-42,6)
-(-12193263111263526900,-12193263111263526900,12193263111263526900)
-(-42,1234567890,6)
-(-42,105,21)
-(-42,0,42)
-(-42,-42,42)
-(-42,-12193263111263526900,6)
-(0,1234567890,1234567890)
-(0,105,105)
-(0,-42,42)
-(0,-12193263111263526900,12193263111263526900)
-(105,1234567890,15)
-(105,105,105)
-(105,0,105)
-(105,-42,21)
-(105,-12193263111263526900,15)
-(1234567890,1234567890,1234567890)
-(1234567890,105,15)
-(1234567890,0,1234567890)
-(1234567890,-42,6)
-(1234567890,-12193263111263526900,1234567890)
diff --git a/ghc/tests/numeric/should_run/num001.hs b/ghc/tests/numeric/should_run/num001.hs
deleted file mode 100644 (file)
index 879605b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Main(main) where
-
-import Numeric
-import Ratio
-
-main = print ((fromRat (132874 % 23849))::Double)
diff --git a/ghc/tests/numeric/should_run/num001.stdout b/ghc/tests/numeric/should_run/num001.stdout
deleted file mode 100644 (file)
index 6d2f0c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5.571470501907837
diff --git a/ghc/tests/numeric/should_run/num002.hs b/ghc/tests/numeric/should_run/num002.hs
deleted file mode 100644 (file)
index 31ea76c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- Testing showInt, lightly.
-
-module Main(main) where
-
-import Numeric
-
-showSignedInt :: Integral a => a -> String
-showSignedInt x = showSigned (showInt) 0 x ""
-
-main = 
-  do
-   putStrLn (showInt (343023920121::Integer) [])
-   putStrLn (showInt (3430239::Int) [])
-   putStrLn (showInt (1212 :: Int) [])
-   putStrLn (showSignedInt (591125662431 `div` (517::Int)))
-   -- showInt just works over naturals, wrap it up inside
-   -- a use of Numeric.showSigned to show negative nums.
-   putStrLn (showSignedInt (-111::Int))
-   putStrLn (showInt (232189458241::Integer) [])
-
diff --git a/ghc/tests/numeric/should_run/num002.stdout b/ghc/tests/numeric/should_run/num002.stdout
deleted file mode 100644 (file)
index ce14dec..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
--3055754
--111
-232189458241
diff --git a/ghc/tests/numeric/should_run/num003.hs b/ghc/tests/numeric/should_run/num003.hs
deleted file mode 100644 (file)
index 146f0a6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- Testing readInt, lightly.
---
-module Main(main) where
-
-import Numeric
-import Char
-
-main = 
-  let 
-   rd :: ReadS Integer 
-   rd = readSigned (readInt 10 (isDigit) (digitToInt))
-  in
-  do
-   print (rd (show (343023920121::Integer)))
-   print (rd (show (3430239::Int)))
-   print (rd (show (1212 :: Int)))
-   print (rd (show (591125662431 `div` (517::Int))))
-   print (rd (show (-111::Int)))
-   print (rd (show (232189458241::Integer)))
-
diff --git a/ghc/tests/numeric/should_run/num003.stdout b/ghc/tests/numeric/should_run/num003.stdout
deleted file mode 100644 (file)
index 1266b60..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(-3055754,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/ghc/tests/numeric/should_run/num004.hs b/ghc/tests/numeric/should_run/num004.hs
deleted file mode 100644 (file)
index 7822565..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- Exercising Numeric.readSigned a bit
---
-module Main(main) where
-
-import Numeric
-import Char
-
-main = 
-  let 
-   rd :: ReadS Integer 
-   rd = readSigned (readInt 10 (isDigit) (digitToInt))
-  in
-  do
-   print (rd (show (343023920121::Integer)))
-   print (rd (show (3430239::Int)))
-   print (rd (show (-0 :: Int)))
-   print (rd (show (591125662431 `div` (517::Int))))
-   print (rd (show (-111::Int)))
-   print (rd (show (232189458241::Integer)))
-
diff --git a/ghc/tests/numeric/should_run/num004.stdout b/ghc/tests/numeric/should_run/num004.stdout
deleted file mode 100644 (file)
index 12610a1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(-3055754,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/ghc/tests/numeric/should_run/num005.hs b/ghc/tests/numeric/should_run/num005.hs
deleted file mode 100644 (file)
index ef647a6..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
--- Exercising Numeric.readSigned a bit
---
-module Main(main) where
-
-import Numeric
-
-main = 
-  let 
-   ls = ["3489348394032498320438240938403","0","-1","1","34323","2L","012","0x23","3243ab"]
-   present str f ls =
-    sequence (map (\ v -> putStr ('\n':str ++ 
-                                  ' ': v   ++ 
-                                 " = "    ++ 
-                                 (show (f v)))) ls)
-  in
-  do
-   present "(readDec::ReadS Integer)" (readDec::ReadS Integer) ls
-   present "(readDec::ReadS Int)"     (readDec::ReadS Int) ls
-   present "(readOct::ReadS Integer)" (readOct::ReadS Integer) ls
-   present "(readOct::ReadS Int)"     (readOct::ReadS Int) ls
-   present "(readHex::ReadS Integer)" (readHex::ReadS Integer) ls
-   present "(readHex::ReadS Int)"     (readHex::ReadS Int) ls
-   putStrLn ""
diff --git a/ghc/tests/numeric/should_run/num005.stdout b/ghc/tests/numeric/should_run/num005.stdout
deleted file mode 100644 (file)
index f6ba218..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(-1268053597,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(1083409411,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/ghc/tests/numeric/should_run/num006.hs b/ghc/tests/numeric/should_run/num006.hs
deleted file mode 100644 (file)
index 0d848fd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
--- Exercising the showing of positive numbers at various bases.
---
-module Main(main) where
-
-import Numeric
-import Char
-import NumExts
-
---showDec :: Integral a => a -> ShowS
-showDec = showInt
-
-{-
---showBinary :: Integral a => a -> ShowS
-showBinary n r = 
- showString "0b" $
- showIntAtBase 2 (toChr) n r
- where toChr d = chr (ord '0' + fromIntegral d)
--}
-
-main = 
- do
-  print (map (\ x -> showOct x []) [1..32])
-  print (map (\ x -> showDec x []) [1..32])
-  print (map (\ x -> showHex x []) [1..32])
---  print (map (\ x -> showBinary x []) [1..32])
-  putStrLn (showOct (241324784::Int) [])
-  putStrLn (showDec (241324784::Int) [])
-  putStrLn (showHex (241324784::Int) [])
----  putStrLn (showBinary (241324784::Int) [])
diff --git a/ghc/tests/numeric/should_run/num006.stdout b/ghc/tests/numeric/should_run/num006.stdout
deleted file mode 100644 (file)
index 2de13d0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-["0o1","0o2","0o3","0o4","0o5","0o6","0o7","0o10","0o11","0o12","0o13","0o14","0o15","0o16","0o17","0o20","0o21","0o22","0o23","0o24","0o25","0o26","0o27","0o30","0o31","0o32","0o33","0o34","0o35","0o36","0o37","0o40"]
-["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"]
-["0x1","0x2","0x3","0x4","0x5","0x6","0x7","0x8","0x9","0xa","0xb","0xc","0xd","0xe","0xf","0x10","0x11","0x12","0x13","0x14","0x15","0x16","0x17","0x18","0x19","0x1a","0x1b","0x1c","0x1d","0x1e","0x1f","0x20"]
-0o1630451360
-241324784
-0xe6252f0
diff --git a/ghc/tests/numeric/should_run/num007.hs b/ghc/tests/numeric/should_run/num007.hs
deleted file mode 100644 (file)
index 1c40ecf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- Exercising the reading of positive numbers at various bases.
---
-module Main(main) where
-
-import Numeric
-
-main = 
- do
-  putStrLn (show (readOct "00000111"))
-  putStrLn (show (readDec "00000111"))
-  putStrLn (show (readHex "00000111"))
-  putStrLn (show (readOct "-24"))
-  putStrLn (show (readDec "-24"))
-  putStrLn (show (readHex "-24"))
-  putStrLn (show ((readOct ::ReadS Integer) "3248784372843778438743"))
-  putStrLn (show ((readDec ::ReadS Integer) "3248784372843778438743"))
-  putStrLn (show ((readHex ::ReadS Integer) "3248784372843778438743"))
diff --git a/ghc/tests/numeric/should_run/num007.stdout b/ghc/tests/numeric/should_run/num007.stdout
deleted file mode 100644 (file)
index ef60021..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[(73,"")]
-[(111,"")]
-[(273,"")]
-[]
-[]
-[]
-[(212,"8784372843778438743")]
-[(3248784372843778438743,"")]
-[(60788519836879239998834499,"")]
diff --git a/ghc/tests/numeric/should_run/num008.hs b/ghc/tests/numeric/should_run/num008.hs
deleted file mode 100644 (file)
index d9e8c47..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
--- showing floats
---
-module Main(main) where
-
-import Numeric
-
-main = 
- do
-  putStrLn (showEFloat (Just 7) (1.82173691287639817263897126389712638972163e-300::Double) [])
-  putStrLn (showFFloat (Just 7) (1.82173691287639817263897126389712638972163::Double) [])
-  putStrLn (showGFloat (Just 7) (1.82173691287639817263897126389712638972163e-300::Double) [])
-  putStrLn (showEFloat (Just 7) (1.82173691287639817263897126389712638972163e-300::Float) [])
-  putStrLn (showEFloat (Just 10) (0.0::Double) [])
-  putStrLn (showEFloat (Just 0) (2.3::Double) [])
-  putStrLn (showEFloat Nothing (0.0::Double) [])
-  putStrLn (showEFloat Nothing (3::Float) [])
-  putStrLn (showEFloat Nothing (0.5::Float) [])
-  putStrLn (show (floatToDigits 10 (0.0::Double)))
-  putStrLn (showFFloat (Just 7) (1.82173691287639817263897126389712638972163e-300::Float) [])
-  putStrLn (showGFloat (Just 7) (1.82173691287639817263897126389712638972163e-300::Float) [])
-
diff --git a/ghc/tests/numeric/should_run/num008.stdout b/ghc/tests/numeric/should_run/num008.stdout
deleted file mode 100644 (file)
index a957190..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-1.8217369e-300
-1.8217369
-1.8217369e-300
-0.0000000e0
-0.0000000000e0
-2.3e0
-0.0e0
-3.0e0
-5.0e-1
-([0],0)
-0.0000000
-0.0000000
diff --git a/ghc/tests/numeric/should_run/num009.hs b/ghc/tests/numeric/should_run/num009.hs
deleted file mode 100644 (file)
index 37d0513..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! tests that minBound::Int is correctly handled (for Int & Integer
-
--- (not necessarily Haskell 98: relies on Int being a 32-bit type.)
-
-main = do
-  print (-2147483648 :: Int)                   -- -2147483648
-  print ((-2147483647)-1 :: Int)               -- -2147483648
-  print (-2147483648 :: Integer)               -- -2147483648
-  print ((-2147483648 :: Int) >= 0)            -- False
-  print ((-2147483648 :: Integer) >= 0)                -- False
-  print (-(-2147483648) :: Int)                        -- <undefined>
-  print (abs (-2147483648) :: Int)             -- <undefined>
-  print (abs ((-2147483647)-1) :: Int)         -- <undefined>
-  print (abs (-2147483648) :: Integer)         -- 2147483648
-  print (abs ((-2147483647)-1) :: Integer)     -- 2147483648 (wrong in 4.04)
-  print (fromInteger (-2147483648 :: Integer) :: Int)     -- -2147483648
-  print (fromInteger ((-2147483647)-1 :: Integer) :: Int)  -- -2147483648
diff --git a/ghc/tests/numeric/should_run/num009.stdout b/ghc/tests/numeric/should_run/num009.stdout
deleted file mode 100644 (file)
index 902e369..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--2147483648
--2147483648
--2147483648
-False
-False
--2147483648
--2147483648
--2147483648
-2147483648
-2147483648
--2147483648
--2147483648
diff --git a/ghc/tests/numeric/should_run/num010.hs b/ghc/tests/numeric/should_run/num010.hs
deleted file mode 100644 (file)
index 027b5e8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! tests that local fixity declarations work
-
--- If local fixity decls don't work you get "14"
--- The right answer is "11"
-
-val = 3 +! 4 *! 2
-    where (+!) = (+)
-          (*!) = (*)
-          infixl 6 +!
-          infixl 7 *!
-
-main = print val
-
diff --git a/ghc/tests/numeric/should_run/num010.stdout b/ghc/tests/numeric/should_run/num010.stdout
deleted file mode 100644 (file)
index b4de394..0000000
+++ /dev/null
@@ -1 +0,0 @@
-11
diff --git a/ghc/tests/numeric/should_run/num011.hs b/ghc/tests/numeric/should_run/num011.hs
deleted file mode 100644 (file)
index a8b1c4c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-import Ratio
-main = print (fromRational (1 % 85070591730234615865843651857942052864) :: Float)
diff --git a/ghc/tests/numeric/should_run/num011.stdout b/ghc/tests/numeric/should_run/num011.stdout
deleted file mode 100644 (file)
index 202e6ca..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.1754944e-38
diff --git a/ghc/tests/printing/Makefile b/ghc/tests/printing/Makefile
deleted file mode 100644 (file)
index 5268832..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/printing/should_compile/Makefile b/ghc/tests/printing/should_compile/Makefile
deleted file mode 100644 (file)
index 14876ec..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint -hi-with-declarations -hi-with-exports -hi-with-instances -hi-with-fixities -ddump-tc
-
-print002_HC_OPTS = -fno-implicit-prelude
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/printing/should_compile/Print001.hs b/ghc/tests/printing/should_compile/Print001.hs
deleted file mode 100644 (file)
index 2e76993..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- !!! Print001.hs: printing of types (esp for interfaces)
-
-module Print001 where
-
-import Ix
-
-data Foo d e f = MkFoo [((d->Int)->d)->e] (d->e, e->e) ()
-data Bar a = BarNil
-          | BarCon (Foo a a a) (Bar a)
-
-mkFoo = MkFoo
-
-f :: Eq a => (a -> b -> c) -> (a -> b -> c)
-f x = x
-
-f2 :: (Eq a, Ord a, Ix c) => (a -> b -> c) -> (a -> b -> c)
-f2 x = x
-
-g :: Foo Int (a -> b) (a -> [(a, Double, Int)]) -> Float
-g x = 2.0
diff --git a/ghc/tests/printing/should_compile/Print001.stderr b/ghc/tests/printing/should_compile/Print001.stderr
deleted file mode 100644 (file)
index aa59010..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-==================== Typechecked ====================
-Print001.BarNil{-rb,x-} =
-    \ a{-rsr-} -> Print001.BarNil{-rb,x-} {__a a{-rsr-}}
-Print001.BarCon{-rd,x-} =
-    \ a{-rsr-} tpl_B1 tpl_B2 ->
-       Print001.BarCon{-rd,x-} {__a a{-rsr-} tpl_B1 tpl_B2}
-Print001.MkFoo{-rh,x-} =
-    \ d{-rsv-} e{-rsw-} f{-rsx-} tpl_B1 tpl_B2 tpl_B3 ->
-       Print001.MkFoo{-rh,x-} {__a d{-rsv-}
-                               __a e{-rsw-}
-                               __a f{-rsx-}
-                               tpl_B1
-                               tpl_B2
-                               tpl_B3}
-AbsBinds
-[a{-a145-}, b{-a146-}]
-[]
-[([a{-a145-}, b{-a146-}], Print001.g{-r7,x-}, g{-a142-})]
-    g{-a142-} x{-a148-} = lit_a15c
-AbsBinds
-[c{-a14q-}, a{-a14r-}, b{-a14s-}]
-[_dEq{-a14w-}, _dOrd{-a14x-}, _dIx{-a14y-}]
-[([a{-a14r-}, b{-a14s-}, c{-a14q-}],
-  Print001.f2{-r5,x-},
-  f2{-a14n-})]
-    f2{-a14n-} x{-a14u-} = x{-a14u-}
-AbsBinds
-[c{-a14T-}, a{-a14U-}, b{-a14V-}]
-[_dEq{-a14Z-}]
-[([a{-a14U-}, b{-a14V-}, c{-a14T-}],
-  Print001.f{-r3,x-},
-  f{-a14Q-})]
-    f{-a14Q-} x{-a14X-} = x{-a14X-}
-AbsBinds
-[d{-a156-}, e{-a158-}, f{-a15a-}]
-[]
-[([d{-a156-}, e{-a158-}, f{-a15a-}],
-  Print001.mkFoo{-r1,x-},
-  mkFoo{-a15b-})]
-    mkFoo{-a15b-}
-       = Print001.MkFoo{-rh,x-} [d{-a156-}, e{-a158-}, f{-a15a-}]
-lit_a15c = PrelBase.F#{-66,w-} 2.0#
-
-
-ghc: module version changed to 1; reason: no old .hi file
-__export Print001 f f2 g mkFoo Bar{BarNil BarCon} Foo{MkFoo};
-1 data Bar a = BarNil |  BarCon (Foo a a a) (Bar a) ;
-1 data Foo d e f = MkFoo [((d -> PrelBase.Int) -> d) -> e] (d -> e, e -> e) PrelBase.() ;
-1 f :: __forall [a b c] {PrelBase.Eq a} => (a -> b -> c) -> a -> b -> c ;
-1 f2 :: __forall [a b c] {PrelBase.Eq a, PrelBase.Ord a, Ix.Ix c} => (a -> b -> c) -> a -> b -> c ;
-1 g :: __forall [a b] => Foo PrelBase.Int (a -> b) (a -> [(a, PrelBase.Double, PrelBase.Int)]) -> PrelBase.Float ;
-1 mkFoo :: __forall [d e f] => [((d -> PrelBase.Int) -> d) -> e] -> (d -> e, e -> e) -> PrelBase.() -> Foo d e f ;
diff --git a/ghc/tests/printing/should_compile/Print002.hs b/ghc/tests/printing/should_compile/Print002.hs
deleted file mode 100644 (file)
index 4cb5c2b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
--- !!! Print002.hs: printing various entities in prefix/infix forms
--- !!! (both in various syntaxes & in interfaces)
-
-module Print002 where
-
--- type & data constructors
-
-data Foo a b c
-  = MkFoo1 a a
-  | (:##) b c
-  | b `MkFoo3` b
-  | c :*** c
-  deriving (Eq, Ord)
-
--- classes and methods
-
-class Bar a where
-    meth1, (/////) :: a -> a -> Bool
-    meth2 :: a -> b -> Bool
-
-class (Bar a) => Bar2 a            -- no methods
-
--- regular values (and uses of the above)
-
-f1  x y            = x `MkFoo1` y
-x `f1a` y    = MkFoo1 x y
-
-x `f2` y    = (:##) x y
-f2a x  y    = x :## y
-
-(....) x y  = MkFoo3 x y
-x .....  y  = x `MkFoo3` y
-
-x <<<< y    = x :*** y
-(<<<<) x y  = (:***) x y
-
-f3a x y = meth1 x y
-f3b x y = x `meth1` y
-f3c x y = (/////) x y
-f3d x y = x ///// y
diff --git a/ghc/tests/printing/should_compile/Print002.stderr b/ghc/tests/printing/should_compile/Print002.stderr
deleted file mode 100644 (file)
index 63445c4..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-
-==================== Typechecked ====================
-Print002.MkFoo1{-rz,x-} =
-    \ a{-rsQ-} b{-rsR-} c{-rsS-} tpl_B1 tpl_B2 ->
-       Print002.MkFoo1{-rz,x-} {__a a{-rsQ-}
-                                __a b{-rsR-}
-                                __a c{-rsS-}
-                                tpl_B1
-                                tpl_B2}
-Print002.:##{-rB,x-} =
-    \ a{-rsQ-} b{-rsR-} c{-rsS-} tpl_B1 tpl_B2 ->
-       Print002.:##{-rB,x-} {__a a{-rsQ-}
-                             __a b{-rsR-}
-                             __a c{-rsS-}
-                             tpl_B1
-                             tpl_B2}
-Print002.MkFoo3{-rD,x-} =
-    \ a{-rsQ-} b{-rsR-} c{-rsS-} tpl_B1 tpl_B2 ->
-       Print002.MkFoo3{-rD,x-} {__a a{-rsQ-}
-                                __a b{-rsR-}
-                                __a c{-rsS-}
-                                tpl_B1
-                                tpl_B2}
-Print002.:***{-rF,x-} =
-    \ a{-rsQ-} b{-rsR-} c{-rsS-} tpl_B1 tpl_B2 ->
-       Print002.:***{-rF,x-} {__a a{-rsQ-}
-                              __a b{-rsR-}
-                              __a c{-rsS-}
-                              tpl_B1
-                              tpl_B2}
-AbsBinds
-[a{-a11K-}]
-[_dBar{-a11R-}]
-[([a{-a11K-}], Print002.f3d{-rl,x-}, f3d{-a11O-})]
-    /////{-a1gB-} = Print002./////{-rt,x-} a{-a11K-} _dBar{-a11R-}
-    f3d{-a11O-} x{-a11H-} y{-a11M-} = x{-a11H-} /////{-a1gB-} y{-a11M-}
-AbsBinds
-[a{-a12d-}]
-[_dBar{-a12k-}]
-[([a{-a12d-}], Print002.f3c{-rj,x-}, f3c{-a12h-})]
-    /////{-a1gC-} = Print002./////{-rt,x-} a{-a12d-} _dBar{-a12k-}
-    f3c{-a12h-} x{-a12a-} y{-a12f-} = /////{-a1gC-} x{-a12a-} y{-a12f-}
-AbsBinds
-[a{-a12G-}]
-[_dBar{-a12N-}]
-[([a{-a12G-}], Print002.f3b{-rh,x-}, f3b{-a12K-})]
-    meth1{-a1gD-} = Print002.meth1{-rv,x-} a{-a12G-} _dBar{-a12N-}
-    f3b{-a12K-} x{-a12D-} y{-a12I-}
-                 = x{-a12D-} `meth1{-a1gD-}` y{-a12I-}
-AbsBinds
-[a{-a139-}]
-[_dBar{-a13g-}]
-[([a{-a139-}], Print002.f3a{-rf,x-}, f3a{-a13d-})]
-    meth1{-a1gE-} = Print002.meth1{-rv,x-} a{-a139-} _dBar{-a13g-}
-    f3a{-a13d-} x{-a136-} y{-a13b-} = meth1{-a1gE-} x{-a136-} y{-a13b-}
-AbsBinds
-[a{-a13N-}, b{-a13P-}, c{-a13R-}]
-[]
-[([a{-a13N-}, b{-a13P-}, c{-a13R-}],
-  Print002.<<<<{-rd,x-},
-  <<<<{-a13U-})]
-    <<<<{-a13U-} x{-a13G-} y{-a13I-}
-                  = Print002.:***{-rF,x-} [a{-a13N-}, b{-a13P-}, c{-a13R-}]
-                        x{-a13G-} y{-a13I-}
-    <<<<{-a13U-} x{-a13S-} y{-a13T-}
-                  = Print002.:***{-rF,x-} [a{-a13N-}, b{-a13P-}, c{-a13R-}] x{-a13S-}
-                                                                            y{-a13T-}
-AbsBinds
-[a{-a14f-}, b{-a14h-}, c{-a14j-}]
-[]
-[([a{-a14f-}, b{-a14h-}, c{-a14j-}],
-  Print002......{-rb,x-},
-  .....{-a14o-})]
-    .....{-a14o-} x{-a14k-} y{-a14m-}
-                   = Print002.MkFoo3{-rD,x-} [a{-a14f-}, b{-a14h-}, c{-a14j-}]
-                         x{-a14k-} y{-a14m-}
-AbsBinds
-[a{-a14J-}, b{-a14L-}, c{-a14N-}]
-[]
-[([a{-a14J-}, b{-a14L-}, c{-a14N-}],
-  Print002.....{-r9,x-},
-  ....{-a14S-})]
-    ....{-a14S-} x{-a14O-} y{-a14Q-}
-                  = Print002.MkFoo3{-rD,x-}
-                        [a{-a14J-}, b{-a14L-}, c{-a14N-}] x{-a14O-} y{-a14Q-}
-AbsBinds
-[a{-a15d-}, b{-a15f-}, c{-a15h-}]
-[]
-[([a{-a15d-}, b{-a15f-}, c{-a15h-}],
-  Print002.f2a{-r7,x-},
-  f2a{-a15m-})]
-    f2a{-a15m-} x{-a15i-} y{-a15k-}
-                 = Print002.:##{-rB,x-} [a{-a15d-}, b{-a15f-}, c{-a15h-}]
-                       x{-a15i-} y{-a15k-}
-AbsBinds
-[a{-a15H-}, b{-a15J-}, c{-a15L-}]
-[]
-[([a{-a15H-}, b{-a15J-}, c{-a15L-}],
-  Print002.f2{-r5,x-},
-  f2{-a15Q-})]
-    f2{-a15Q-} x{-a15M-} y{-a15O-}
-                = Print002.:##{-rB,x-} [a{-a15H-}, b{-a15J-}, c{-a15L-}] x{-a15M-}
-                                                                         y{-a15O-}
-AbsBinds
-[a{-a16b-}, b{-a16d-}, c{-a16f-}]
-[]
-[([a{-a16b-}, b{-a16d-}, c{-a16f-}],
-  Print002.f1a{-r3,x-},
-  f1a{-a16k-})]
-    f1a{-a16k-} x{-a16g-} y{-a16i-}
-                 = Print002.MkFoo1{-rz,x-}
-                       [a{-a16b-}, b{-a16d-}, c{-a16f-}] x{-a16g-} y{-a16i-}
-AbsBinds
-[a{-a16F-}, b{-a16H-}, c{-a16J-}]
-[]
-[([a{-a16F-}, b{-a16H-}, c{-a16J-}],
-  Print002.f1{-r1,x-},
-  f1{-a16O-})]
-    f1{-a16O-} x{-a16K-} y{-a16M-}
-                = Print002.MkFoo1{-rz,x-} [a{-a16F-}, b{-a16H-}, c{-a16J-}]
-                      x{-a16K-} y{-a16M-}
-AbsBinds
-[a{-a17m-}, b{-a17o-}, c{-a17q-}]
-[]
-[([a{-a17m-}, b{-a17o-}, c{-a17q-}],
-  con2tag_Foo#{-rXU-},
-  con2tag_Foo#{-a17r-})]
-    con2tag_Foo#{-a17r-} (Print002.MkFoo1{-rz,x-} _ _) = 0#
-    con2tag_Foo#{-a17r-} (Print002.:##{-rB,x-} _ _) = 1#
-    con2tag_Foo#{-a17r-} (Print002.MkFoo3{-rD,x-} _ _) = 2#
-    con2tag_Foo#{-a17r-} (Print002.:***{-rF,x-} _ _) = 3#
-AbsBinds
-[a{-a19v-}, b{-a19x-}, c{-a19z-}]
-[_dEq{-a19R-}, _dEq{-a19S-}, _dEq{-a19T-}]
-[([a{-a19v-}, b{-a19x-}, c{-a19z-}],
-  Print002._fEqFoo{-r17s,x-},
-  _dEq{-a17C-})]
-    =={-a1gN-} = =={-a17U-}
-    =={-a1gL-} = PrelBase.=={-01L,i-} c{-a19z-} _dEq{-a19Z-}
-    =={-a1gM-} = =={-a1gL-}
-    =={-a1gK-} = =={-a1gL-}
-    =={-a1gI-} = PrelBase.=={-01L,i-} b{-a19x-} _dEq{-a19X-}
-    =={-a1gJ-} = =={-a1gI-}
-    =={-a1gH-} = =={-a1gI-}
-    =={-a1gG-} = PrelBase.=={-01L,i-} a{-a19v-} _dEq{-a19V-}
-    =={-a1gF-} = =={-a1gG-}
-    _dEq{-a19Z-} = _dEq{-a19T-}
-    _dEq{-a19X-} = _dEq{-a19S-}
-    _dEq{-a19V-} = _dEq{-a19R-}
-    AbsBinds [] [] [([], /={-a17E-}, /={-a17G-})]
-       /={-a17G-} a{-a17N-} b{-a17R-}
-                    = PrelBase.not{-rIN,i-} =={-a1gN-} a{-a17N-} b{-a17R-}
-    AbsBinds [] [] [([], =={-a17U-}, =={-a17W-})]
-       =={-a17W-} (Print002.MkFoo1{-rz,x-} a1{-a18e-} a2{-a18l-})
-                  (Print002.MkFoo1{-rz,x-} b1{-a18k-} b2{-a18p-})
-                    = (a1{-a18e-} =={-a1gG-} b1{-a18k-})
-                      PrelBase.&&{-rrR,i-} (a2{-a18l-} =={-a1gF-} b2{-a18p-})
-       =={-a17W-} (Print002.:##{-rB,x-} a1{-a18G-} a2{-a18N-})
-                  (Print002.:##{-rB,x-} b1{-a18M-} b2{-a18R-})
-                    = (a1{-a18G-} =={-a1gI-} b1{-a18M-})
-                      PrelBase.&&{-rrR,i-} (a2{-a18N-} =={-a1gL-} b2{-a18R-})
-       =={-a17W-} (Print002.MkFoo3{-rD,x-} a1{-a198-} a2{-a19f-})
-                  (Print002.MkFoo3{-rD,x-} b1{-a19e-} b2{-a19j-})
-                    = (a1{-a198-} =={-a1gJ-} b1{-a19e-})
-                      PrelBase.&&{-rrR,i-} (a2{-a19f-} =={-a1gH-} b2{-a19j-})
-       =={-a17W-} (Print002.:***{-rF,x-} a1{-a19A-} a2{-a19H-})
-                  (Print002.:***{-rF,x-} b1{-a19G-} b2{-a19L-})
-                    = (a1{-a19A-} =={-a1gM-} b1{-a19G-})
-                      PrelBase.&&{-rrR,i-} (a2{-a19H-} =={-a1gK-} b2{-a19L-})
-       =={-a17W-} a{-a19O-} b{-a19Q-} = PrelBase.False{-65,w-}
-    _dEq{-a17C-} =
-       PrelBase._DEq{-rJI,i-}
-           (Print002.Foo{-rx,x-} a{-a19v-} b{-a19x-} c{-a19z-}) /={-a17E-}
-                                                                =={-a17U-}
-AbsBinds
-[a{-a1ai-}, b{-a1aj-}, c{-a1ak-}]
-[_dOrd{-a1g7-}, _dOrd{-a1g9-}, _dOrd{-a1ga-}, _dEq{-a1gb-}]
-[([a{-a1ai-}, b{-a1aj-}, c{-a1ak-}],
-  Print002._fOrdFoo{-r1a3,x-},
-  _dOrd{-a1ab-})]
-    compare{-a1gT-} = compare{-a1cc-}
-    compare{-a1gS-} = compare{-a1cc-}
-    compare{-a1gR-} = compare{-a1cc-}
-    compare{-a1gQ-} = compare{-a1cc-}
-    compare{-a1gP-} = compare{-a1cc-}
-    compare{-a1gO-} = compare{-a1cc-}
-    _dOrd{-a1g4-} = _dOrd{-a1ga-}
-    _dOrd{-a1g5-} = _dOrd{-a1g9-}
-    _dOrd{-a1g6-} = _dOrd{-a1g7-}
-    _dEq{-a1g8-} = _dEq{-a1gb-}
-    AbsBinds [] [] [([], min{-a1ad-}, min{-a1af-})]
-       min{-a1af-} a{-a1ar-} b{-a1as-}
-                     = case compare{-a1gT-} a{-a1ar-} b{-a1as-} of
-                         PrelBase.LT{-rJk,i-} -> a{-a1ar-}
-                         PrelBase.EQ{-rsT,i-} -> b{-a1as-}
-                         PrelBase.GT{-rJl,i-} -> b{-a1as-}
-    AbsBinds [] [] [([], max{-a1aA-}, max{-a1aC-})]
-       max{-a1aC-} a{-a1aM-} b{-a1aL-}
-                     = case compare{-a1gS-} a{-a1aM-} b{-a1aL-} of
-                         PrelBase.LT{-rJk,i-} -> b{-a1aL-}
-                         PrelBase.EQ{-rsT,i-} -> a{-a1aM-}
-                         PrelBase.GT{-rJl,i-} -> a{-a1aM-}
-    AbsBinds [] [] [([], >{-a1aU-}, >{-a1aW-})]
-       >{-a1aW-} a{-a1b5-} b{-a1bb-}
-                   = case compare{-a1gR-} a{-a1b5-} b{-a1bb-} of
-                       PrelBase.LT{-rJk,i-} -> PrelBase.False{-65,w-}
-                       PrelBase.EQ{-rsT,i-} -> PrelBase.False{-65,w-}
-                       PrelBase.GT{-rJl,i-} -> PrelBase.True{-6y,w-}
-    AbsBinds [] [] [([], >={-a1be-}, >={-a1bg-})]
-       >={-a1bg-} a{-a1bp-} b{-a1bv-}
-                    = case compare{-a1gQ-} a{-a1bp-} b{-a1bv-} of
-                        PrelBase.LT{-rJk,i-} -> PrelBase.False{-65,w-}
-                        PrelBase.EQ{-rsT,i-} -> PrelBase.True{-6y,w-}
-                        PrelBase.GT{-rJl,i-} -> PrelBase.True{-6y,w-}
-    AbsBinds [] [] [([], <={-a1by-}, <={-a1bA-})]
-       <={-a1bA-} a{-a1bJ-} b{-a1bP-}
-                    = case compare{-a1gP-} a{-a1bJ-} b{-a1bP-} of
-                        PrelBase.LT{-rJk,i-} -> PrelBase.True{-6y,w-}
-                        PrelBase.EQ{-rsT,i-} -> PrelBase.True{-6y,w-}
-                        PrelBase.GT{-rJl,i-} -> PrelBase.False{-65,w-}
-    AbsBinds [] [] [([], <{-a1bS-}, <{-a1bU-})]
-       <{-a1bU-} a{-a1c3-} b{-a1c9-}
-                   = case compare{-a1gO-} a{-a1c3-} b{-a1c9-} of
-                       PrelBase.LT{-rJk,i-} -> PrelBase.True{-6y,w-}
-                       PrelBase.EQ{-rsT,i-} -> PrelBase.False{-65,w-}
-                       PrelBase.GT{-rJl,i-} -> PrelBase.False{-65,w-}
-    AbsBinds [] [] [([], compare{-a1cc-}, compare{-a1ce-})]
-       compare{-a1ce-} a{-a1fm-} b{-a1fn-}
-                         = case
-                               con2tag_Foo#{-rXU-} [a{-a1ai-}, b{-a1aj-}, c{-a1ak-}] a{-a1fm-}
-                           of
-                             a#{-a1fB-}
-                               -> case
-                                      con2tag_Foo#{-rXU-}
-                                          [a{-a1ai-}, b{-a1aj-}, c{-a1ak-}] b{-a1fn-}
-                                  of
-                                    b#{-a1fH-}
-                                      -> if a#{-a1fB-} PrelGHC.==#{-99,w-} b#{-a1fH-} then
-                                             cmp_eq{-a1h2-} a{-a1fm-} b{-a1fn-}
-                                         else
-                                             if a#{-a1fB-} PrelGHC.<#{-9b,w-} b#{-a1fH-} then
-                                                 PrelBase.LT{-rJk,i-}
-                                             else
-                                                 PrelBase.GT{-rJl,i-}
-                         where
-                             {- nonrec -}
-                             AbsBinds
-                             [a{-a1eO-}, b{-a1eQ-}, c{-a1eS-}]
-                             [_dOrd{-a1fw-}, _dOrd{-a1ft-}, _dOrd{-a1fq-}]
-                             [([a{-a1eO-}, b{-a1eQ-}, c{-a1eS-}],
-                               cmp_eq{-rZE-},
-                               cmp_eq{-a1fo-})]
-                                 compare{-a1h0-} =
-                                     PrelBase.compare{-rJt,i-} c{-a1eS-} _dOrd{-a1fw-}
-                                 compare{-a1h1-} = compare{-a1h0-}
-                                 compare{-a1gZ-} = compare{-a1h0-}
-                                 compare{-a1gX-} =
-                                     PrelBase.compare{-rJt,i-} b{-a1eQ-} _dOrd{-a1ft-}
-                                 compare{-a1gY-} = compare{-a1gX-}
-                                 compare{-a1gW-} = compare{-a1gX-}
-                                 compare{-a1gV-} =
-                                     PrelBase.compare{-rJt,i-} a{-a1eO-} _dOrd{-a1fq-}
-                                 compare{-a1gU-} = compare{-a1gV-}
-                                 cmp_eq{-a1fo-} (Print002.MkFoo1{-rz,x-} a1{-a1db-} a2{-a1d4-})
-                                                (Print002.MkFoo1{-rz,x-} b1{-a1dg-} b2{-a1da-})
-                                                  = case compare{-a1gV-} a1{-a1db-} b1{-a1dg-} of
-                                                      PrelBase.LT{-rJk,i-} -> PrelBase.LT{-rJk,i-}
-                                                      PrelBase.EQ{-rsT,i-}
-                                                        -> case
-                                                               compare{-a1gU-} a2{-a1d4-}
-                                                                               b2{-a1da-}
-                                                           of
-                                                             PrelBase.LT{-rJk,i-}
-                                                               -> PrelBase.LT{-rJk,i-}
-                                                             PrelBase.EQ{-rsT,i-}
-                                                               -> PrelBase.EQ{-rsT,i-}
-                                                             PrelBase.GT{-rJl,i-}
-                                                               -> PrelBase.GT{-rJl,i-}
-                                                      PrelBase.GT{-rJl,i-} -> PrelBase.GT{-rJl,i-}
-                                 cmp_eq{-a1fo-} (Print002.:##{-rB,x-} a1{-a1dR-} a2{-a1dK-})
-                                                (Print002.:##{-rB,x-} b1{-a1dW-} b2{-a1dQ-})
-                                                  = case compare{-a1gX-} a1{-a1dR-} b1{-a1dW-} of
-                                                      PrelBase.LT{-rJk,i-} -> PrelBase.LT{-rJk,i-}
-                                                      PrelBase.EQ{-rsT,i-}
-                                                        -> case
-                                                               compare{-a1h0-} a2{-a1dK-}
-                                                                               b2{-a1dQ-}
-                                                           of
-                                                             PrelBase.LT{-rJk,i-}
-                                                               -> PrelBase.LT{-rJk,i-}
-                                                             PrelBase.EQ{-rsT,i-}
-                                                               -> PrelBase.EQ{-rsT,i-}
-                                                             PrelBase.GT{-rJl,i-}
-                                                               -> PrelBase.GT{-rJl,i-}
-                                                      PrelBase.GT{-rJl,i-} -> PrelBase.GT{-rJl,i-}
-                                 cmp_eq{-a1fo-} (Print002.MkFoo3{-rD,x-} a1{-a1ex-} a2{-a1eq-})
-                                                (Print002.MkFoo3{-rD,x-} b1{-a1eC-} b2{-a1ew-})
-                                                  = case compare{-a1gY-} a1{-a1ex-} b1{-a1eC-} of
-                                                      PrelBase.LT{-rJk,i-} -> PrelBase.LT{-rJk,i-}
-                                                      PrelBase.EQ{-rsT,i-}
-                                                        -> case
-                                                               compare{-a1gW-} a2{-a1eq-}
-                                                                               b2{-a1ew-}
-                                                           of
-                                                             PrelBase.LT{-rJk,i-}
-                                                               -> PrelBase.LT{-rJk,i-}
-                                                             PrelBase.EQ{-rsT,i-}
-                                                               -> PrelBase.EQ{-rsT,i-}
-                                                             PrelBase.GT{-rJl,i-}
-                                                               -> PrelBase.GT{-rJl,i-}
-                                                      PrelBase.GT{-rJl,i-} -> PrelBase.GT{-rJl,i-}
-                                 cmp_eq{-a1fo-} (Print002.:***{-rF,x-} a1{-a1fd-} a2{-a1f6-})
-                                                (Print002.:***{-rF,x-} b1{-a1fi-} b2{-a1fc-})
-                                                  = case compare{-a1h1-} a1{-a1fd-} b1{-a1fi-} of
-                                                      PrelBase.LT{-rJk,i-} -> PrelBase.LT{-rJk,i-}
-                                                      PrelBase.EQ{-rsT,i-}
-                                                        -> case
-                                                               compare{-a1gZ-} a2{-a1f6-}
-                                                                               b2{-a1fc-}
-                                                           of
-                                                             PrelBase.LT{-rJk,i-}
-                                                               -> PrelBase.LT{-rJk,i-}
-                                                             PrelBase.EQ{-rsT,i-}
-                                                               -> PrelBase.EQ{-rsT,i-}
-                                                             PrelBase.GT{-rJl,i-}
-                                                               -> PrelBase.GT{-rJl,i-}
-                                                      PrelBase.GT{-rJl,i-} -> PrelBase.GT{-rJl,i-}
-                                 cmp_eq{-a1fo-} _ _
-                                                  = PrelErr.error{-05,w-}
-                                                        PrelBase.Ordering{-3s,i-} "Urk! in TcGenDeriv"
-                             {- rec -}
-                             cmp_eq{-a1h2-} =
-                                 cmp_eq{-rZE-} [a{-a1ai-}, b{-a1aj-}, c{-a1ak-}]
-                                     [_dOrd{-a1g4-}, _dOrd{-a1g5-}, _dOrd{-a1g6-}]
-    _dOrd{-a1ab-} =
-       PrelBase._DOrd{-rJw,i-}
-           (Print002.Foo{-rx,x-} a{-a1ai-} b{-a1aj-} c{-a1ak-}) _dEq{-a1g8-}
-                                                                min{-a1ad-}
-                                                                max{-a1aA-}
-                                                                >{-a1aU-}
-                                                                >={-a1be-}
-                                                                <={-a1by-}
-                                                                <{-a1bS-}
-                                                                compare{-a1cc-}
-AbsBinds [a{-a1gw-}] [_dBar{-a1gv-}] []
-AbsBinds [a{-a1gA-}] [_dBar2{-a1gz-}] []
-
-
-Print002.hs:34: Pattern match(es) are overlapped
-    in the definition of function `<<<<' x y = ...
-
-ghc: module version changed to 1; reason: no old .hi file
-__export Print002 .... ..... <<<< f1 f1a f2 f2a f3a f3b f3c f3d Bar{meth2 ///// meth1} Bar2 Foo{MkFoo1 :## MkFoo3 :***};
-instance __forall [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} = _fEqFoo;
-instance __forall [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c} => {PrelBase.Ord (Foo a b c)} = _fOrdFoo;
-1 .... :: __forall [a b c] => b -> b -> Foo a b c ;
-1 ..... :: __forall [a b c] => b -> b -> Foo a b c ;
-1 <<<< :: __forall [a b c] => c -> c -> Foo a b c ;
-1 _fEqFoo :: __forall [a b c] {PrelBase.Eq a, PrelBase.Eq b, PrelBase.Eq c} => {PrelBase.Eq (Foo a b c)} ;
-1 _fOrdFoo :: __forall [a b c] {PrelBase.Ord a, PrelBase.Ord b, PrelBase.Ord c, PrelBase.Eq (Foo a b c)} => {PrelBase.Ord (Foo a b c)} ;
-1 class Bar a where {meth2 :: __forall [b] => a -> b -> PrelBase.Bool; ///// :: a -> a -> PrelBase.Bool; meth1 :: a -> a -> PrelBase.Bool} ;
-1 class {Bar a}  => Bar2 a ;
-1 data Foo a b c = MkFoo1 a a |  :## b c |  MkFoo3 b b |  :*** c c ;
-1 f1 :: __forall [a b c] => a -> a -> Foo a b c ;
-1 f1a :: __forall [a b c] => a -> a -> Foo a b c ;
-1 f2 :: __forall [a b c] => b -> c -> Foo a b c ;
-1 f2a :: __forall [a b c] => b -> c -> Foo a b c ;
-1 f3a :: __forall [a] {Bar a} => a -> a -> PrelBase.Bool ;
-1 f3b :: __forall [a] {Bar a} => a -> a -> PrelBase.Bool ;
-1 f3c :: __forall [a] {Bar a} => a -> a -> PrelBase.Bool ;
-1 f3d :: __forall [a] {Bar a} => a -> a -> PrelBase.Bool ;
diff --git a/ghc/tests/printing/should_compile/Print003.hs b/ghc/tests/printing/should_compile/Print003.hs
deleted file mode 100644 (file)
index e95bd0c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Word where
-
-infixl 8 `bitLsh`, `bitRsh`
-
-class Bits a where
-       bitRsh, bitLsh :: a -> Int -> a
diff --git a/ghc/tests/printing/should_compile/Print003.stderr b/ghc/tests/printing/should_compile/Print003.stderr
deleted file mode 100644 (file)
index cd6f737..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-==================== Typechecked ====================
-AbsBinds [a{-aSM-}] [_dBits{-aSL-}] []
-
-
-ghc: module version changed to 1; reason: no old .hi file
-__export Word Bits{bitLsh bitRsh};
-1 class Bits a where {bitLsh :: a -> PrelBase.Int -> a; bitRsh :: a -> PrelBase.Int -> a} ;
diff --git a/ghc/tests/printing/should_compile/Print004.hs b/ghc/tests/printing/should_compile/Print004.hs
deleted file mode 100644 (file)
index 64be199..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! export a derived thingy which mentions an internal type
---
-{- from simonpj; who adds:
-
-   It is NOT ENOUGH to put
-
-          data OpaqueType deriving(Text)
-
-   in the interface
--}
-
-module ExportOpaque( OpaqueType ) where
-
-data OpaqueType a = Con (FunnyInternalType a) deriving(Show)
-
-data FunnyInternalType a = Junk11 | Junk2
-
-instance Ord a => Show (FunnyInternalType a)
diff --git a/ghc/tests/printing/should_compile/Print004.stderr b/ghc/tests/printing/should_compile/Print004.stderr
deleted file mode 100644 (file)
index d5d45f6..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-
-==================== Typechecked ====================
-ExportOpaque.Junk11{-r3,l-} =
-    \ a{-ru2-} -> ExportOpaque.Junk11{-r3,l-} {__a a{-ru2-}}
-ExportOpaque.Junk2{-r5,l-} =
-    \ a{-ru2-} -> ExportOpaque.Junk2{-r5,l-} {__a a{-ru2-}}
-ExportOpaque.Con{-r9,l-} =
-    \ a{-ru6-} tpl_B1 -> ExportOpaque.Con{-r9,l-} {__a a{-ru6-} tpl_B1}
-AbsBinds
-[a{-aY7-}]
-[_dOrd{-aYo-}]
-[([a{-aY7-}],
-  ExportOpaque._fShowOpaqueType{-rXt,x-},
-  _dShow{-aXB-})]
-    _mshow{-aZt-} =
-       PrelBase._mshow{-rJ7,i-} (ExportOpaque.OpaqueType{-r7,x-} a{-aY7-})
-           _dShow{-aYs-}
-    showsPrec{-aZs-} = showsPrec{-aY0-}
-    showsPrec{-aZu-} =
-       PrelBase.showsPrec{-rt1,i-}
-           (ExportOpaque.FunnyInternalType{-r1,l-} a{-aY7-})
-           _dShow{-aYv-}
-    _dShow{-aYs-} = _dShow{-aXB-}
-    _dShow{-aYv-} =
-       ExportOpaque._fShowFunnyInternalType{-rXl,x-} a{-aY7-} _dOrd{-aYx-}
-    _dOrd{-aYx-} = _dOrd{-aYo-}
-    AbsBinds [] [] [([], showList{-aXD-}, showList{-aXF-})]
-       showList{-aXF-} = PrelBase.showList__{-ru7,i-}
-                             (ExportOpaque.OpaqueType{-r7,x-} a{-aY7-}) showsPrec{-aZs-} PrelBase.I#{-67,w-} 0#
-    AbsBinds [] [] [([], show{-aXP-}, show{-aXR-})]
-       show{-aXR-} = _mshow{-aZt-}
-    AbsBinds [] [] [([], showsPrec{-aY0-}, showsPrec{-aY2-})]
-       showsPrec{-aY2-} a{-aY8-} (ExportOpaque.Con{-r9,l-} b1{-aYl-})
-                          = PrelBase.showParen{-rtv,i-} a{-aY8-} >={-aZv-} lit_aZw
-                                                        PrelBase..{-rtD,i-}
-                                                            [PrelBase.String{-rsZ,i-}, PrelBase.String{-rsZ,i-}, PrelBase.String{-rsZ,i-}] PrelBase.showString{-rtu,i-} "Con "
-                                                                                                                                           showsPrec{-aZu-} PrelBase.I#{-67,w-} 10#
-                                                                                                                                                            b1{-aYl-}
-    _dShow{-aXB-} =
-       PrelBase._DShow{-rIw,i-}
-           (ExportOpaque.OpaqueType{-r7,x-} a{-aY7-}) showList{-aXD-}
-                                                      show{-aXP-}
-                                                      showsPrec{-aY0-}
-AbsBinds
-[a{-aYP-}]
-[_dOrd{-aZe-}]
-[([a{-aYP-}],
-  ExportOpaque._fShowFunnyInternalType{-rXl,x-},
-  _dShow{-aYG-})]
-    _mshow{-aZx-} =
-       PrelBase._mshow{-rJ7,i-}
-           (ExportOpaque.FunnyInternalType{-r1,l-} a{-aYP-})
-           _dShow{-aZk-}
-    _mshowList{-aZy-} =
-       PrelBase._mshowList{-rJ6,i-}
-           (ExportOpaque.FunnyInternalType{-r1,l-} a{-aYP-})
-           _dShow{-aZi-}
-    _mshowsPrec{-aZz-} =
-       PrelBase._mshowsPrec{-rJ5,i-}
-           (ExportOpaque.FunnyInternalType{-r1,l-} a{-aYP-})
-           _dShow{-aZm-}
-    _dShow{-aZi-} = _dShow{-aYG-}
-    _dShow{-aZk-} = _dShow{-aYG-}
-    _dShow{-aZm-} = _dShow{-aYG-}
-    AbsBinds [] [] [([], showList{-aYI-}, showList{-aYK-})]
-       showList{-aYK-} = _mshowList{-aZy-}
-    AbsBinds [] [] [([], show{-aYU-}, show{-aYW-})]
-       show{-aYW-} = _mshow{-aZx-}
-    AbsBinds [] [] [([], showsPrec{-aZ5-}, showsPrec{-aZ7-})]
-       showsPrec{-aZ7-} = _mshowsPrec{-aZz-}
-    _dShow{-aYG-} =
-       PrelBase._DShow{-rIw,i-}
-           (ExportOpaque.FunnyInternalType{-r1,l-} a{-aYP-}) showList{-aYI-}
-                                                             show{-aYU-}
-                                                             showsPrec{-aZ5-}
-lit_aZw = PrelBase.I#{-67,w-} 10#
->={-aZv-} = PrelBase.>={-01M,i-} PrelBase.Int{-3f,W-} _dOrd{-aZr-}
-_dOrd{-aZr-} = PrelBase._fOrdInt{-rJw,i-}
-
-
-ghc: module version changed to 1; reason: no old .hi file
-__export ExportOpaque OpaqueType;
-instance __forall [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} = _fShowFunnyInternalType;
-instance __forall [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} = _fShowOpaqueType;
-1 _fShowFunnyInternalType :: __forall [a] {PrelBase.Ord a} => {PrelBase.Show (FunnyInternalType a)} ;
-1 _fShowOpaqueType :: __forall [a] {PrelBase.Ord a} => {PrelBase.Show (OpaqueType a)} ;
-1 data FunnyInternalType a = Junk11 |  Junk2 ;
-1 data OpaqueType a = Con (FunnyInternalType a) ;
diff --git a/ghc/tests/programs/10queens/10queens.stdout b/ghc/tests/programs/10queens/10queens.stdout
deleted file mode 100644 (file)
index 67adbdb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-724
diff --git a/ghc/tests/programs/10queens/Main.hs b/ghc/tests/programs/10queens/Main.hs
deleted file mode 100644 (file)
index 6e2fdc0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module Main (main) -- q
-where {
---import Fast2haskell;
-
-    f_queens a_n=f_queens' (enumFromTo (1 :: Int) a_n) a_n;
-    f_queens' a_positions 0=(:) [] [];
-    f_queens' a_positions a_n=c_concat (f_map (f_place (f_queens' a_positions (((-) :: (Int -> Int -> Int)) a_n (1 :: Int)))) a_positions);
-    f_place a_boards a_q=[(:) a_q a_bs|a_bs<-a_boards,f_safe (1 :: Int) a_q a_bs];
-    f_safe a_d a_q []=True;
-    f_safe a_d a_q (a_h:a_t)=
-        if (((==) :: (Int -> Int -> Bool)) a_q a_h)
-        then False
-        else 
-        if (((==) :: (Int -> Int -> Bool)) (f_absi (((-) :: (Int -> Int -> Int)) a_q a_h)) a_d)
-        then False
-        else 
-            (f_safe (((+) :: (Int -> Int -> Int)) a_d (1 :: Int)) a_q a_t);
-    f_absi a_n=
-        if (((<) :: (Int -> Int -> Bool)) a_n (0 :: Int))
-        then (((negate) :: (Int -> Int)) a_n)
-        else 
-            a_n;
-    f_main a_n=(++) (show (length (f_queens a_n))) "\n";
-    c_input=(10 :: Int);
-    c_concat=f_foldr (++) [];
-    f_foldr a_op a_r []=a_r;
-    f_foldr a_op a_r (a_a:a_x)=a_op a_a (f_foldr a_op a_r a_x);
-    f_map a_f a_x=[a_f a_a|a_a<-a_x];
-    main = putStr (f_main c_input)
-}
diff --git a/ghc/tests/programs/10queens/Makefile b/ghc/tests/programs/10queens/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/Makefile b/ghc/tests/programs/Makefile
deleted file mode 100644 (file)
index 173ff1b..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.9 2001/03/22 03:51:12 hwloidl Exp $
-#
-# (c) The GHC Team, 1999-2000
-#
-
-TOP = .
-include $(TOP)/mk/boilerplate.mk
-
-NOT_THESE = CVS mk
-
-NOT_THESE += hill_stk_oflow
-#      Correctly fails to terminate
-
-NOT_THESE += ipoole_spec_class
-#      Dialogue style IO
-
-NOT_THESE += areid_pass
-#      Old-style I/O
-
-NOT_THESE += north_lias
-#      Deliberately causes divide by zero, and
-#      we can't catch that yet
-
-NOT_THESE += andy_cherry barton-mangler-bug cvh_unboxing dmgob_native1 dmgob_native2 fast2haskell fexport jtod_circint okeefe_neural
-#      doesn't compile
-
-NOT_THESE += jeff-bug lennart_array
-#       compiles but doesn't run
-
-NOT_THESE += dmgob_native1 dmgob_native2
-#      Native library doens't exist
-
-ifneq "$(HWL_NOFIB_HACK)" ""
-NOT_THESE += callback zhang_ccall
-# HWL: tmp disabled for testing GUM-merged version          (20/3/01)
-#      don't compile: failed to load interface for `IOExts'
-endif
-
-SUBDIRS = $(filter-out $(patsubst %, %/, $(NOT_THESE)), $(wildcard */))
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/andre_monad/Main.hs b/ghc/tests/programs/andre_monad/Main.hs
deleted file mode 100644 (file)
index 7e3dda6..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
--- Evaluator in a monad: with execution counts
--- Phil Wadler, 11 October 1991
-
--- Types are optional.  Some must be commented out to
--- work around a bug in Gofer.
-
--- The count monad
-
-type  M a              =  (a, Int)
-
-unit                   :: a -> M a
-unit a                 =  (a, 0)
-
-bind                   :: M a -> (a -> M b) -> M b
-m `bind` k             =  case m of 
-                             (a,i) -> case k a of 
-                                        (b,j) -> (b,i+j)
-
--- disp                        :: Text a => M a -> String
-disp (a,i)             =  show a ++ "\nCount: " ++ show i
-
-tick                   :: M ()
-tick                   =  ((), 1)
-
--- The evaluator
--- Lines with * are only change from evalIdent
-
-data  Op               =  Add | Sub | Mul | Quo
-data  Term             =  Con Int | Bin Op Term Term
-
-eval                   :: Term -> M Int
-eval (Con i)           =  unit i
-eval (Bin op u v)      =  eval u     `bind` (\a  ->
-                          eval v     `bind` (\b  ->
-                          go op a b  `bind` (\c  ->    -- *
-                          tick       `bind` (\ () ->   -- *
-                          unit c))))                   -- *
-
-go                     :: Op -> Int -> Int -> M Int
-go Add a b             =  unit (a+b)
-go Sub a b             =  unit (a-b)
-go Mul a b             =  unit (a*b)
-go Quo a b             =  unit (a `quot` b) -- WDP: was "div"
-
-test                   :: Term -> String
-test t                 =  disp (eval t)
-
--- Test data
-
-add, sub, mul, quo     :: Term -> Term -> Term
-u `add` v              =  Bin Add u v
-u `sub` v              =  Bin Sub u v
-u `mul` v              =  Bin Mul u v
-u `quo` v              =  Bin Quo u v
-
-term0,term1,term2      :: Term
-term0                  =  Con 6 `mul` Con 9
-term1                  =  (Con 4 `mul` Con 13) `add` Con 2
-term2                  =  (Con 1 `quo` Con 2) `add` Con 2
-term3                   =  ((((((((((((((((((((((((((((((((
-                           ((((((((((((((((((((((((((((((
-                                 Con 7777 `mul` Con  13) `quo` Con  13)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-                           `mul` Con 755) `quo` Con 755) `mul` Con 333)
-                           `quo` Con 755) `mul` Con 755) `mul` Con 333)
-
-sb 0 = term2
-sb n = if (n `mod` 2) == 0
-       then term2 `add` (sb (n-1))
-       else term2 `sub` (sb (n-1))
-
-main = print (show (eval (sb 5000)))
diff --git a/ghc/tests/programs/andre_monad/Makefile b/ghc/tests/programs/andre_monad/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/andre_monad/andre_monad.stdout b/ghc/tests/programs/andre_monad/andre_monad.stdout
deleted file mode 100644 (file)
index 7ea358a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"(2,15002)"
diff --git a/ghc/tests/programs/andy_cherry/DataTypes.lhs b/ghc/tests/programs/andy_cherry/DataTypes.lhs
deleted file mode 100644 (file)
index a800394..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-> module DataTypes where
-
-> import GenUtils
-> import Array -- 1.3
-> import Ix
-> import Char
-> infix 1 =: -- 1.3
-> (=:) a b = (a,b)
-
-%------------------------------------------------------------------------------
-
-The `presentable' class, my own co-class for Text
-
-> class Presentable a where
->      userFormat :: a -> String       -- in prefered display format
-
-Defaults, in terms of each other
-
-And the default for lists.
-
-> instance (Presentable a) => Presentable [a] where
->     userFormat xs = unlines (map userFormat xs)
-
-%------------------------------------------------------------------------------
- Here are all the pieces allowed in chess.
-
-> data Piece
->      = King
->      | Queen
->      | Rook
->      | Knight
->      | Bishop
->      | Pawn deriving(Eq)
-
-> instance Presentable Piece where
->   userFormat King   = "K"
->   userFormat Queen  = "Q"
->   userFormat Rook   = "R"
->   userFormat Knight = "N"
->   userFormat Bishop = "B"
->   userFormat Pawn   = "P"
-
-
-%------------------------------------------------------------------------------
-
-> castleK = "O-O"
-> castleQ = "O-O-O"
-
-%------------------------------------------------------------------------------
-
-Here are the two sides.
-
-> data Colour = Black | White deriving (Eq)
-
-> instance Presentable Colour where
->      userFormat White = "White"
->      userFormat Black = "Black"
-
-> changeColour :: Colour -> Colour
-> changeColour White = Black
-> changeColour Black = White
-
-%------------------------------------------------------------------------------
-
-Now the ranks and files.
-
-> type ChessRank = Int -- 1-8
-> type ChessFile = Int -- 1-8
-
-> type BoardPos = (ChessFile,ChessRank)        -- ChessFile (0-7) and ChessRank (0-7)
-> type ExBoardPos = (Maybe ChessFile,Maybe ChessRank)
-
-> extendBP :: BoardPos -> ExBoardPos 
-> extendBP (a,b) = (Just a,Just b)
-
-> compExBPandBP :: ExBoardPos -> BoardPos -> Bool
-> compExBPandBP (a,b) (c,d) = a `cmp` c && b `cmp` d
->    where 
->      cmp Nothing  _ = True
->      cmp (Just x) y = x == y
-
-> userFormatBoardPos :: BoardPos -> String
-> userFormatBoardPos (f,r) = userFormatFile f ++ userFormatRank r
-> userFormatExBoardPos :: ExBoardPos -> String
-> userFormatExBoardPos (Just f,Just r)  = userFormatFile f ++ userFormatRank r
-> userFormatExBoardPos (Just f,Nothing) = userFormatFile f 
-> userFormatExBoardPos (Nothing,Just r) = userFormatRank r
-> userFormatExBoardPos _ = ""
-> userFormatRank r = [toEnum (r + 48)]
-> userFormatFile f = [toEnum (f + 96)]
-
-%------------------------------------------------------------------------------
-
-These are the components of a move.
-
-> data MoveTok 
->      = PieceTok Piece        -- Q,K,R,B,N
->      | RankTok ChessRank     -- 1 .. 8
->      | FileTok ChessFile     -- a .. h
->      | PartCastleTok         -- 0 | O | o
->      | CaptureTok            -- x
->      | MoveToTok             -- -
->      | QueensWith            -- =
->      | CheckTok              -- +
->      | MateTok               -- #
-
-> charToMoveTok 'Q' = Just (PieceTok Queen)
-> charToMoveTok 'K' = Just (PieceTok King)
-> charToMoveTok 'R' = Just (PieceTok Rook)
-> charToMoveTok 'B' = Just (PieceTok Bishop)
-> charToMoveTok 'N' = Just (PieceTok Knight)
-> charToMoveTok '1' = Just (RankTok 1)
-> charToMoveTok '2' = Just (RankTok 2)
-> charToMoveTok '3' = Just (RankTok 3)
-> charToMoveTok '4' = Just (RankTok 4)
-> charToMoveTok '5' = Just (RankTok 5)
-> charToMoveTok '6' = Just (RankTok 6)
-> charToMoveTok '7' = Just (RankTok 7)
-> charToMoveTok '8' = Just (RankTok 8)
-> charToMoveTok 'a' = Just (FileTok 1)
-> charToMoveTok 'b' = Just (FileTok 2)
-> charToMoveTok 'c' = Just (FileTok 3)
-> charToMoveTok 'd' = Just (FileTok 4)
-> charToMoveTok 'e' = Just (FileTok 5)
-> charToMoveTok 'f' = Just (FileTok 6)
-> charToMoveTok 'g' = Just (FileTok 7)
-> charToMoveTok 'h' = Just (FileTok 8)
-> charToMoveTok '0' = Just (PartCastleTok)
-> charToMoveTok 'O' = Just (PartCastleTok)
-> charToMoveTok 'o' = Just (PartCastleTok)
-> charToMoveTok 'x' = Just (CaptureTok)
-> charToMoveTok '-' = Just (MoveToTok)
-> charToMoveTok '=' = Just (QueensWith)
-> charToMoveTok '+' = Just (CheckTok)
-> charToMoveTok '#' = Just (MateTok)
-> charToMoveTok _   = Nothing
-
-%------------------------------------------------------------------------------
-
-> data Quantum 
->      = QuantumMove   String          -- Short Description of move
->                      String          -- Check or Mate (+ or #)
->                      String          -- !,??,?!, etc
->                      Board           -- Snap Shot of Board
->      | QuantumNAG Int                -- !,??,?! stuff
->      | QuantumComment [String]       -- { comment }
->      | QuantumResult String          -- 1-0, etc (marks end of game)
->      | QuantumAnalysis [Quantum]     -- ( analysis )
->      | QuantumPrintBoard             -- {^D}
-
-> instance Presentable Quantum where
->      userFormat (QuantumMove mv ch ann _) 
->              = mv ++ ch ++ ann
->      userFormat (QuantumNAG nag) = "$" ++ show nag
->      userFormat (QuantumComment comment) 
->              = "[" ++ unwords comment ++ "]"
->      --userFormat (QuantumNumber num)  = userFormat num
->      userFormat (QuantumResult str) = str
->      userFormat (QuantumAnalysis anal) =
->              "( " ++ unwords (map userFormat anal) ++ " )"
-
-%------------------------------------------------------------------------------
-
-> data Result = Win | Draw | Loss | Unknown
-
-> instance Presentable Result where
->      userFormat Win     = "1-0"
->      userFormat Draw    = "1/2-1/2"
->      userFormat Loss    = "0-1"
->      userFormat Unknown = "*"
-
-> mkResult :: String -> Result
-> mkResult "1-0"     = Win
-> mkResult "1/2-1/2" = Draw
-> mkResult "0-1"     = Loss
-> mkResult _         = Unknown
-
-%------------------------------------------------------------------------------
-
-> data TagStr = TagStr String String
-
-> instance Presentable TagStr where
->      userFormat (TagStr tag str) = "[" ++ tag ++ " \"" ++ str ++ "\"]"
-
-> getTagStr :: String -> String -> [TagStr] -> String
-> getTagStr str def [] = def
-> getTagStr str def (TagStr st ans:rest) 
->              | str == st = ans
->              | otherwise = getTagStr str def rest
-
-> getHeaderInfo 
->      :: [TagStr]
->      -> (
->              String,         -- Date
->              String,         -- Site
->              Maybe Int,      -- Game Number
->              Result,         -- W/D/L
->              String,         -- White
->              String,         -- Black
->              String          -- Opening
->      )
-> getHeaderInfo tags = (
->              date,
->              site,
->              gameno,
->              result,
->              white `par` whiteElo,
->              black `par` blackElo,
->              opening)
->   where
->      date   = case getTagStr "Date" "?" tags of
->                 [a,b,c,d,'.','?','?','.','?','?'] -> [a,b,c,d]
->                 [a,b,c,d,'.',x,y,'.','?','?'] -> getMonth [x,y] ++ " " ++ [a,b,c,d]
->                 def -> "?"
->      site     = getTagStr "Site" "?" tags
->      gameno   = case getTagStr "GameNumber" "" tags of
->                      xs | all isDigit xs && not (null xs) -> Just (read xs)
->                      _ -> Nothing
->      result   = mkResult (getTagStr "Result" "*" tags)
->      white    = cannon (getTagStr "White" "?" tags)
->      whiteElo = getTagStr "WhiteElo" "" tags
->      black    = cannon (getTagStr "Black" "?" tags)
->      blackElo = getTagStr "BlackElo" "" tags
->      opening  = getOpening (getTagStr "ECO" "" tags)
-
->      par xs "" = xs
->      par xs ys = xs ++ " (" ++ ys ++ ")"
-
->      getMonth "01" = "Jan"
->      getMonth "02" = "Feb"
->      getMonth "03" = "Mar"
->      getMonth "04" = "Apr"
->      getMonth "05" = "May"
->      getMonth "06" = "Jun"
->      getMonth "07" = "Jul"
->      getMonth "08" = "Aug"
->      getMonth "09" = "Sep"
->      getMonth "10" = "Oct"
->      getMonth "11" = "Nov"
->      getMonth "12" = "Dec"
-
->      cannon name = case span (/= ',') name of
->                      (a,[',',' ',b]) -> b : ". " ++ a
->                      (a,[',',b]) -> b : ". " ++ a
->                      (a,',':' ':b) -> b ++ " " ++ a
->                      (a,',':b) -> b ++ " " ++ a
->                      _ -> name
-
-
-> getOpening eco@[a,b,c] |  a >= 'A' && a <= 'E' && isDigit b && isDigit c 
->    = getOpenName ((fromEnum a - fromEnum 'A') * 100 
->              + (fromEnum b - fromEnum '0') * 10 
->              + (fromEnum c - fromEnum '0')) ++ " " ++ eco
-> getOpening other = other
-
-> getOpenName :: Int -> String
-> getOpenName eco 
->      | otherwise = "Foo"
-> {-
->      | eco == 000 = "Irregular Openings"
->      | eco == 001 = "Larsen Opening"
->      | eco == 002 = "From's Gambit and Bird's Open"
->      | eco == 003 = "Bird's Opening"
->      | eco == 004 = "Dutch System"
->      | eco == 005 = "Transposition to various Open"
->      | eco == 006 = "Zukertort Opening"
->      | eco >= 007 && eco <= 008
->                   = "Barcza System"
->      | eco == 009 = "Reti Opening"
->      | eco == 010 = "Variations of Dutch, QI, KI"
->      | eco >= 011 && eco <= 014
->                   = "Reti Opening"
->      | eco == 015 = "English counter King's Fianch"
->      | eco >= 016 && eco <= 039
->                   = "English Opening"
->      | eco == 040 = "Unusual replies to 1.d4"
->      | eco == 041 = "Modern Defence counter 1.d4"
->      | eco == 042 = "Modern Defence with c2-c4"
->      | eco >= 043 && eco <= 044
->                   = "Old Benoni"
->      | eco == 045 = "Queen's Pawn-Trompowski Var"
->      | eco == 046 = "Queen's Pawn Opening"
->      | eco == 047 = "Queen's Indian"
->      | eco >= 048 && eco <= 049
->                   = "King's Indian"
->      | eco == 050 = "Queen's Indian"
->      | eco >= 051 && eco <= 052
->                   = "Budapest Defence"
->      | eco >= 053 && eco <= 056
->                   = "Old Indian Defence"
->      | eco >= 057 && eco <= 059
->                   = "Volga-Benko Gambit"
->      | eco >= 060 && eco <= 079
->                   = "Benoni"
->      | eco >= 080 && eco <= 099
->                   = "Dutch Defence"
->      | eco == 100 = "Owen Def, Nimzowitsch Def"
->      | eco == 101 = "Center Counter"
->      | eco >= 102 && eco <= 105
->                   = "Alekhine's Defence"
->      | eco == 106 = "Modern Defence"
->      | eco >= 107 && eco <= 109
->                   = "Pirc Defence"
->      | eco >= 110 && eco <= 119
->                   = "Caro-Kann Defence"
->      | eco >= 120 && eco <= 199
->                   = "Sicilian Defence"
->      | eco >= 200 && eco <= 219
->                   = "French Defence"
->      | eco == 220 = "Rare moves"
->      | eco == 221 = "Nordic Gambit"
->      | eco == 222 = "Central Gambit"
->      | eco >= 223 && eco <= 224
->                   = "Bishop's Opening"
->      | eco >= 225 && eco <= 229
->                   = "Vienna Game"
->      | eco == 230 = "King's Gambit Declined"
->      | eco >= 231 && eco <= 232
->                   = "Falkbeer Counter Gambit"
->      | eco >= 233 && eco <= 239
->                   = "King's Gambit"
->      | eco == 240 = "Latvian Gambit"
->      | eco == 241 = "Philidor Defence"
->      | eco >= 242 && eco <= 243
->                   = "Russian Defence-Petrov"
->      | eco >= 244 && eco <= 245
->                   = "Scotch Opening"
->      | eco >= 246 && eco <= 249
->                   = "Four Knight's"
->      | eco == 250 = "Italian Opening"
->      | eco >= 251 && eco <= 252
->                   = "Evans Gambit"
->      | eco >= 253 && eco <= 254
->                   = "Italian Opening"
->      | eco >= 255 && eco <= 259
->                   = "Two Knight's Play"
->      | eco >= 260 && eco <= 299
->                   = "Ruy Lopez"
->      | eco >= 300 && eco <= 305
->                   = "Queen Pawn's Opening"
->      | eco >= 306 && eco <= 307
->                   = "Queen's Gambit"
->      | eco >= 308 && eco <= 309
->                   = "Albins Counter Gambit"
->      | eco >= 310 && eco <= 319
->                   = "Slav Defence"
->      | eco >= 320 && eco <= 329
->                   = "Queen's Gambit Accepted"
->      | eco >= 330 && eco <= 369
->                   = "Queen's Gambit"
->      | eco >= 370 && eco <= 399
->                   = "Gruenfeld Defence"
->      | eco >= 400 && eco <= 409
->                   = "Catalan"
->      | eco == 410 = "Blumenfeld Gambit"
->      | eco >= 411 && eco <= 419
->                   = "Queen's Indian"
->      | eco >= 420 && eco <= 459
->                   = "Nimzo Indian"
->      | eco >= 460 && eco <= 499
->                   = "King's Indian"
-> -}
-
-%------------------------------------------------------------------------------
-
-> data MoveNumber = MoveNumber Int Colour
-> instance Presentable MoveNumber where
->      userFormat (MoveNumber n White)  = show n ++ "."
->      userFormat (MoveNumber n Black)  = show n ++ "..."
-
-> initMoveNumber = MoveNumber 1 White
-> incMove (MoveNumber i White) = MoveNumber i Black
-> incMove (MoveNumber i Black) = MoveNumber (i+1) White
-> decMove (MoveNumber i White) = MoveNumber (i-1) Black
-> decMove (MoveNumber i Black) = MoveNumber i White
-> getMoveColour :: MoveNumber -> Colour
-> getMoveColour (MoveNumber _ c) = c
-
-%------------------------------------------------------------------------------
-
-> data Token 
-
-Both first and second level.
-
->      = StringToken   String
->      | AsterixToken
->      | LeftABToken           -- ??
->      | RightABToken          -- ??
->      | NAGToken      Int     -- `normal' NAGS
->      | NAGAnnToken   Int String
->                              -- `special' move annotating NAGS (1-6)
->      | SymbolToken   String
->      | CommentToken  [String] -- list of words
->      | LeftSBToken
->      | RightSBToken
->      | LeftRBToken
->      | RightRBToken
->      | IntToken      Int
->      | PeriodToken
-
-Second level Token, as produced by the parser.
-
->      | AnalToken     [Token]
-
-> instance Presentable Token where
->      userFormat (StringToken str) = show str
->      userFormat (IntToken n)      = show n
->      userFormat (PeriodToken)     = "."
->      userFormat (AsterixToken)    = "*"
->      userFormat (LeftSBToken)     = "["
->      userFormat (RightSBToken)    = "]"
->      userFormat (LeftRBToken)     = "("
->      userFormat (RightRBToken)    = ")"
->      userFormat (LeftABToken)     = "<"
->      userFormat (RightABToken)    = ">"
->      userFormat (NAGToken i)      = "$" ++ show i
->      userFormat (NAGAnnToken i s) = "$" ++ show i
->      userFormat (SymbolToken str) = str
->      userFormat (CommentToken str) = "{" ++ unwords str ++ "}"
->      userFormat (AnalToken toks) = "( " ++ unwords (map userFormat toks)
->                                      ++ " )"
-
-%------------------------------------------------------------------------------
-
-The Parser Emits a list of these.
-
-> data Game a = Game [TagStr] [a]
-
-> type AbsGame = Game Token
-> type RealGame = Game Quantum
-
-> instance (Presentable a) => Presentable (Game a) where
->      userFormat (Game tags toks) = 
->              unlines (map userFormat tags 
->                 ++ formatText 78 (map userFormat toks))
-
-%------------------------------------------------------------------------------
-
-Here are the moves that actually can be played,
-all in the context of a particular board.
-
-> data PlayMove
->      = PlayMove
->              Piece           -- with this
->              BoardPos        -- from here
->              BoardPos        -- to here (possibly capturing)
->              SpecialMove
-
-> mkPlayMove p f t = PlayMove p f t NothingSpecial
-
-> data SpecialMove 
->      = NothingSpecial        
->      | BigPawnMove           -- allows e.p. next move
->      | Queening Piece        -- queen with this
->      | EnPassant             -- capture e.p.
->    deriving (Eq)
-               
-> instance Presentable PlayMove where
->      userFormat (PlayMove piece pos pos' sp) = 
->              userFormat piece ++
->              userFormatBoardPos pos ++ "-" ++
->              userFormatBoardPos pos' ++ 
->              userFormat sp
-
-> instance Presentable SpecialMove where
->      userFormat (NothingSpecial) = ""
->      userFormat (BigPawnMove) = "{b.p.m.}"
->      userFormat (Queening p) = "=" ++ userFormat p
->      userFormat (EnPassant) = "e.p."
-
-> extractSrcFromPlayMove :: PlayMove -> BoardPos
-> extractSrcFromPlayMove (PlayMove _ src _ _) = src
-
-> extractDestFromPlayMove :: PlayMove -> BoardPos
-> extractDestFromPlayMove (PlayMove _ _ dest _)       = dest
-
-> extractSpecialFromPlayMove :: PlayMove -> SpecialMove
-> extractSpecialFromPlayMove (PlayMove _ _ _ sp)       = sp
-
-
-%------------------------------------------------------------------------------
-
-Now the representation of the board itself.
-
-> data BoardSquare
->      = VacantSq
->      | WhitesSq Piece
->      | BlacksSq Piece
-
-> data SquareContent
->      = Vacant
->      | Friendly
->      | Baddy
->      | OffBoard deriving (Eq)
-
-> instance Presentable SquareContent where
->      userFormat Vacant   = "."
->      userFormat Friendly = "*"
->      userFormat Baddy    = "#"
->      userFormat OffBoard = "?"
-
-
-%------------------------------------------------------------------------------
-
-A Static representation of what the current placement of pieces is.
-
-> data Board 
->      = Board (Array BoardPos BoardSquare)
->              MoveNumber              -- current player & and move
->              (Maybe ChessFile)       -- e.p. possibilties.
-
-This is Christmas for foldr/build !
-
-> displayBoard :: Colour -> Board -> [String]
-> displayBoard col (Board arr _ ep) = 
->      ([cjustify 33 (userFormat (changeColour col)),""] ++
->      [
->   concat [ (case (even x,even y) of
->      (True,True)   -> showSq (x `div` 2) (y `div` 2)
->      (False,False) -> "+"
->      (True,False)  -> "---"
->      (False,True)  -> (if x == 17 then "| " ++ show (y `div` 2) else "|"))
->              | x <- [1..17::Int]]
->              | y <- reverse [1..17::Int]] ++
->      [concat [ "  " ++ [x] ++ " " | x <- "abcdefgh" ]] ++
->      ["",cjustify 33 (userFormat col),"",
->              case ep of
->               Nothing -> ""
->               Just p -> "EnPassant:" ++ userFormatFile p ])
->    where
->      make n str = take n (str ++ repeat ' ')
->      lookupPlace :: Int -> Int -> BoardSquare
->      lookupPlace x' y' = arr ! (x',y')
-
->      bold :: String -> String
->      bold str = map toLower str
-
->      showSq x y = case lookupPlace x y of
->              VacantSq     -> [if_dot,if_dot,if_dot]
->              (WhitesSq p) -> (if_dot : userFormat p) ++ [if_dot]
->              (BlacksSq p)  -> (if_dot : bold (userFormat p)) ++ [if_dot]
->         where
->              if_dot = if (x - y) `rem` 2 == 0 then '.' else ' '
-
-> instance Presentable Board where
->   userFormat = unlines . displayBoard White
-
-> boardSize :: (BoardPos,BoardPos)
-> boardSize = ((1,1),(8,8))
-
-
-This uses forsyth notation.
-
-> buildBoard :: String -> Board
-> buildBoard str = Board brd initMoveNumber Nothing
->    where
->      brd = array boardSize (zipWith (=:) allSq (mkPieces str))
->      allSq = [ (x,y) | y <- reverse [1..8::Int],x <- [1..8::Int]]
->      mkPieces :: String -> [BoardSquare]
->      mkPieces (hd:rest) | hd `elem` "KQRNBPkqrnbp" = pc : mkPieces rest
->         where
->              pc = case hd of
->                      'K' -> WhitesSq King    
->                      'Q' -> WhitesSq Queen
->                      'R' -> WhitesSq Rook
->                      'N' -> WhitesSq Knight
->                      'B' -> WhitesSq Bishop  
->                      'P' -> WhitesSq Pawn
->                      'k' -> BlacksSq King    
->                      'q' -> BlacksSq Queen
->                      'r' -> BlacksSq Rook
->                      'n' -> BlacksSq Knight
->                      'b' -> BlacksSq Bishop  
->                      'p' -> BlacksSq Pawn
->      mkPieces ('/':rest) = mkPieces rest
->      mkPieces (c:rest) | isDigit c =
->              case span isDigit rest of
->                (cs,rest') -> take (read (c:cs)) (repeat VacantSq) 
->                                      ++ mkPieces rest'
->      mkPieces [] = []
-
-> startBoard :: Board  -- the uni before the big bang.
-> startBoard = buildBoard "rnbqkbnr/pppppppp/32/PPPPPPPP/RNBQKBNR"
-
-> lookupSquare :: Colour -> BoardSquare -> SquareContent
-> lookupSquare _      VacantSq    = Vacant
-> lookupSquare White (WhitesSq p) = Friendly
-> lookupSquare Black (WhitesSq p) = Baddy
-> lookupSquare White (BlacksSq p) = Baddy
-> lookupSquare Black (BlacksSq p) = Friendly
-
-> lookupBoard :: Board -> BoardPos -> SquareContent
-> lookupBoard (Board arr col _) pos = 
->      if inRange boardSize pos
->      then lookupSquare (getMoveColour col) (arr ! pos)
->      else OffBoard
-
-> lookupBoardSquare :: Board -> BoardPos -> BoardSquare
-> lookupBoardSquare (Board arr _ _) pos = arr ! pos
-
-> getSquarePiece :: BoardSquare -> Maybe Piece
-> getSquarePiece VacantSq    = Nothing
-> getSquarePiece (WhitesSq p) = Just p
-> getSquarePiece (BlacksSq p) = Just p
-
-> lookupBoardPiece :: Board -> BoardPos -> Maybe Piece
-> lookupBoardPiece (Board arr _ _) pos = 
->     case arr ! pos of
->      VacantSq -> Nothing
->      WhitesSq piece -> Just piece
->      BlacksSq piece -> Just piece
-
-This will improve sharing, by 
-
-> {-# INLINE mkColBoardSq #-}
-> mkColBoardSq :: Colour -> Piece -> BoardSquare
-> mkColBoardSq White p = WhitesSq p
-> mkColBoardSq Black p = BlacksSq p
-
-> getBoardColour (Board _ mv _) = getMoveColour mv
-
diff --git a/ghc/tests/programs/andy_cherry/GenUtils.lhs b/ghc/tests/programs/andy_cherry/GenUtils.lhs
deleted file mode 100644 (file)
index 1e93589..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-Some General Utilities, including sorts, etc.
-This is realy just an extended prelude.
-All the code below is understood to be in the public domain.
-
-Changed to use \begin\end code, to help
-as a test example for STG Hugs.
-
-\begin{code}
-module GenUtils (
-
-       trace,
-
-      assocMaybe, assocMaybeErr,
-      arrElem,
-      arrCond,
-      memoise,
-      Maybe(..),
-      MaybeErr(..),
-      mapMaybe,
-      mapMaybeFail,
-      maybeToBool,
-      maybeToObj,
-      maybeMap,
-      joinMaybe,
-      mkClosure,
-      foldb,
-
-      mapAccumL,
-
-      sortWith,
-      sort,
-      cjustify,
-      ljustify,
-      rjustify,
-      space,
-      copy,
-      combinePairs,
-      formatText ) where
-
-import Array   -- 1.3
-import Ix      -- 1.3
-
-#ifndef __GLASGOW_HASKELL__
-
-import {-fool mkdependHS-}
-       IOExts( trace )
-
-#endif
-
--- -------------------------------------------------------------------------
-
--- Here are two defs that everyone seems to define ... 
--- HBC has it in one of its builtin modules
-
-#if defined(__GLASGOW_HASKELL__) || defined(__GOFER__)
-
---in 1.3: data Maybe a = Nothing | Just a deriving (Eq,Ord,Text)
-
-#endif
-
-infix 1 =: -- 1.3
-type Assoc a b = (a,b) -- 1.3
-(=:) a b = (a,b)
-
-mapMaybe :: (a -> Maybe b) -> [a] -> [b]
-mapMaybe f [] = []
-mapMaybe f (a:r) = case f a of
-                      Nothing -> mapMaybe f r
-                      Just b  -> b : mapMaybe f r
-
--- This version returns nothing, if *any* one fails.
-
-mapMaybeFail f (x:xs) = case f x of
-                       Just x' -> case mapMaybeFail f xs of
-                                   Just xs' -> Just (x':xs')
-                                   Nothing -> Nothing
-                       Nothing -> Nothing
-mapMaybeFail f [] = Just []
-
-maybeToBool :: Maybe a -> Bool
-maybeToBool (Just _) = True
-maybeToBool _        = False
-
-maybeToObj  :: Maybe a -> a
-maybeToObj (Just a) = a
-maybeToObj _        = error "Trying to extract object from a Nothing"
-
-maybeMap :: (a -> b) -> Maybe a -> Maybe b
-maybeMap f (Just a) = Just (f a)
-maybeMap f Nothing  = Nothing
-
-
-joinMaybe :: (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a 
-joinMaybe _ Nothing  Nothing  = Nothing
-joinMaybe _ (Just g) Nothing  = Just g
-joinMaybe _ Nothing  (Just g) = Just g
-joinMaybe f (Just g) (Just h) = Just (f g h)
-
-data MaybeErr a err = Succeeded a | Failed err deriving (Eq,Show{-was:Text-})
-
--- @mkClosure@ makes a closure, when given a comparison and iteration loop. 
--- Be careful, because if the functional always makes the object different, 
--- This will never terminate.
-
-mkClosure :: (a -> a -> Bool) -> (a -> a) -> a -> a
-mkClosure eq f = match . iterate f
-  where
-      match (a:b:c) | a `eq` b = a
-      match (_:c)              = match c
-
--- fold-binary.
--- It combines the element of the list argument in balanced mannerism.
-
-foldb :: (a -> a -> a) -> [a] -> a
-foldb f [] = error "can't reduce an empty list using foldb"
-foldb f [x] = x
-foldb f l  = foldb f (foldb' l)
-   where 
-      foldb' (x:y:x':y':xs) = f (f x y) (f x' y') : foldb' xs
-      foldb' (x:y:xs) = f x y : foldb' xs
-      foldb' xs = xs
-
--- Merge two ordered lists into one ordered list. 
-
-mergeWith               :: (a -> a -> Bool) -> [a] -> [a] -> [a] 
-mergeWith _ []     ys      = ys
-mergeWith _ xs     []      = xs
-mergeWith le (x:xs) (y:ys)
-       | x `le` y  = x : mergeWith le xs (y:ys)
-       | otherwise = y : mergeWith le (x:xs) ys
-
-insertWith              :: (a -> a -> Bool) -> a -> [a] -> [a]
-insertWith _ x []          = [x]
-insertWith le x (y:ys)
-       | x `le` y     = x:y:ys
-       | otherwise    = y:insertWith le x ys
-
--- Sorting is something almost every program needs, and this is the
--- quickest sorting function I know of.
-
-sortWith :: (a -> a -> Bool) -> [a] -> [a]
-sortWith le [] = []
-sortWith le lst = foldb (mergeWith le) (splitList lst)
-  where
-      splitList (a1:a2:a3:a4:a5:xs) = 
-               insertWith le a1 
-              (insertWith le a2 
-              (insertWith le a3
-              (insertWith le a4 [a5]))) : splitList xs
-      splitList [] = []
-      splitList (r:rs) = [foldr (insertWith le) [r] rs]
-
-sort :: (Ord a) => [a] -> [a]
-sort = sortWith (<=)
-
--- Gofer-like stuff:
-
-cjustify, ljustify, rjustify :: Int -> String -> String
-cjustify n s = space halfm ++ s ++ space (m - halfm)
-               where m     = n - length s
-                     halfm = m `div` 2
-ljustify n s = s ++ space (max 0 (n - length s))
-rjustify n s = space (max 0 (n - length s)) ++ s
-
-space       :: Int -> String
-space n      = copy n ' '
-
-copy  :: Int -> a -> [a]      -- make list of n copies of x
-copy n x = take n xs where xs = x:xs
-
-combinePairs :: (Ord a) => [(a,b)] -> [(a,[b])]
-combinePairs xs = 
-       combine [ (a,[b]) | (a,b) <- sortWith (\ (a,_) (b,_) -> a <= b) xs]
- where
-       combine [] = []
-       combine ((a,b):(c,d):r) | a == c = combine ((a,b++d) : r)
-       combine (a:r) = a : combine r
-
-assocMaybe :: (Eq a) => [(a,b)] -> a -> Maybe b
-assocMaybe env k = case [ val | (key,val) <- env, k == key] of
-               [] -> Nothing
-               (val:vs) -> Just val
-
-assocMaybeErr :: (Eq a) => [(a,b)] -> a -> MaybeErr b String
-assocMaybeErr env k = case [ val | (key,val) <- env, k == key] of
-                       [] -> Failed "assoc: "
-                       (val:vs) -> Succeeded val
-
-
-deSucc (Succeeded e) = e
-
-mapAccumL :: (a -> b -> (c,a)) -> a -> [b] -> ([c],a)
-mapAccumL f s [] = ([],s)
-mapAccumL f s (b:bs) = (c:cs,s'')
-       where
-               (c,s') = f s b
-               (cs,s'') = mapAccumL f s' bs
-
-
-
--- Now some utilties involving arrays.
--- Here is a version of @elem@ that uses partual application
--- to optimise lookup.
-
-arrElem :: (Ix a) => [a] -> a -> Bool
-arrElem obj = \x -> inRange size x && arr ! x 
-  where
-      size = (maximum obj,minimum obj)
-      arr = listArray size [ i `elem` obj | i <- range size ]
-
--- Here is the functional version of a multi-way conditional,
--- again using arrays, of course. Remember @b@ can be a function !
--- Note again the use of partiual application.
-
-arrCond :: (Ix a) 
-        => (a,a)                      -- the bounds
-        -> [(Assoc [a] b)]            -- the simple lookups
-        -> [(Assoc (a -> Bool) b)]    -- the functional lookups
-        -> b                          -- the default
-        -> a -> b                     -- the (functional) result
-
-arrCond bds pairs fnPairs def = (!) arr'
-  where
-      arr' = array bds [ t =: head
-                      ([ r | (p, r) <- pairs, elem t p ] ++
-                       [ r | (f, r) <- fnPairs, f t ] ++
-                       [ def ])
-              | t <- range bds ]
-
-memoise :: (Ix a) => (a,a) -> (a -> b) -> a -> b
-memoise bds f = (!) arr
-  where arr = array bds [ t =: f t | t <- range bds ]
-
--- Quite neat this. Formats text to fit in a column.
-
-formatText :: Int -> [String] -> [String]
-formatText n = map unwords . cutAt n []
-  where
-       cutAt :: Int -> [String] -> [String] -> [[String]]
-       cutAt m wds [] = [reverse wds]
-       cutAt m wds (wd:rest) = if len <= m || null wds
-                               then cutAt (m-(len+1)) (wd:wds) rest 
-                               else reverse wds : cutAt n [] (wd:rest)
-         where len = length wd
-
-\end{code}
-
diff --git a/ghc/tests/programs/andy_cherry/Interp.lhs b/ghc/tests/programs/andy_cherry/Interp.lhs
deleted file mode 100644 (file)
index 7a7bb7e..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-
-> module Interp (runInterp) where
-
-> import GenUtils
-> import DataTypes
-> import InterpUtils
-> import Parser (pgnLexer)
-
-This is a Interp for PGN.
-
-> runInterp :: AbsGame -> RealGame
-> runInterp (Game tags toks) = Game tags (pgnInterp toks initParState)
-
-%------------------------------------------------------------------------------
-
-> initParState = (FirstBoard startBoard)
-
-> type Par a = StoreBoard -> a
-> thenP :: Par a -> (a -> Par b) -> Par b
-> returnP :: a -> Par a
-
-> returnP a = \s -> a
-> thenP m k s = case m s of
->                r -> k r s
->                
-> failP a = \s -> error a
-> consP q rest = \s -> q : pgnInterp rest s
-> thenP' :: Par StoreBoard -> Par a -> Par a
-> thenP' m k s = case m s of
->                r -> k r 
-> newGameP :: Par a -> Par a
-> newGameP m = \ _ -> m initParState
-
-> getCurrColour :: Par Colour
-> getCurrColour = 
->      getBoard                `thenP` \ (Board _ (MoveNumber _ col) _) ->
->      returnP col
-
-> checkColour :: MoveNumber -> Par ()
-> checkColour (MoveNumber i col) =
->      getBoard                `thenP` \ (Board _ (MoveNumber i' col') _) ->
->      if i == i' && col == col' 
->      then returnP ()
->      else failP ("number mis-match: " 
->              ++ userFormat (MoveNumber i col) 
->              ++ " (looking for " 
->              ++ userFormat (MoveNumber i' col') 
->              ++ ")\n")
-
-%------------------------------------------------------------------------------
-
-> data StoreBoard 
->      = FirstBoard Board
->      | UndoableBoard Board {- new -} Board {- back one -}
-
-> updateBoard :: Board -> Par StoreBoard
-> updateBoard brd (FirstBoard old_brd) 
->      = UndoableBoard brd old_brd
-> updateBoard brd (UndoableBoard old_brd _) 
->      = UndoableBoard brd old_brd
-
-> getBoard :: Par Board
-> getBoard s@(FirstBoard brd) 
->      = brd
-> getBoard s@(UndoableBoard brd _) 
->      = brd
-
-> undoBoard :: Par StoreBoard
-> undoBoard (FirstBoard _) 
->      = error "Incorrect start to some analysis"
-> undoBoard (UndoableBoard _ old_brd)
->      = FirstBoard old_brd
-
-%------------------------------------------------------------------------------
-
-> pgnInterp :: [Token] -> Par [Quantum]
-> pgnInterp (IntToken n:PeriodToken:PeriodToken:PeriodToken:rest) =
->      checkColour (MoveNumber n Black)                `thenP` \ () ->
->      pgnInterp rest
-> pgnInterp (IntToken n:PeriodToken:rest) =
->      checkColour (MoveNumber n White)                `thenP` \ () ->
->      pgnInterp rest
-
-> pgnInterp (SymbolToken str:CommentToken (ann:rs):r)
->      | all (flip elem "!?") ann =
->      pgnInterp (SymbolToken str:pgnLexer ann ++ (CommentToken rs:r))
-
-This hack lets us add in analysis, as done by Fritz2,
-taking it from the comment, and adding as a variation.
-
-> pgnInterp (CommentToken (n:tag:rest):r)
->      | head tag == '(' && take 2 (reverse tag) == ":)" && length rest > 1 =
->      getCurrColour                           `thenP` \ col ->
->      let 
->          invert Black r   = r -- because the move has *already* happend
->          invert _ "0.00"  = "0.00"   -- dont negate 0
->          invert _ ('-':r) = r
->          invert _ r       = '-':r
->      in 
->      pgnInterp (LeftRBToken:map SymbolToken (take (length rest-1) rest)
->              ++ [CommentToken ["Score:",invert col n],RightRBToken] ++ r)
-
-
-> pgnInterp (CommentToken []:rest) = pgnInterp rest
-> pgnInterp (CommentToken comm:rest) =
->      consP (QuantumComment comm) rest
-> pgnInterp (NAGToken nag:rest) =
->      consP (QuantumNAG nag) rest
-> pgnInterp (NAGAnnToken nag _:rest) =
->      consP (QuantumNAG nag) rest
-> pgnInterp (SymbolToken "0-1":rest) =
->      consP (QuantumResult "0-1") rest
-> pgnInterp (SymbolToken "1-0":rest) =
->      consP (QuantumResult "1-0") rest
-> pgnInterp (SymbolToken "1/2-1/2":rest) =
->      consP (QuantumResult "1/2-1/2") rest
-> pgnInterp (AsterixToken:rest) =
->      consP (QuantumResult "*") rest
-> pgnInterp (SymbolToken move:rest@(NAGAnnToken _ str:_)) =
->      getBoard                `thenP` \ brd ->
->      parseMove move brd      `thenP` \ (mv,ch,corrMv,new_brd) ->
->      updateBoard new_brd     `thenP'`
->      consP (QuantumMove mv ch str new_brd) rest
-> pgnInterp (SymbolToken move:rest) =
->      getBoard                `thenP` \ brd ->
->      parseMove move brd      `thenP` \ (mv,ch,corrMv,new_brd) ->
->      updateBoard new_brd     `thenP'`
->      consP (QuantumMove mv ch "" new_brd) rest
-> pgnInterp (LeftRBToken:rest) =
->      getAnalysis rest 0 []   `thenP` \ (anal,rest) -> 
->      (undoBoard              `thenP'`
->      pgnInterp anal)         `thenP` \ anal' ->
->      consP (QuantumAnalysis anal') rest
-> pgnInterp [] = returnP []
-> pgnInterp toks = failP ("when reading: " 
->              ++ unwords (map userFormat (take 10 toks)))
-
-This has a *horable* complexity
-
-> getAnalysis (t@LeftRBToken:r) n anal = getAnalysis r (n+1) (t:anal)
-> getAnalysis (t@RightRBToken:r) n anal 
->      | n == (0 :: Int) = returnP (reverse anal,r)
->      | otherwise = getAnalysis r (n-1) (t:anal)
-> getAnalysis (t:r) n anal = getAnalysis r n (t:anal)
-> getAnalysis [] n anal = failP "no closing ')'"
-
-This is the *real* Interpreter, that makes sense of the move,
-and checks that it is possible to do, etc, etc.
-
-> parseMove :: String -> Board -> Par (String,String,String,Board)
-> parseMove move brd@(Board _ (MoveNumber _ col) _) = 
->   case mapMaybeFail charToMoveTok move of
->    Nothing -> failP ("strange move:" ++ move)
->    Just mv_toks ->
->      let 
->         (chs,mv_toks') = getChecks (reverse mv_toks)
->         (queen,mv_toks'') = getQueen mv_toks'
->      in 
->      case parseAlgMove mv_toks'' queen brd of 
->        (the_mv,new_brd) -> returnP (the_mv,chs,"$$",new_brd)
-
-O-O
-
-> parseAlgMove 
->      :: [MoveTok]
->      -> Maybe Piece 
->      -> Board 
->      -> (String,Board)
-> parseAlgMove [PartCastleTok,MoveToTok,PartCastleTok] Nothing
->              = findCastleKMove
-> parseAlgMove [PartCastleTok,MoveToTok,PartCastleTok,
->                  MoveToTok,PartCastleTok] Nothing
->              = findCastleQMove
-
-> parseAlgMove (PieceTok King:r) Nothing   = parsePieceMove r King 
-> parseAlgMove (PieceTok Queen:r) Nothing  = parsePieceMove r Queen 
-> parseAlgMove (PieceTok Rook:r) Nothing   = parsePieceMove r Rook 
-> parseAlgMove (PieceTok Knight:r) Nothing  = parsePieceMove r Knight 
-> parseAlgMove (PieceTok Bishop:r) Nothing  = parsePieceMove r Bishop 
-
-f5[-x]g8
-
-> parseAlgMove [FileTok sf,RankTok sr,MoveToTok,FileTok df,RankTok dr] q  =
->      findAPawnMove (extendBP (sf,sr)) (extendBP (df,dr)) q 
-> parseAlgMove [FileTok sf,RankTok sr,CaptureTok,FileTok df,RankTok dr] q  =
->      findAPawnMove (extendBP (sf,sr)) (extendBP (df,dr)) q 
-
-f5g7
-
-> parseAlgMove [FileTok sf,RankTok sr,FileTok df,RankTok dr] q = \ brd -> 
->   case lookupBoardPiece brd (sf,sr) of
->      Nothing -> error ("cant find piece at: " ++ userFormatBoardPos (sf,sr))
->      Just Pawn -> findAPawnMove (extendBP (sf,sr)) (extendBP (df,dr)) q brd
->      Just King | sf == 5 && df == 7 -> findCastleKMove brd
->      Just King | sf == 5 && df == 3 -> findCastleQMove brd
->      Just p -> findAMove p (extendBP (sf,sr)) (extendBP (df,dr)) brd
-
-> -- later !
-
-f3
-
-> parseAlgMove [FileTok df,RankTok dr] q =
->      findAPawnMove (Nothing,Nothing) (extendBP (df,dr)) q 
-
-fxg4
-
-> parseAlgMove [FileTok sf,CaptureTok,FileTok df,RankTok dr] q  =
->      findAPawnMove (Just sf,Nothing) (extendBP (df,dr)) q 
-
-fg
-
-> parseAlgMove [FileTok sf,FileTok df] q  =
->      findAPawnMove (Just sf,Nothing) (Just df,Nothing) q 
-
-fxg
-
-> parseAlgMove [FileTok sf,CaptureTok,FileTok df] q  =
->      findAPawnMove (Just sf,Nothing) (Just df,Nothing) q 
-> parseAlgMove _ _ = error "!>!"
-
-Rf8
-
-> parsePieceMove [FileTok df,RankTok dr] p
->      = findAMove p (Nothing,Nothing) (extendBP (df,dr)) 
-
-Rxf8
-
-> parsePieceMove [CaptureTok,FileTok df,RankTok dr] p
->      = findAMove p (Nothing,Nothing) (extendBP (df,dr))
-
-R4x?f8
-
-> parsePieceMove [RankTok sr,FileTok df,RankTok dr] p 
->      = findAMove p (Nothing,Just sr) (extendBP (df,dr))
-> parsePieceMove [RankTok sr,CaptureTok,FileTok df,RankTok dr] p
->      = findAMove p (Nothing,Just sr) (extendBP (df,dr))
-
-Rfx?f8
-
-> parsePieceMove [FileTok sf,FileTok df,RankTok dr] p 
->      = findAMove p (Just sf,Nothing) (extendBP (df,dr))
-> parsePieceMove [FileTok sf,CaptureTok,FileTok df,RankTok dr] p
->      = findAMove p (Just sf,Nothing) (extendBP (df,dr))
-
-Rf8[-x]?g8
-
-> parsePieceMove [FileTok sf,RankTok sr,MoveToTok,FileTok df,RankTok dr] p
->      = findAMove p (extendBP (sf,sr)) (extendBP (df,dr))
-> parsePieceMove [FileTok sf,RankTok sr,CaptureTok,FileTok df,RankTok dr] p
->      = findAMove p (extendBP (sf,sr)) (extendBP (df,dr))
-> parsePieceMove _ p = failP ("syntax error in move:")
-
-> getChecks (CheckTok:CheckTok:r) = ("#",r)
-> getChecks (CheckTok:r) = ("+",r)
-> getChecks (MateTok:r)  = ("#",r)
-> getChecks r           = ("",r)
-
-> getQueen (PieceTok p:QueensWith:r) = (Just p,reverse r)
-> getQueen r = (Nothing,reverse r)
-
-
diff --git a/ghc/tests/programs/andy_cherry/InterpUtils.lhs b/ghc/tests/programs/andy_cherry/InterpUtils.lhs
deleted file mode 100644 (file)
index 225bf3b..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-> module InterpUtils where
-
-> import GenUtils
-> import DataTypes
-> import Array -- 1.3
-
-%------------------------------------------------------------------------------
-
-This part computes the effect a move has on its board.
-
-> findCastleKMove brd = (castleK,makeACastleK brd)
-> findCastleQMove brd = (castleQ,makeACastleQ brd)
-
-> findAPawnMove
->      :: ExBoardPos 
->      -> ExBoardPos 
->      -> Maybe Piece 
->      -> Board
->      -> (String,Board)
-
-First the pawns. They are seprate because:
- 1. There are many pawns, so knowing the file helps.
- 2. You dont need to dis-ambiguate a pawn move. exf7 is fine.
-
-> findAPawnMove move_src move_dest queen brd@(Board arr mv _) 
->      = debug (move_txt,new_brd)
->   where
-
->      move_colour = getMoveColour mv
-
->      debug   = {- trace (
->              {- userFormat brd ++ -}
->              userFormat (getMoveColour mv) ++ 
->              -- " (" ++ userFormat absmove ++ ")" ++
->              "\nALL   :" ++ unwords (map userFormat all_moves) ++
->              "\n") -} id 
-
-Now get all valid moves (for the correct piece), including some 
-illegal moves (ie. pinned pieces).
-
->      correct_src = concat (map (getAllMovesFor brd) currPieces)
-
->      currPieces  =
->              [ (Pawn,x,y) |
->                      (x,y) <- start_range,
->                      r <- [arr ! (x,y)],
->                      lookupSquare move_colour r == Friendly,
->                      (Just Pawn) <- [getSquarePiece r]]
-
-Now filter out the moves it *cant* be.
-
->      start_range
->         = case (move_src,move_dest) of
->              ((Just f,Just r),_) -> [(f,r)]
->              ((Just f,_),_) -> [(f,r) | r <- [2..7]]
->              -- no capture !
->              (_,(Just f,_)) -> [(f,r) | r <- [2..7]]
->              _ -> error "strange pawn move:"
-
->      the_correct_move = if (length correct_move /= 1)
->                         then error ("\nAmbiguous move:"
->              ++ show (unwords (map userFormat correct_move))
->              ++ ":" ++ {- userFormat absmove ++ -} "\n"
->              ++ userFormat brd)
->              else head correct_move
-
->      correct_move = 
->              filter (sameQueening queen.extractSpecialFromPlayMove)
->              (filter (compExBPandBP move_dest.extractDestFromPlayMove)
->                      correct_src)
->      sameQueening (Just p) (Queening p') = p == p'
->      sameQueening Nothing  (Queening p') = Queen == p'
->      sameQueening _ _ = True
-
->      move_txt = createShortMove the_correct_move "" brd
->      corr_txt = 
->          userFormatBoardPos 
->              (extractSrcFromPlayMove the_correct_move) ++
->          userFormatBoardPos
->              (extractDestFromPlayMove the_correct_move) 
->              {- queening ?? -}
->      new_brd = makeAMove brd the_correct_move
-
-Now castling, which is very obvious.
-       
-Now piece movement.
-
-> findAMove
->      :: Piece
->      -> ExBoardPos 
->      -> ExBoardPos 
->      -> Board
->      -> (String,Board)
-
-> findAMove move_piece move_src move_dest brd@(Board arr mv _) 
->      = debug (move_txt,new_brd)
->   where
-
-First get char's about this move
-
->      move_colour = getMoveColour mv
-
->      debug   = {- trace (
->              {- userFormat brd ++ -}
->              userFormat (getMoveColour mv) ++ 
->              " (" ++ {- userFormat absmove ++ -} ")" ++
->              "\nALL   :" ++ unwords (map userFormat all_moves) ++
->              "\nDEST  :" ++ unwords (map userFormat correct_dest) ++
->              "\nSRC   :" ++ unwords (map userFormat correct_move) ++
->              "\n") -} id 
->              
-
-Now get all valid moves (for the correct piece), including some 
-illegal moves (ie. pinned pieces).
-
->      all_moves = allValidMoves brd move_piece (const True)
-
-Now filter out the moves it *cant* be.
-
->      correct_dest = filter
->              (compExBPandBP move_dest.extractDestFromPlayMove)
->                      all_moves
->      correct_move = filter
->              (compExBPandBP move_src.extractSrcFromPlayMove)
->                      correct_dest
->      the_correct_move = if (length correct_move /= 1)
->                         then error ("\nAmbiguous move:"
->              ++ show (unwords (map userFormat correct_move))
->              ++ ":" {- ++ userFormat absmove -} ++ "\n"
->              ++ userFormat brd)
->              else head correct_move
->      disamb = case move_dest of
->                (Just _,Nothing) -> ""        -- fg => fxg4, no disambig.
->                _ -> disAmb
->                   (extractSrcFromPlayMove the_correct_move)
->                   (map (extractSrcFromPlayMove) correct_dest)
-
->      move_txt = createShortMove the_correct_move disamb brd
->      corr_txt = 
->          userFormatBoardPos 
->              (extractSrcFromPlayMove the_correct_move) ++
->          userFormatBoardPos
->              (extractDestFromPlayMove the_correct_move) 
->              {- queening -}
->      new_brd = makeAMove brd the_correct_move
-> --partain: findAMove _ _ _ brd = error ("strange move: ")
-
-> allValidMoves :: Board -> Piece -> (ChessFile -> Bool) -> [PlayMove]
-> allValidMoves brd piece corr_file
->   = concat (map (getAllMovesFor brd) (getCurrPieces brd piece corr_file)) 
-
-> getCurrPieces 
->      :: Board 
->      -> Piece 
->      -> (ChessFile -> Bool)
->      -> [(Piece,ChessFile,ChessRank)]
-> getCurrPieces (Board arr (MoveNumber _ col) _) pc corr_file =
->      [ (p,x,y) |
->              ((x,y), r) <- assocs arr,
->              lookupSquare col r == Friendly,
->              (Just p) <- [getSquarePiece r],
->              p == pc,
->              corr_file x
->               ]
-
-%------------------------------------------------------------------------------
-
-Given a board and a particular piece,
-where can it get to ?
-
-> getAllMovesFor :: Board -> (Piece,Int,Int) -> [PlayMove]
-
-First the easy pieces, the gliders.
-
-> getAllMovesFor brd (Rook,x,y) = 
->      [ mkPlayMove Rook (x,y) (x',y')
->        | (x',y') <- (
->              movePiece 0    1 brd x y ++
->              movePiece 0 (-1) brd x y ++
->              movePiece 1    0 brd x y ++
->              movePiece (-1) 0 brd x y) ]
-> getAllMovesFor brd (Bishop,x,y) = 
->      [ mkPlayMove Bishop (x,y) (x',y')
->        | (x',y') <- (
->              movePiece 1      1  brd x y ++
->              movePiece 1    (-1) brd x y ++
->              movePiece (-1)   1  brd x y ++
->              movePiece (-1) (-1) brd x y) ]
-> getAllMovesFor brd (Queen,x,y) = 
->      [ mkPlayMove Queen (x,y) (x',y')
->        | (x',y') <- (
->              movePiece 0    1    brd x y ++
->              movePiece 0 (-1)    brd x y ++
->              movePiece 1    0    brd x y ++
->              movePiece (-1) 0    brd x y ++
->              movePiece 1      1  brd x y ++
->              movePiece 1    (-1) brd x y ++
->              movePiece (-1)   1  brd x y ++
->              movePiece (-1) (-1) brd x y) ]
-
-Now the `hoppers'.
-
-> getAllMovesFor brd (Knight,x,y) =
->      [ mkPlayMove Knight (x,y) (x',y')
->          | (xd,yd) <- concat 
->                      [ [(d1,d2 * 2),(d1 * 2,d2)]
->                              | d1 <- [1,-1], d2 <- [1,-1]],
->              x' <- [xd + x],
->              y' <- [yd + y],
->              case lookupBoard brd (x',y') of
->                Vacant -> True
->                Friendly -> False
->                Baddy -> True
->                OffBoard -> False]
-
-> getAllMovesFor brd (King,x,y) =
->      [ mkPlayMove King (x,y) (x',y')
->          | (xd,yd) <- [(1,1),(1,0),(1,-1),(0,1),
->                        (0,-1),(-1,1),(-1,0),(-1,-1)],
->              x' <- [xd + x],
->              y' <- [yd + y],
->              case lookupBoard brd (x',y') of
->                Vacant -> True
->                Friendly -> False
->                Baddy -> True
->                OffBoard -> False]
-
-Now the *special* case, the pawn! Pain in the neck.
-ToDo: add en-passant
-
-> getAllMovesFor brd@(Board _ (MoveNumber _ col) may_ep) (Pawn,x,y) 
->      = real_pawn_moves
->   where
->      pawn_moves = 
->              case lookupBoard brd (x,y+del) of
->                Friendly -> []
->                Baddy -> []
->                Vacant -> (mkPlayMove Pawn (x,y) (x,y+del) :
->                   if y /= sta then [] else
->                   case lookupBoard brd (x,y+del*2) of
->                      Friendly -> []
->                      Baddy -> []
->                      Vacant -> 
->                        [ PlayMove Pawn (x,y) (x,y+del*2) BigPawnMove])
->      left_pc = case lookupBoard brd (x-1,y+del) of
->                       Baddy -> [mkPlayMove Pawn (x,y) (x-1,y+del) ]
->                       _ -> []
->      right_pc = case lookupBoard brd (x+1,y+del) of
->                       Baddy -> [mkPlayMove Pawn (x,y) (x+1,y+del) ]
->                       _ -> []
->      all_pawn_moves = pawn_moves ++ left_pc ++ right_pc 
->      real_pawn_moves = en_passant ++
->              (if y + del == qn       -- if can queens
->              then concat [ let fn = PlayMove Pawn f t . Queening
->                            in
->                              [ fn Queen,
->                                fn Rook,
->                                fn Bishop,
->                                fn Knight ]
->                              | PlayMove _ f t _ <- all_pawn_moves ]
->                else all_pawn_moves)
->      en_passant = 
->          case (y == ep,may_ep) of
->              (True,Just f) | f == x+1 || f == x-1 
->                -> [PlayMove Pawn (x,y) (f,y+del) EnPassant]
->              _ -> []
->      del,sta,qn,ep :: Int
->      (del,sta,qn,ep) -- delta (direction), start, Queening and E.P. Rank
->          = case col of
->              White -> (1,2,8,5)
->              Black -> (-1,7,1,4)
-
-> movePiece xd yd brd x y = 
->      case lookupBoard brd (x',y') of
->        OffBoard -> []
->        Friendly -> []
->        Baddy    -> [(x',y')]
->        Vacant   ->  (x',y') : movePiece xd yd brd x' y'
->      where
->          x' = x + xd
->          y' = y + yd 
-
-
-%------------------------------------------------------------------------------
-
-> makeAMove :: Board -> PlayMove -> Board
-> makeAMove board@(Board brd mv@(MoveNumber _ col) _)
->      move@(PlayMove piece pos pos' NothingSpecial)  =
->      Board (brd //  [ pos =: VacantSq,
->                      pos' =: mkColBoardSq col piece ])
->                      (incMove mv) Nothing
-> makeAMove board@(Board brd mv@(MoveNumber _ col) _)
->      move@(PlayMove piece pos@(f,_) pos' BigPawnMove)  =
->      Board (brd //  [ pos =: VacantSq,
->                      pos' =: mkColBoardSq col piece ])
->                      (incMove mv) (Just f)
-> makeAMove board@(Board brd mv@(MoveNumber _ col) _)
->      move@(PlayMove piece pos@(f,_) pos' (Queening q))  =
->      Board (brd //  [ pos =: VacantSq,
->                      pos' =: mkColBoardSq col q])
->                      (incMove mv) (Just f)
-> makeAMove board@(Board brd mv@(MoveNumber _ col) _)  -- ASSERT ?
->      move@(PlayMove piece (f,_) (f',_) EnPassant) =
->      Board (brd // [ (f,st) =: VacantSq,
->                      (f',fn) =: mkColBoardSq col Pawn,
->                      (f',st) =: VacantSq ])
->                      (incMove mv) Nothing
->   where (st,fn) = case col of
->                    White -> (5,6)
->                    Black -> (4,3)
-
-> makeACastleK (Board brd mv@(MoveNumber _ White) _) =
->      Board (brd //
->            [ (5,1) =: VacantSq,
->              (6,1) =: mkColBoardSq White Rook,
->              (7,1) =: mkColBoardSq White King,
->              (8,1) =: VacantSq ]) (incMove mv) Nothing
-> makeACastleK (Board brd mv@(MoveNumber _ Black) _) =
-
->      Board (brd //
->            [ (5,8) =: VacantSq,
->              (6,8) =: mkColBoardSq Black Rook,
->              (7,8) =: mkColBoardSq Black King,
->              (8,8) =: VacantSq ]) (incMove mv) Nothing
-> makeACastleQ (Board brd mv@(MoveNumber _ White) _) =
->      Board (brd //
->            [ (5,1) =: VacantSq,
->              (4,1) =: mkColBoardSq White Rook,
->              (3,1) =: mkColBoardSq White King,
->              (1,1) =: VacantSq ]) (incMove mv) Nothing
-> makeACastleQ (Board brd mv@(MoveNumber _ Black) _) =
->      Board (brd //
->            [ (5,8) =: VacantSq,
->              (4,8) =: mkColBoardSq Black Rook,
->              (3,8) =: mkColBoardSq Black King,
->              (1,8) =: VacantSq ]) (incMove mv) Nothing
-
-> disAmb _ [_] = ""
-> disAmb (a,b) t@[(n,m),(x,y)] 
->      | n == x    = userFormatRank b
->      | otherwise = userFormatFile a
-> disAmb src lst = error ("PANIC: cant disambiguate: " ++ show src ++ show lst)
-
-> createShortMove :: PlayMove -> String -> Board -> String
-> createShortMove (PlayMove Pawn (f,r) dest q) "" brd = 
->      (if lookupBoard brd dest == Baddy || EnPassant == q
->       then userFormatFile f ++ "x" ++ userFormatBoardPos dest
->       else userFormatBoardPos dest) ++
->      case q of
->        Queening p -> "=" ++ userFormat p
->        _ -> ""
-> createShortMove (PlayMove p _ dest _) extra brd =
->      userFormat p ++ extra ++ capt ++ userFormatBoardPos dest
->   where
->      capt = if lookupBoard brd dest == Baddy
->             then "x"
->             else ""
-
-> getEPStart :: Colour -> ChessFile
-> getEPStart White = 5
-> getEPStart Black = 4
-
-> getEPEnd :: Colour -> ChessFile
-> getEPEnd White = 6
-> getEPEnd Black = 3
-
-> getHomeRank :: Colour -> ChessRank
-> getHomeRank White = 1
-> getHomeRank Black = 8
-
diff --git a/ghc/tests/programs/andy_cherry/Main.lhs b/ghc/tests/programs/andy_cherry/Main.lhs
deleted file mode 100644 (file)
index beab702..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-> module Main (main) where
-
-> import GenUtils
-> import DataTypes
-> import Parser
-> import Interp
-> import PrintTEX
-
-> import System -- 1.3 (partain)
-> import Char -- 1.3
-
-> --fakeArgs = "game001.txt"
-> --fakeArgs = "pca2.pgn"
-> --fakeArgs = "silly.pgn"
-> --fakeArgs = "small.pgn"
-> --fakeArgs = "sicil.pgn"
-> --fakeArgs = "badgame.pgn"
-> --fakeArgs = "mycgames.pgn"
-> fakeArgs = "rab.pgn"
-
-> version = "0.3"
-
-
-> main = do
->      args <- getArgs
->      let (style,fn,filename) = interpArgs args
->      file <- readFile filename
->      std_in <- getContents
->      let games = pgnParser fn file   -- parse relavent pgn games
->      putStr (prog style std_in games)
-
->{- OLD 1.2:
-> main = 
->      getArgs         abort                           $ \ args ->
->      --let args = (words "-d tex analgames.pgn") in
->      let (style,fn,filename) = interpArgs args in
->      readFile filename abort                         $ \ file ->
->      readChan stdin abort                            $ \ std_in ->
->      let games = pgnParser fn file   -- parse relavent pgn games
->      in
->      appendChan stdout (prog style std_in games) abort done
->-}
-
-> interpArgs :: [String] -> (OutputStyle,Int -> Bool,String)
-> --interpArgs [] = (ViewGame,const True,fakeArgs)
-> interpArgs [] = interpArgs (words "-d pgn analgames.pgn")
-> interpArgs files = interpArgs' OutputPGN (const True) files
-
-> interpArgs' style fn ("-d":"pgn":xs)    = interpArgs' OutputPGN    fn xs
-> interpArgs' style fn ("-d":"rawpgn":xs) = interpArgs' OutputRawPGN fn xs
-> interpArgs' style fn ("-d":"play":xs)   = interpArgs' ViewGame     fn xs
-> interpArgs' style fn ("-d":"parser":xs) = interpArgs' OutputParser fn xs
-> interpArgs' style fn ("-d":"tex":xs)    = interpArgs' OutputTEX    fn xs
-> interpArgs' style fn ("-d":"head":xs)   = interpArgs' OutputHeader fn xs
-> interpArgs' style fn ("-g":range:xs) 
->      = interpArgs' style (changeFn (parse range)) xs
->    where
->      changeFn (Digit n:Line:Digit m:r) x = moreChangeFn r x || x >= n && x <= m 
->      changeFn (Line:Digit m:r) x = moreChangeFn r x || x <= m 
->      changeFn (Digit n:Line:r) x = moreChangeFn r x || x >= n 
->      changeFn (Digit n:r) x = moreChangeFn r x || x == n
->      changeFn _ _ = rangeError
->      moreChangeFn [] = const False
->      moreChangeFn (Comma:r) = changeFn r
->      moreChangeFn _ = rangeError
->      parse xs@(n:_) 
->              | isDigit n = case span isDigit xs of
->                              (dig,rest) -> Digit (read dig) : parse rest
->      parse ('-':r) = Line : parse r
->      parse (',':r) = Comma : parse r
->      parse [] = []
->      parse _ = rangeError
->      rangeError = error ("incorrect -g option (" ++ range ++ ")\n")
-
-> interpArgs' style fn [file] = (style,fn,file)
-> interpArgs' style fn args = error ("bad args: " ++ unwords args)
-
-> data Tok 
->      = Digit Int             -- n
->      | Line                  -- -
->      | Comma                 -- ,
-
-> data OutputStyle
-
->      = OutputPGN             -- pgn
->      | OutputRawPGN          -- rawpgn
->      | OutputHeader          -- header
->      | ViewGame              -- play
->      | ViewGameEmacs         -- emacs
->      | TwoColumn             -- 2col
->      | TestGames             -- test
->      | OutputTEX
-
-Finally the debug options.
-
->      | OutputParser  -- simply dump out the string read in.
->      | CmpGen        -- cmp 2nd and 3rd generations of output 
-
-The *main* program. 
-
-> prog :: OutputStyle          -- style of action
->      -> String               -- stdin (for interactive bits)
->      -> [AbsGame]            -- input games
->      -> String               -- result
-> prog OutputPGN _
->              = pgnPrinter True       -- print out game(s)
->              . map runInterp         -- interprete all games
-> prog OutputRawPGN _
->              = pgnPrinter False      -- print out game(s)
->              . map runInterp         -- interprete all games
-> prog OutputHeader _
->              = pgnHeadPrinter        -- print out game(s) headers
->              . map runInterp         -- interprete all games
-> prog OutputTEX _
->              = texPrinter            -- print out game(s)
->              . map runInterp         -- interprete all games
-> prog ViewGame std_in
->              = interactViewer std_in -- print out game(s)
->              . runInterp             -- interprete the game
->              . head                  -- should check for only *one* object
-> prog OutputParser _ 
->              = userFormat
-
-%------------------------------------------------------------------------------
-
-Printing the pgn file.
-
-1) if White, *always* print number,
-2) is After comment / variation, print number, ie 2. Nf4 ( <stuff> ) 2... Rh8 
-
-
-> type PrintState = (Bool,MoveNumber) 
-
-> pgnPrinter :: Bool -> [RealGame] -> String
-> pgnPrinter detail = unlines . concat . map printGame
->   where
->      printMoveNumber :: Bool -> MoveNumber -> String
->      printMoveNumber False (MoveNumber _ Black) = ""
->      printMoveNumber _     mvnum = userFormat mvnum ++ " "
-
->      printQuantums :: PrintState -> [Quantum] -> [String]
->      printQuantums ps = concat . fst . mapAccumL printQuantum ps
-
->      printQuantum :: PrintState -> Quantum -> ([String],PrintState)
->      printQuantum (pnt,mv) (QuantumMove move ch an brd) =
->              ([printMoveNumber pnt mv ++ move ++ ch],(False,incMove mv))
->      printQuantum (pnt,mv) (QuantumNAG i) = 
->              if detail
->              then (["$" ++ show i],(False,mv))
->              else ([],(False,mv))
->      printQuantum (pnt,mv) (QuantumComment comms) = 
->              if detail
->              then ("{" : comms ++ ["}"],(True,mv))
->              else ([],(False,mv))
->      printQuantum (pnt,mv) (QuantumAnalysis anal) = 
->              if detail
->              then ("(" : printQuantums (True,decMove mv) anal ++ [")"],
->                      (True,mv))
->              else ([],(False,mv))
->      printQuantum (pnt,mv) (QuantumResult str) = ([str],(True,mv))
->      printQuantum _ _ = error "PANIC: strange Quantum"
-
->      printGame :: RealGame -> [String]
->      printGame (Game tags qu) = 
->              [ userFormat tag | tag <- tags] ++
->              formatText 75 (printQuantums (False,initMoveNumber) qu)
-
-%------------------------------------------------------------------------------
-
-> printHeadGame :: RealGame -> [String]
-> printHeadGame (Game tags qu) = [
->      rjustify 4 gameno ++ " " ++
->      take 20 (rjustify 20 white) ++ " - " ++ 
->      take 20 (ljustify 20 black) ++ " " ++ 
->      take 26 (ljustify 28 site) ++ " " ++ result ]
->   where
->      (date,site,game_no,res,white,black,opening) = getHeaderInfo tags
->      gameno = case game_no of
->                Nothing -> ""
->                Just n -> show n
->      result = userFormat res
-
-> pgnHeadPrinter :: [RealGame] -> String
-> pgnHeadPrinter = unlines . concat . map printHeadGame
-
-%------------------------------------------------------------------------
-
-This gives an interactive playback of a game.
-
-> interactViewer :: String -> RealGame -> String
-> interactViewer stdin (Game tags qu) = replayQ qu (lines stdin)
-
-> replayQ (QuantumMove _ _ _ brd:rest) std_in 
->      = "\027[H" ++ userFormat brd ++ waitQ rest std_in
-> replayQ (_:rest) std_in = replayQ rest std_in
-> replayQ [] _ = []
-
-> waitQ game std_in = ">>" ++ 
->    (case std_in of
->      [] -> ""
->      (q:qs) -> replayQ game qs)
-
-
diff --git a/ghc/tests/programs/andy_cherry/Makefile b/ghc/tests/programs/andy_cherry/Makefile
deleted file mode 100644 (file)
index 2ac9f14..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -cpp
-SRC_RUNTEST_OPTS += -d tex mygames.pgn
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/andy_cherry/Parser.lhs b/ghc/tests/programs/andy_cherry/Parser.lhs
deleted file mode 100644 (file)
index 020e4f4..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-> module Parser (pgnLexer,pgnParser) where
-
-> import GenUtils
-> import DataTypes
-> import Char -- 1.3
-
-This is a PGN lexer. Simple, and straightforward.
-
-> pgnLexer :: String -> [Token]
-> pgnLexer ('.':r) = PeriodToken  : pgnLexer r
-> pgnLexer ('*':r) = AsterixToken : pgnLexer r
-> pgnLexer ('[':r) = LeftSBToken  : pgnLexer r
-> pgnLexer (']':r) = RightSBToken : pgnLexer r
-> pgnLexer ('(':r) = LeftRBToken  : pgnLexer r
-> pgnLexer (')':r) = RightRBToken : pgnLexer r
-> pgnLexer ('<':r) = LeftABToken  : pgnLexer r
-> pgnLexer ('>':r) = RightABToken : pgnLexer r
-> pgnLexer ('"':r) = readString r ""
-> pgnLexer ('{':r) = readComment r ""
-> pgnLexer ('$':r) = readNAG r ""
-> pgnLexer ('!':'?':r) = mkNAGToken 5 : pgnLexer r
-> pgnLexer ('!':'!':r) = mkNAGToken 3 : pgnLexer r
-> pgnLexer ('!':r)     = mkNAGToken 1 : pgnLexer r
-> pgnLexer ('?':'?':r) = mkNAGToken 4 : pgnLexer r
-> pgnLexer ('?':'!':r) = mkNAGToken 6 : pgnLexer r
-> pgnLexer ('?':r)     = mkNAGToken 2 : pgnLexer r
-> pgnLexer ('%':r) = pgnLexer (dropWhile (/= '\n') r)
-> pgnLexer (c:r)
->      | isSpace c = pgnLexer r
->      | isAlpha c || isDigit c = pgnSymbolLexer r [c]
->      | otherwise = error ("Error lexing: " ++ takeWhile (/= '\n') (c:r))
-> pgnLexer [] = []
-
-> pgnSymbolLexer (c:r) sym 
->      | isAlpha c 
->      || isDigit c 
->      || elem c "_+#=:-/" = pgnSymbolLexer r (c:sym)
-> pgnSymbolLexer r sym 
->      | all isDigit sym = IntToken (read (reverse sym)) : pgnLexer r
-> pgnSymbolLexer r sym   = SymbolToken (reverse sym) : pgnLexer r
-
-> readString ('\\':'\\':r) str = readString r ('\\':str)
-> readString ('\\':'"':r) str = readString r ('"':str)
-> readString ('"':r) str     = StringToken (reverse str) : pgnLexer r
-> readString (c:r) str       = readString r (c:str)
-
-> readComment ('}':r) str = CommentToken (revwords str []) : pgnLexer r
-> readComment (c:r) str = readComment r (c:str)
-
-> revwords (c:r) wds
->    | isSpace c = revwords r wds
->    | otherwise = revwords' r [c] wds
-> revwords [] wds = wds
-> revwords' (c:r) wd wds 
->    | isSpace c = revwords r (wd:wds)
->    | otherwise = revwords' r (c:wd) wds
-> revwords' [] wd wds = wd : wds
-
-> readNAG (c:r) str
->      | isDigit c = readNAG r (c:str)
-> readNAG r str = mkNAGToken (read (reverse str)) : pgnLexer r
-
-> mkNAGToken 1 = NAGAnnToken 1 "!" 
-> mkNAGToken 2 = NAGAnnToken 2 "?" 
-> mkNAGToken 3 = NAGAnnToken 3 "!!"
-> mkNAGToken 4 = NAGAnnToken 4 "??"
-> mkNAGToken 5 = NAGAnnToken 5 "!?"
-> mkNAGToken 6 = NAGAnnToken 6 "?!"
-> mkNAGToken n = NAGToken n
-
-And this is a parser for PGN. It takes a list of tokens,
-and splits up games, as well as nesting varations, etc.
-
-> pgnParser :: (Int -> Bool) -> String -> [AbsGame]
-> pgnParser fn str = 
->      [ game | (no,game) <- zip [1..] (parseTags (pgnLexer str) id),
->               fn no]
-
-> type FL a = [a] -> [a]
-
-> parseTags :: [Token] -> FL TagStr -> [AbsGame]
-> parseTags (LeftSBToken:SymbolToken sym:StringToken str:RightSBToken:rest) 
->          other_tags = parseTags rest (other_tags . ((:) (TagStr sym str)))
-> parseTags toks@(LeftSBToken:_) _
->      = error ("BAD Token:" ++ unwords (map userFormat (take 10 toks)))
-> parseTags toks tags = parseToks toks id tags
-
-> parseToks :: [Token] 
->      -> FL Token 
->      -> FL TagStr
->      -> [AbsGame]
-> parseToks next@(LeftSBToken:_)     = \ toks tags ->
->      Game (tags []) (toks []) : parseTags next id
-> parseToks (tk:r)                   = pushToken tk r 
-> parseToks [] = \ toks tags -> [Game (tags []) (toks [])]
-
-> pushToken tok r toks = parseToks r (toks . ((:) tok))
diff --git a/ghc/tests/programs/andy_cherry/PrintTEX.lhs b/ghc/tests/programs/andy_cherry/PrintTEX.lhs
deleted file mode 100644 (file)
index 31d632d..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-> module PrintTEX (texPrinter) where
-
-> import GenUtils
-> import DataTypes
-> import Array -- 1.3
-> import Char -- 1.3
-
-This is the driver that prints a file suitable for input into latex.
-
-print_TeX_move :: String -> MoveNumber -> 
-
-1. turn [Quantum] -> [[Quantum]]
-
-> splitUpQuantum :: [Quantum] -> [[Quantum]]
-> splitUpQuantum q = splitUpQuantums q []
->   where
->      splitUpQuantums [] [] = []
->      splitUpQuantums [] mvs = [reverse mvs]
->      splitUpQuantums (mv@(QuantumMove _ _ _ _):rest) mvs
->              = splitUpQuantums rest (mv:mvs)
->      splitUpQuantums (mv@(QuantumNAG _):rest) mvs
->              = splitUpQuantums rest mvs
->      splitUpQuantums (x:xs) [] = [x] : splitUpQuantums xs []
->      splitUpQuantums (x:xs) mvs 
->              = [reverse mvs,[x]] ++ splitUpQuantums xs []
-
-> type TeXState = 
->      (Bool,          -- if Top level !
->      Board,          -- current board
->      MoveNumber)     -- the Current Move Number
-
-> printTeXQuantums :: TeXState -> [Quantum] -> [String]
-> printTeXQuantums ps
->      = concat . fst . mapAccumL printTeXQuantum ps . splitUpQuantum
-
-> printTeXQuantum :: TeXState -> [Quantum] -> ([String],TeXState)
-> printTeXQuantum state@(_,board,_) [QuantumComment ["\004"]] = 
->      (mkTeXBoard board,state)
-> printTeXQuantum state@(_,board,_) [QuantumComment (('\004':comm):comms)] = 
->      (mkTeXBoard board ++ formatText 70 (parseSquiggles (comm:comms)),state)
-> printTeXQuantum state [QuantumComment comms] = 
->      (formatText 70 (parseSquiggles comms),state)
-> printTeXQuantum (pnt,brd,mv) [QuantumAnalysis anal] =
->      (printTeXQuantums (False,err,decMove mv) anal,(pnt,brd,mv))
->   where err = error "Syntax error using ^D"
-> printTeXQuantum state@(_,board,_) [QuantumResult str] = 
->      (mkTeXBoard board ++ [printTeXResult (mkResult str)],state)
-> printTeXQuantum state mvs@(QuantumMove _ _ _ _:_) =
->      printTeXMoves state mvs
-> printTeXQuantum _ _ = error "PANIC: strange Quantum"
-
-
-> parseSquiggles = map parseSquiggle
-> parseSquiggle ('<':'s':'a':'w':'>':r) = "\\wbetter{}" ++ r
-> parseSquiggle ('<':'a':'w':'>':r)     = "\\wupperhand{}" ++ r
-> parseSquiggle ('<':'w':'a':'w':'>':r) = "\\wdecisive{}" ++ r
-> parseSquiggle ('<':'s':'a':'b':'>':r) = "\\bbetter{}" ++ r
-> parseSquiggle ('<':'a':'b':'>':r)     = "\\bupperhand{}" ++ r
-> parseSquiggle ('<':'w':'a':'b':'>':r) = "\\bdecisive{}" ++ r
-> parseSquiggle wd = wd
-
-
-> printTeXResult :: Result -> String
-> printTeXResult Win     = "$1\\!-\\!0$"
-> printTeXResult Loss    = "$0\\!-\\!1$"
-> printTeXResult Draw    = "${1 \\over 2}\\!-\\!{1 \\over 2}$"
-> printTeXResult Unknown = "$*$"
-
-> printTeXMoves (tl,_,mv) mvs 
->      = ([text],(True,brd,incMove last_mv_num))
->    where
->      aux_mvs = zip3 mvs (iterate incMove mv) (False:repeat True)
-
->      (QuantumMove _ _ _ brd,last_mv_num,_) = last aux_mvs
->      text = initText tl
->          ++ concat (fst (mapAccumL (pntMove tl) (mv,False) mvs))
->          ++ endText tl 
-
->      initText False = 
->           case mv of
->              MoveNumber i Black -> "|" ++ show i ++ "\\ldots~"
->              _ -> "|"
->      initText True = 
->              "\\begin{center}|\n" ++
->              "{\\bf" ++
->              "\\begin{tabular}{rp{50pt}p{50pt}}\n" ++
->           case mv of
->              MoveNumber i Black -> show i ++ " & \\ldots"
->              _ -> ""
-
->      endText True = case getMoveColour last_mv_num of
->              White -> "&\\\\\n\\end{tabular}}|\n\\end{center}"
->              Black -> "\\end{tabular}}|\n\\end{center}"
->      endText False =  "|"
-
-Use zip here !
-
->      pntMove True (mv@(MoveNumber i White),bl) move
->              = (show i ++ " & " 
->              ++ printableMove move,
->                (incMove mv,True))
->      pntMove True (mv@(MoveNumber i Black),bl) move
->              = (" & " ++ printableMove move ++ "\\\\\n",
->                (incMove mv,True))
->      pntMove False (mv@(MoveNumber i White),bl) move
->              = ((if bl then "; " else "") ++ show i ++ ".~"
->                      ++ printableMove move,
->                (incMove mv,True))
->      pntMove False (mv@(MoveNumber i Black),bl) move
->              = ((if bl then ", " else "") ++ printableMove move,
->                (incMove mv,True))
-
-> printableMove :: Quantum -> String
-> printableMove (QuantumMove move ch an _) = map fn move ++ rest
->    where
->      fn 'x' = '*'
->      fn 'O' = '0'
->      fn c   = c
->      rest = case ch of
->              "#" -> an ++ " mate"
->              _   -> ch ++ an
-
-> mkTeXBoard :: Board -> [String]
-> mkTeXBoard (Board arr _ _) = 
->      ["\n\\board"] ++
->      ["{" ++ [ fn ((x-y) `rem` 2 == 0) (arr ! (x,y)) | x <- [1..8]] ++ "}" 
->                      | y <- reverse [1..8]] ++
->      ["$$\\showboard$$"]
->  where
->      fn _ (WhitesSq p) = head (userFormat p)
->      fn _ (BlacksSq p) = toLower (head (userFormat p))
->      fn True VacantSq = '*'
->      fn False VacantSq = ' '
-
-> printTeXGame :: RealGame -> [String]
-> printTeXGame (Game tags qu) = [
->      "\\clearpage",
->      "\\begin{center}",
->      "\\fbox{\\fbox{\\large\\begin{tabular}{l}",
->      ("Game " ++ gameno ++ " \\hspace{.3 in} " 
->              ++ date 
->              ++ " \\hspace{.3 in} " 
->              ++ result 
->              ++ "\\\\"),
->      "\\hline" ++ (if null opening then "" else "\n" ++ opening ++ "\\\\"),
->      "\\raisebox{2.5pt}[11pt]{\\framebox[11pt]{\\rule{0pt}{4.25pt}}} "
->              ++ white ++ "\\\\",
->      "\\rule[-1pt]{11pt}{11pt} "++ black ++ "\\\\",
->      site,
->      "\\end{tabular}}}",
->      "\\end{center}"] ++
->      (printTeXQuantums (True,startBoard,initMoveNumber) qu)
->   where
->      (date,site,game_no,res,white,black,opening) = getHeaderInfo tags
->      gameno = case game_no of
->                Nothing -> ""
->                Just n -> show n
->      result = printTeXResult res
-
-> texPrinter :: [RealGame] -> String
-> texPrinter games = 
->         texHeader 
->      ++ (unlines(concat(map printTeXGame games)))
->      ++ texFooter
-
-> texHeader =
->      "\\documentstyle[twocolumn,a4wide,chess]{article}\n" ++
->      "\\textwidth 7.0 in\n" ++
->      "\\textheight 63\\baselineskip\n" ++
->      "\\columnsep .4 in\n" ++
->      "\\columnseprule .5 pt\n" ++
->      "\\topmargin -0.5 in\n" ++
->      "\\headheight 0 pt\n" ++
->      "\\headsep 0 pt\n" ++
->      "\\oddsidemargin -0.3 in\n" ++
->      "\\font\\sc=cmcsc10\n\\pagestyle{empty}\n" ++
->      "\\begin{document}\n\\thispagestyle{empty}\n\n"
-
-> texFooter = "\n\\end{document}\n"
-
-
diff --git a/ghc/tests/programs/andy_cherry/andy_cherry.stdout b/ghc/tests/programs/andy_cherry/andy_cherry.stdout
deleted file mode 100644 (file)
index ef160b0..0000000
+++ /dev/null
@@ -1,7258 +0,0 @@
-\documentstyle[twocolumn,a4wide,chess]{article}
-\textwidth 7.0 in
-\textheight 63\baselineskip
-\columnsep .4 in
-\columnseprule .5 pt
-\topmargin -0.5 in
-\headheight 0 pt
-\headsep 0 pt
-\oddsidemargin -0.3 in
-\font\sc=cmcsc10
-\pagestyle{empty}
-\begin{document}
-\thispagestyle{empty}
-
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Oct 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C10\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} George Webb\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & Nf3 & d5\\
-2 & d4 & Nc6\\
-3 & Nc3 & Nf6\\
-\end{tabular}}|
-\end{center}
-|3\ldots~Bf5|
-is more natural.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & e4?&\\
-\end{tabular}}|
-\end{center}
-|4.~Bf4|
-is better.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & \ldots & e6?\\
-\end{tabular}}|
-\end{center}
-|4\ldots~d*e4; 5.~d5, e*f3; 6.~d*c6, Q*d1+; 7.~N*d1|
-and black is a clear pawn up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & e5 & Ne4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bqkb r}
-{ppp *ppp}
-{ *n*p* *}
-{* *pP * }
-{ * Pn* *}
-{* N *N* }
-{PPP* PPP}
-{R BQKB*R}
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & N*e4?&\\
-\end{tabular}}|
-\end{center}
-Taking this knight looses a pawn
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & d*e4\\
-7 & Nd2 & Q*d4\\
-8 & Nc4 & Q*d1+\\
-9 & K*d1 & Bd7\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Bc5; 10.~f3, e*f3; 11.~g*f3, 0-0; 12.~Bd3|
-White can get presure down the `g' file, but first needs to solve the
-problem of the Bishop on c5 guarding g8.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & Bd2&\\
-\end{tabular}}|
-\end{center}
-|10.~Be3|
-is better.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & Bb4\\
-11 & c3 & Bc5\\
-12 & Ke1 & 0-0-0\\
-\end{tabular}}|
-\end{center}
-|12\ldots~b5; 13.~Ne3, B*e3; 14.~B*e3, N*e5|
-wins a pawn, but black might have problems because of queenside
-weaknesses.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & g3&\\
-\end{tabular}}|
-\end{center}
-|13.~Bg5, Be7; 14.~B*e7, N*e7; 15.~Rd1|
-and white is starting to contest the `d' file.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Rhf8\\
-14 & Bg2 & f5?\\
-\end{tabular}}|
-\end{center}
-black is throwing away a pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & e*f6 & g*f6\\
-\end{tabular}}|
-\end{center}
-|15\ldots~R*f6|
-gives black more piece activity.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & B*e4&\\
-\end{tabular}}|
-\end{center}
-taking the weak pawn, and attacking h7.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & e5?\\
-\end{tabular}}|
-\end{center}
-|16\ldots~Rh8|
-is required to protect the weak h pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & B*h7&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *kr r *}
-{pppb* *B}
-{ *n* p *}
-{* b p * }
-{ *N* * *}
-{* P * P }
-{PP B P P}
-{R * K *R}
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & f5\\
-\end{tabular}}|
-\end{center}
-|17\ldots~B*f2+; 18.~K*f2, Be6; 19.~N*e5, R*d2+; 20.~Ke1, R*b2|
-winning material, and striping whites king of protection.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & b4 & Be6\\
-19 & b5&\\
-\end{tabular}}|
-\end{center}
-|19.~b*c5, B*c4|
-and white has the two bishops.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & B*c4\\
-20 & b*c6 & b*c6\\
-\end{tabular}}|
-\end{center}
-|20\ldots~B*f2+; 21.~K*f2, R*d2+; 22.~Ke1, Re2+; 23.~Kd1, b*c6; 24.~h4, Rd8+|
-with a winning attack on whites exposed king.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & Rb1?&\\
-\end{tabular}}|
-\end{center}
-Throws away a pawn needlessly.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & B*a2\\
-\end{tabular}}|
-\end{center}
-|21\ldots~B*f2+; 22.~K*f2, R*d2+; 23.~Ke1, R*a2|
-winning two pawns rather than one.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & Rb2 & Bd5\\
-23 & Rg1 & e4\\
-\end{tabular}}|
-\end{center}
-|23\ldots~a5; 24.~h4, a4; 25.~Bh6, Bf3; 26.~Rd2, R*d2; 27.~B*d2|
-is a better plan, with a dangerous passed `a' pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & Bh6? & Ba3\\
-\end{tabular}}|
-\end{center}
-|24\ldots~Rf7; 25.~Bg5, R*h7; 26.~B*d8, Ba3; 27.~Rd2, K*d8|
-two bishops vs a rook, a difficult win for black.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Rb1 & Rfe8?\\
-\end{tabular}}|
-\end{center}
-another missed opertunity.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & B*f5+ & Be6\\
-27 & Bg6 & Rh8\\
-28 & Be3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *kr * r}
-{p p * * }
-{ *p*b*B*}
-{* * * * }
-{ * *p* *}
-{b P B P }
-{ * * P P}
-{*R* K R }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & Rd3?\\
-\end{tabular}}|
-\end{center}
-|28\ldots~R*h2; 29.~B*e4, c5; 30.~Rb7, a5|
-and black has a fighting chance
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & Bd4&\\
-\end{tabular}}|
-\end{center}
-|29.~B*e4, R*c3; 30.~Bd4, Rc4; 31.~B*h8, R*e4+|
-and black is lost.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & Bd5??\\
-30 & B*h8 & e3??\\
-31 & f3?&\\
-\end{tabular}}|
-\end{center}
-|31.~B*d3, e*f2+; 32.~K*f2, Bc5+; 33.~Bd4|
-and white is two rooks up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & Rd2\\
-32 & Bf6 & Bb2\\
-33 & h4&\\
-\end{tabular}}|
-\end{center}
-|33.~Bf5+, Kb7; 34.~c4, B*c4; 35.~R*b2+, R*b2; 36.~B*b2|
-winning.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & Kb7\\
-34 & Bg5 & B*f3\\
-\end{tabular}}|
-\end{center}
-|34\ldots~Ba2; 35.~Bc2, B*b1; 36.~B*b1, Rh2; 37.~B*e3, B*c3+|
-and black is just a bishop down in a pawn race.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-35 & B*e3 & Re2+\\
-36 & Kf1 & R*e3\\
-37 & Re1??&\\
-\end{tabular}}|
-\end{center}
-giving black a chance to equalize.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-37 & \ldots & Re2??\\
-\end{tabular}}|
-\end{center}
-Returning the complement.
-|37\ldots~R*e1+; 38.~K*e1, B*c3+; 39.~Kf2, Bd4+; 40.~K*f3, B*g1|
-and White still has the edge with 2 connected passed pawns, but black
-has real chances.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-38 & R*e2&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{pkp * * }
-{ *p* *B*}
-{* * * * }
-{ * * * P}
-{* P *bP }
-{ b *R* *}
-{* * *KR }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C65\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Barry Dunne\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Nf6\\
-4 & d3&\\
-\end{tabular}}|
-\end{center}
-|4.~0-0|
-Ruy Lopez, Berlin Defence
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & \ldots & Be7\\
-\end{tabular}}|
-\end{center}
-|4\ldots~Bc5|
-is better.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & 0-0&\\
-\end{tabular}}|
-\end{center}
-|5.~B*c6, d*c6; 6.~N*e5, Bd6; 7.~Nf3, 0-0; 8.~0-0, Be6|
-and white is a pawn up, but black has a lead in development.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & 0-0?\\
-\end{tabular}}|
-\end{center}
-|5\ldots~d6|
-is needed to protect e5.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|6.~B*c6, d*c6; 7.~N*e5, Bd6; 8.~Nf3, Bg4; 9.~Be3|
-and white is a clean pawn up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & b6?\\
-7 & a3 & Bb7\\
-8 & b4 & Nd4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* q rk*}
-{pbppbppp}
-{ p * n *}
-{*B* p * }
-{ P nP* *}
-{P NP*N* }
-{ *P* PPP}
-{R BQ*RK }
-$$\showboard$$
-A bit ambitious.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & N*e5&\\
-\end{tabular}}|
-\end{center}
-|9.~N*d4, e*d4; 10.~Ne2, d5; 11.~e5, Nd7|
-is whites best line.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & N*b5\\
-\end{tabular}}|
-\end{center}
-|9\ldots~d5; 10.~Bb2, d*e4; 11.~d*e4, N*e4|
-with equal chances.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & N*b5 & d5\\
-11 & Bb2 & d*e4\\
-12 & d*e4&\\
-\end{tabular}}|
-\end{center}
-|12.~f3|
-is a better approach.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & Q*d1\\
-13 & Ra*d1 & Bd6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{pbp *ppp}
-{ p b n *}
-{*N* N * }
-{ P *P* *}
-{P * * * }
-{ BP* PPP}
-{* *R*RK }
-$$\showboard$$
-|13\ldots~B*e4; 14.~Nd7, B*c2; 15.~B*f6, g*f6; 16.~Rd2|
-with a slight advantage for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Nf3&\\
-\end{tabular}}|
-\end{center}
-|14.~N*d6, c*d6; 15.~R*d6, B*e4; 16.~c4, Rfd8; 17.~c5, b*c5; 18.~b*c5|
-winning for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & B*e4\\
-\end{tabular}}|
-\end{center}
-|14\ldots~N*e4|
-is better.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & N*d6 & c*d6\\
-16 & B*f6 & g*f6\\
-17 & R*d6 & B*c2\\
-\end{tabular}}|
-\end{center}
-|17\ldots~B*f3; 18.~g*f3, Rac8; 19.~Rc1, Rc3; 20.~Rd3, R*d3; 21.~c*d3|
-and whites passed pawn is a long way from queening.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & R*f6&\\
-\end{tabular}}|
-\end{center}
-|18.~Nd4, Ba4; 19.~R*f6, Rfd8; 20.~Rf4, Rd7; 21.~Re4|
-a pawn up, but with chances for black, because of the powerful Bishop.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & Rfd8\\
-19 & Ne5 & Kg7\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Bg6|
-is better, defending the weak pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & R*f7+ & Kg8\\
-21 & Rc7&\\
-\end{tabular}}|
-\end{center}
-|21.~f4, a6; 22.~g3, Rd2; 23.~Rb7, b5|
-and white should win.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Re8\\
-\end{tabular}}|
-\end{center}
-|21\ldots~Rdc8; 22.~Rb7, Be4; 23.~Rd7, Rc2; 24.~Rfd1|
-with connected rooks for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & Re1&\\
-\end{tabular}}|
-\end{center}
-|22.~f4|
-is better for protecting the knight.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Rac8\\
-\end{tabular}}|
-\end{center}
-should have moved the `e' Rook.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & R*a7 & Bf5\\
-\end{tabular}}|
-\end{center}
-|23\ldots~Ra8!?|
-planning to attack the weak `a' pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & f4 & Bg4\\
-\end{tabular}}|
-\end{center}
-|24\ldots~Rc2|
-penatraiting the 7th.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Kf2 & Rc2+\\
-26 & Kg3 & Re2\\
-27 & R*e2 & B*e2\\
-28 & Nc6?&\\
-\end{tabular}}|
-\end{center}
-where is that knight going ?
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & Re3+\\
-29 & Kf2 & Re4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *k*}
-{R * * *p}
-{ pN* * *}
-{* * * * }
-{ P *rP *}
-{P * * * }
-{ * *bKPP}
-{* * * * }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & f5&\\
-\end{tabular}}|
-\end{center}
-|30.~Ne7+, Kf8; 31.~Nd5, Bd3; 32.~N*b6, Re7|
-totally winning for white
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Bg4\\
-31 & Ne7+&\\
-\end{tabular}}|
-\end{center}
-|31.~Kg3, h6; 32.~f6, Be6; 33.~Re7|
-looking very good for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & Kf8\\
-32 & f6 & Rf4+\\
-33 & Kg3 & Re4\\
-34 & h3&\\
-\end{tabular}}|
-\end{center}
-|34.~Nd5, Be6; 35.~N*b6, Rg4+; 36.~Kf3, Rg6; 37.~R*h7, R*f6+; 38.~Ke4|
-and with 4 connected passed white will win.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & \ldots & Bh5\\
-35 & Nd5 & b5\\
-36 & R*h7 & Bg6\\
-37 & Rh4&\\
-\end{tabular}}|
-\end{center}
-|37.~Rh8+, Kf7; 38.~Rb8, Bf5; 39.~R*b5, Be6; 40.~Rb7+, Kg6; 41.~Rg7+|
-just look at whites advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-37 & \ldots & R*h4\\
-38 & K*h4 & Be4\\
-39 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|39.~Ne3, Kf7; 40.~Kg5, Bc6; 41.~g4, Be4; 42.~h4, Bd3; 43.~h5|
-winning.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-39 & \ldots & Bc6\\
-\end{tabular}}|
-\end{center}
-|39\ldots~B*g2; 40.~N*b5, Kf7; 41.~Kg5, B*h3; 42.~Nd6+, Kg8; 43.~a4, Kh7|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-40 & g4 & Kf7\\
-41 & g5&\\
-\end{tabular}}|
-\end{center}
-|41.~Kg5, Kg8; 42.~h4, Bd7; 43.~h5, Kf7; 44.~Ne4, Kg8; 45.~Nd6|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-41 & \ldots & Kg6\\
-42 & Kg4? & Bd7+\\
-43 & Kf4 & B*h3\\
-44 & N*b5 & Bd7\\
-\end{tabular}}|
-\end{center}
-|44\ldots~Kf7; 45.~Nd6+, Ke6; 46.~f7, Ke7; 47.~g6, Kf8; 48.~a4, Kg7|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-45 & a4 & Bc6\\
-46 & Nc3 & Bd7\\
-47 & b5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* *b* * }
-{ * * Pk*}
-{*P* * P }
-{P* * K *}
-{* N * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo C65\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Rab Brown\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Bc5\\
-4 & 0-0 & Nf6\\
-5 & Nc3 & d6\\
-6 & a3 & Ng4?\\
-7 & Qe1&\\
-\end{tabular}}|
-\end{center}
-|7.~h3|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & 0-0\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bq rk*}
-{ppp *ppp}
-{ *np * *}
-{*Bb p * }
-{ * *P*n*}
-{P N *N* }
-{ PPP PPP}
-{R B QRK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & B*c6 & b*c6\\
-9 & b4 & Ba6\\
-10 & b*c5 & B*f1\\
-11 & K*f1&\\
-\end{tabular}}|
-\end{center}
-|11.~Q*f1, Qd7; 12.~Bb2, d*c5; 13.~d3, Rfb8; 14.~Rb1|
-clearly winning for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & Qf6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{p p *ppp}
-{ *pp q *}
-{* P p * }
-{ * *P*n*}
-{P N *N* }
-{ *PP PPP}
-{R B QK* }
-$$\showboard$$
-|11\ldots~Rb8; 12.~Qe2, Qd7; 13.~Qa6, Ra8; 14.~h3, Nf6; 15.~d4, e*d4|
-is a better plan.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & d3 & Qg6\\
-13 & Rb1&\\
-\end{tabular}}|
-\end{center}
-|13.~h3, Nh6|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Qh5\\
-14 & Rb7&\\
-\end{tabular}}|
-\end{center}
-|14.~h3, Nf6; 15.~Rb7, Rfc8; 16.~Bg5, Qg6; 17.~Qe3, Ne8|
-and white has a commanding lead.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & N*h2+\\
-15 & N*h2 & Q*h2\\
-16 & R*c7 & Qh1+\\
-17 & Ke2 & Q*g2\\
-18 & R*c6&\\
-\end{tabular}}|
-\end{center}
-|18.~c*d6, Rfc8; 19.~R*c8+, R*c8; 20.~Be3, Rd8; 21.~Bc5, h5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & d*c5\\
-\end{tabular}}|
-\end{center}
-|18\ldots~Qg4+; 19.~f3, Qg2+; 20.~Qf2, Q*f2+; 21.~K*f2, Rfc8; 22.~Nd5, R*c6; 23.~Ne7+|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & R*c5 & f5\\
-20 & Be3 & Qg4+\\
-21 & f3 & Qg2+\\
-22 & Qf2 & Qh1\\
-23 & R*e5 & Qa1\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{p * * pp}
-{ * * * *}
-{* * Rp* }
-{ * *P* *}
-{P NPBP* }
-{ *P*KQ *}
-{q * * * }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & Bc5?&\\
-\end{tabular}}|
-\end{center}
-|24.~Qe1, Qb2; 25.~Qd2, Q*a3; 26.~Bc5, Qa5; 27.~e*f5|
-white has the advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & Q*c3\\
-25 & R*f5&\\
-\end{tabular}}|
-\end{center}
-|25.~B*f8, Q*c2+; 26.~Kf1, Q*d3+; 27.~Qe2, Qb1+; 28.~Qe1, Q*e1+; 29.~K*e1|
-now black has only a slight advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & Q*c2+\\
-\end{tabular}}|
-\end{center}
-|25\ldots~R*f5; 26.~e*f5, Q*c2+; 27.~Kf1, Q*d3+; 28.~Kg2, Rd8; 29.~f4|
-and black has a clear lead.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & Ke3 & Q*f2+\\
-27 & K*f2 & R*f5\\
-28 & e*f5 & Rc8\\
-29 & d4 & a6\\
-30 & a4 & Kf7\\
-31 & Ke3&\\
-\end{tabular}}|
-\end{center}
-|31.~Kg3, Kf6; 32.~Kf4, g5+; 33.~f*g6, h*g6; 34.~a5, g5+; 35.~Kg4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & h5\\
-\end{tabular}}|
-\end{center}
-|31\ldots~Kf6; 32.~Kf4, Rd8; 33.~a5, Rd5; 34.~Ke4, R*f5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & Kf4 & h4\\
-33 & Kg4 & Rh8\\
-34 & d5 & h3\\
-35 & Bd6 & g6\\
-\end{tabular}}|
-\end{center}
-|35\ldots~h2; 36.~B*h2, R*h2; 37.~Kf4, Rh4+; 38.~Ke5, R*a4; 39.~d6, Rc4|
-totaly won for black.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-36 & f*g6+ & K*g6\\
-37 & Bh2 & Kf6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * r}
-{* * * * }
-{p* * k *}
-{* *P* * }
-{P* * *K*}
-{* * *P*p}
-{ * * * B}
-{* * * * }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-38 & f4&\\
-\end{tabular}}|
-\end{center}
-|38.~a5, Ke7; 39.~Kf5, Rh5+; 40.~Ke4, Rh4+; 41.~f4, Kd6; 42.~Kd4|
-holding the position.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-38 & \ldots & Ke7\\
-39 & f5 & a5\\
-\end{tabular}}|
-\end{center}
-|39\ldots~Kf6|
-is needed.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-40 & d6+ & Kd7\\
-\end{tabular}}|
-\end{center}
-|40\ldots~Kf6|
-is still needed.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-41 & Kg5 & Rb8\\
-\end{tabular}}|
-\end{center}
-|41\ldots~Ke8|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-42 & f6 & Rb2\\
-\end{tabular}}|
-\end{center}
-|42\ldots~Ke6; 43.~Kg4, Rb4+; 44.~K*h3, R*a4; 45.~d7, K*d7; 46.~Be5|
-but black should still win.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-43 & Kg6&\\
-\end{tabular}}|
-\end{center}
-|43.~f7, Rg2+; 44.~Kh6, Rf2; 45.~Kg7, Rg2+; 46.~Kh7, Rf2; 47.~Kg7|
-white has equalised!
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-43 & \ldots & Rf2\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* *k* * }
-{ * P PK*}
-{p * * * }
-{P* * * *}
-{* * * *p}
-{ * * r B}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo C60\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Ian Kennedy\\
-Dunfermline C vs Stirling B
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Bd6\\
-4 & 0-0 & a6\\
-5 & Ba4 & b5\\
-6 & Bb3 & Bb7\\
-7 & d3 & Nf6\\
-\end{tabular}}|
-\end{center}
-|7\ldots~Na5; 8.~Nbd2, f6; 9.~a4, N*b3; 10.~N*b3, Bb4; 11.~a*b5, a*b5|
-with equality.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|8.~a4, b4; 9.~Nbd2, Bc5; 10.~Nc4, d6|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & 0-0\\
-\end{tabular}}|
-\end{center}
-|8\ldots~Na5; 9.~Bd2, N*b3; 10.~a*b3, 0-0; 11.~Bg5, Rb8|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & Be3 & Na5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* q rk*}
-{*bpp*ppp}
-{p* b n *}
-{np* p * }
-{ * *P* *}
-{*BNPBN* }
-{PPP* PPP}
-{R *Q*RK }
-$$\showboard$$
-|9\ldots~Be7; 10.~a3, Ng4; 11.~Bd2|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & Bd5?!&\\
-\end{tabular}}|
-\end{center}
-where is that bishop going.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & b4\\
-\end{tabular}}|
-\end{center}
-|10\ldots~c6; 11.~Bb3, Bc7; 12.~Bg5, N*b3; 13.~B*f6, Q*f6; 14.~a*b3|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & B*b7 & N*b7\\
-12 & Nd5&\\
-\end{tabular}}|
-\end{center}
-|12.~Ne2, Ng4; 13.~Bd2, f5; 14.~e*f5, R*f5; 15.~Ng3, Rf6|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & c6\\
-\end{tabular}}|
-\end{center}
-|12\ldots~N*d5; 13.~e*d5, f6; 14.~c3, b*c3; 15.~b*c3, Be7; 16.~d4, d6|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & N*f6+&\\
-\end{tabular}}|
-\end{center}
-|13.~Bb6, Qc8; 14.~N*f6+, g*f6; 15.~d4, Bc7; 16.~B*c7, Q*c7|
-\wbetter{} and the black king is exposed.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Q*f6\\
-14 & Bb6?!&\\
-\end{tabular}}|
-\end{center}
-strange move.
-|14.~Qd2, Be7; 15.~c3, a5; 16.~a3, b*a3; 17.~b*a3|
-\wbetter{} with the plan ofs owning the `b' file.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Bc5\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Be7|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & Bc7&\\
-\end{tabular}}|
-\end{center}
-|15.~N*e5|
-but black can easly win back the pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & \ldots & Rac8?\\
-\end{tabular}}|
-\end{center}
-|15\ldots~d6; 16.~d4, e*d4; 17.~e5, Qe7; 18.~e*d6, N*d6; 19.~B*d6, Q*d6|
-\bupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & B*e5 & Qg6\\
-17 & d4&\\
-\end{tabular}}|
-\end{center}
-|17.~Bg3, Rfe8; 18.~Ne5, Qf6; 19.~N*d7, Q*b2; 20.~Re1|
-\wupperhand{} white should now try use his center pawns to push home
-his advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & Bd6\\
-18 & B*d6&\\
-\end{tabular}}|
-\end{center}
-this is to early, leaving myself underdeveloped.
-|18.~Re1, f6; 19.~B*d6, N*d6; 20.~Qd3|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & N*d6\\
-19 & Ne5&\\
-\end{tabular}}|
-\end{center}
-|19.~e5, Nc4; 20.~b3, Na3; 21.~Rc1, d6; 22.~Re1|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Q*e4\\
-20 & N*d7 & Rfe8\\
-21 & Nc5 & Qg6?\\
-\end{tabular}}|
-\end{center}
-|21\ldots~Qe2; 22.~Re1, Qc4; 23.~Qd2, Rcd8; 24.~Rad1, a5|
-\wupperhand{} white is a clear pawn up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & N*a6 & Nf5\\
-23 & N*b4&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *r*r*k*}
-{* * *ppp}
-{ *p* *q*}
-{* * *n* }
-{ N P * *}
-{* * * * }
-{PPP* PPP}
-{R *Q*RK }
-$$\showboard$$
- white should now win the endgame quite comfortably.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & Nh4\\
-\end{tabular}}|
-\end{center}
-|23\ldots~Rcd8; 24.~c3, c5; 25.~Nc2, c*d4; 26.~N*d4, Qf6; 27.~Qf3, N*d4|
-\wupperhand{} though still two clear pawns up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & g3&\\
-\end{tabular}}|
-\end{center}
-forced.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & c5\\
-25 & d*c5 & R*c5\\
-\end{tabular}}|
-\end{center}
-|25\ldots~Qe4; 26.~g*h4, Q*b4; 27.~a4, Q*h4; 28.~Qd5, Re2|
-\wupperhand{}, but whites king is dangerously exposed, and the `a'
-rook is not (yet) part of the game.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & a4&\\
-\end{tabular}}|
-\end{center}
-crap plan! Its just too slow.
-|26.~Nd3, Rf5; 27.~f4, Rd5; 28.~a4, Qb6+; 29.~Rf2, Nf5|
-\wdecisive{} black will never stop 3 connected passed pawns!
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & f5\\
-27 & Nd5 & Rd8??\\
-\end{tabular}}|
-\end{center}
-|27\ldots~Qd6; 28.~Nf4, Q*d1; 29.~Rf*d1, Nf3+; 30.~Kg2, Ne5|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & Ne7+! & Kf7\\
-29 & Q*d8 & Qg5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * Q * *}
-{* * Nkpp}
-{ * * * *}
-{* r *pq }
-{P* * * n}
-{* * * P }
-{ PP* P P}
-{R * *RK }
-$$\showboard$$
-|29\ldots~Nf3+; 30.~Kg2|
-is an idea.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & a5&\\
-\end{tabular}}|
-\end{center}
-this plan is still to slow.
-|30.~Qg8+, K*e7; 31.~Rfe1+, Kd6; 32.~Qf8+, Kc6; 33.~Qc8+, Kb6; 34.~Re6+, Rc6; 35.~Q*c6+, Ka7; 36.~Qb6+, Ka8; 37.~Re8+, Qd8; 38.~R*d8 mate|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & f4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * Q * *}
-{* * Nkpp}
-{ * * * *}
-{P r * q }
-{ * * p n}
-{* * * P }
-{ PP* P P}
-{R * *RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & f3??&\\
-\end{tabular}}|
-\end{center}
-|31.~Nc6, Nf3+; 32.~Kg2, f*g3; 33.~Qd7+, Kf8; 34.~Qc8+, Kf7; 35.~f*g3|
-\wdecisive{} but there are still some hairy tactics.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & f*g3\\
-32 & h*g3??&\\
-\end{tabular}}|
-\end{center}
-|32.~Qg8+, K*e7; 33.~Rfe1+, Re5; 34.~R*e5+, Q*e5; 35.~h3, N*f3+; 36.~Kg2|
-and white can still win!
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & Q*g3+\\
-33 & Kh1 & Qg2 mate\\
-\end{tabular}}|
-\end{center}
-painfull!
-
-\board
-{ * Q * *}
-{* * Nkpp}
-{ * * * *}
-{P r * * }
-{ * * * n}
-{* * *P* }
-{ PP* *q*}
-{R * *R*K}
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C41\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Neil Langham\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & d6\\
-3 & Nc3 & Nf6\\
-4 & Bc4 & h6\\
-\end{tabular}}|
-\end{center}
-|4\ldots~Bg4; 5.~d3, Nc6; 6.~h3, Bh5; 7.~0-0, B*f3; 8.~Q*f3|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & 0-0 & Bd7\\
-6 & d3 & Nc6\\
-7 & Bd2&\\
-\end{tabular}}|
-\end{center}
-|7.~Be3, Be7; 8.~Nd5, 0-0; 9.~h3, N*d5; 10.~B*d5, Bf6|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & Na5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* qkb r}
-{pppb*pp }
-{ * p n p}
-{n * p * }
-{ *B*P* *}
-{* NP*N* }
-{PPPB PPP}
-{R *Q*RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & b4&\\
-\end{tabular}}|
-\end{center}
-|8.~Bd5, Bg4; 9.~a3, c6; 10.~Ba2, d5; 11.~Be3, d*e4; 12.~N*e4|
-but black is having the freer game
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & N*c4\\
-9 & d*c4 & Be6\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Be7; 10.~Qe2, 0-0; 11.~Rfd1, Be6; 12.~c5, c6; 13.~c*d6, Q*d6|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & Nd5? & N*e4\\
-11 & Qe2&\\
-\end{tabular}}|
-\end{center}
-|11.~Re1, N*d2; 12.~Q*d2, c6; 13.~Ne3, Be7; 14.~Rad1, 0-0|
-\bupperhand{}, with white a pawn and position down.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & N*d2\\
-12 & N*d2&\\
-\end{tabular}}|
-\end{center}
-|12.~Q*d2|
-is better.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & Qg5??\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* *kb r}
-{ppp *pp }
-{ * pb* p}
-{* *Np q }
-{ PP* * *}
-{* * * * }
-{P*PNQPPP}
-{R * *RK }
-$$\showboard$$
-|12\ldots~g6; 13.~Ne3, f5; 14.~c5, d*c5; 15.~b*c5, c6|
-\bupperhand{}, ready for a pawn charge on white's king.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & N*c7+ & Ke7\\
-\end{tabular}}|
-\end{center}
-|13\ldots~Kd7|
-is better, stoping the future escape of the white knight.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & N*a8 & Bh3\\
-\end{tabular}}|
-\end{center}
-going for the cheapo.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & f4! & Qg6\\
-16 & Nc7&\\
-\end{tabular}}|
-\end{center}
-|16.~f*e5, Kd8; 17.~Qe4, Be6; 18.~Q*g6, f*g6|
-is the best line Fritz2 found.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & Kd7\\
-17 & Nd5 & Bg4\\
-18 & Qf2 & f6\\
-\end{tabular}}|
-\end{center}
-|18\ldots~Q*c2; 19.~Ne3, Qg6; 20.~f*e5, Be6; 21.~Nf3|
-rather cheeky, but still a rook down.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Ne3 & Ke6?\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * b r}
-{pp* * p }
-{ * pkpqp}
-{* * p * }
-{ PP* Pb*}
-{* * N * }
-{P*PN QPP}
-{R * *RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & f5+ & B*f5\\
-21 & Q*f5+&\\
-\end{tabular}}|
-\end{center}
-|21.~N*f5, Qg5; 22.~h4, Qg4|
-actually wins more material, but with this level of inequality, you
-want to swap of queens.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Q*f5\\
-22 & N*f5 & g6\\
-23 & Ng3&\\
-\end{tabular}}|
-\end{center}
-At this point the score sheet goes wrong, but the game was won by now
-anyway!
-
-\board
-{ * * b r}
-{pp* * * }
-{ * pkppp}
-{* * p * }
-{ PP* * *}
-{* * * N }
-{P*PN *PP}
-{R * *RK }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Dennis Duncan\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & d6\\
-3 & Bc4 & Bg4\\
-4 & 0-0 & Nf6\\
-5 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|5.~d3, Nc6; 6.~Be3, d5; 7.~e*d5, N*d5; 8.~Nbd2, N*e3; 9.~f*e3|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & c6\\
-\end{tabular}}|
-\end{center}
-|5\ldots~Nc6; 6.~Bb5, Qd7; 7.~h3, B*f3; 8.~Q*f3, 0-0-0|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Bb3 & d5\\
-7 & d3&\\
-\end{tabular}}|
-\end{center}
-|7.~e*d5, c*d5; 8.~Re1, e4; 9.~d3, B*f3|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & b5\\
-\end{tabular}}|
-\end{center}
-|7\ldots~d*e4; 8.~d*e4, Q*d1; 9.~R*d1, B*f3|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & h3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{rn qkb r}
-{p * *ppp}
-{ *p* n *}
-{*p*pp * }
-{ * *P*b*}
-{*BNP*N*P}
-{PPP* PP*}
-{R BQ*RK }
-$$\showboard$$
-|8.~e*d5, b4; 9.~Ne4, c*d5; 10.~N*f6+, g*f6; 11.~d4, e*d4; 12.~Q*d4|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & Bc8\\
-\end{tabular}}|
-\end{center}
-|8\ldots~B*f3; 9.~Q*f3, d4; 10.~Ne2, Nbd7; 11.~Bg5, Be7|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & N*e5&\\
-\end{tabular}}|
-\end{center}
-|9.~e*d5, N*d5; 10.~N*e5, Be6; 11.~N*d5|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & Qc7\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Bd6; 10.~Nf3, d*e4; 11.~N*e4, N*e4; 12.~Re1, B*h3; 13.~R*e4+, Be6|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & Nf3 & Nh5\\
-\end{tabular}}|
-\end{center}
-|10\ldots~Be6; 11.~Nd4, d*e4; 12.~B*e6|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & e*d5 & c5\\
-12 & N*b5&\\
-\end{tabular}}|
-\end{center}
-|12.~Re1+!, Be7; 13.~N*b5, Qb6; 14.~d6, Q*b5; 15.~R*e7+, Kd8; 16.~B*f7|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & Qb6\\
-\end{tabular}}|
-\end{center}
-|12\ldots~Qb7; 13.~Re1+, Kd8; 14.~Ne5, Nf6; 15.~Bg5, Bf5; 16.~B*f6+, g*f6|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Ba4&\\
-\end{tabular}}|
-\end{center}
-|13.~Re1+, Kd8; 14.~Ne5, Q*b5; 15.~N*f7+, Kc7; 16.~N*h8, Nf6; 17.~Bf4+|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Bd7\\
-14 & Qe2+ & Be7\\
-\end{tabular}}|
-\end{center}
-
-\board
-{rn *k* r}
-{p *bbppp}
-{ q * * *}
-{*NpP* *n}
-{B* * * *}
-{* *P*N*P}
-{PPP*QPP*}
-{R B *RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & d4&\\
-\end{tabular}}|
-\end{center}
-|15.~d6, 0-0; 16.~d*e7, Re8; 17.~d4, c*d4; 18.~Nf*d4|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & \ldots & B*b5\\
-16 & B*b5+ & Nd7\\
-\end{tabular}}|
-\end{center}
-|16\ldots~Kf8; 17.~Re1, Qd6; 18.~Nh4, Qf6; 19.~Q*h5|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & B*d7+ & K*d7\\
-18 & Ne5+ & Ke8\\
-19 & d*c5&\\
-\end{tabular}}|
-\end{center}
-|19.~Nc6, Qc7; 20.~Re1, c*d4; 21.~c4, Nf6|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Q*c5\\
-20 & Rd1&\\
-\end{tabular}}|
-\end{center}
-|20.~d6, Q*d6; 21.~Qf3, Rc8; 22.~N*f7, Qf6; 23.~Q*f6, N*f6; 24.~N*h8|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & Ng3\\
-21 & Qe3&\\
-\end{tabular}}|
-\end{center}
-|21.~Qg4, Q*c2; 22.~Rd2, Qf5; 23.~Q*g3, Bf6|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Nf5\\
-22 & Q*c5&\\
-\end{tabular}}|
-\end{center}
-|22.~Qf3, Nd6; 23.~c4, Bf6; 24.~Re1, B*e5; 25.~R*e5+, Kf8|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & B*c5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* *k* r}
-{p * *ppp}
-{ * * * *}
-{* bPNn* }
-{ * * * *}
-{* * * *P}
-{PPP* PP*}
-{R BR* K }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & Be3?&\\
-\end{tabular}}|
-\end{center}
-|23.~Re1, Ne7; 24.~c4, f6; 25.~Nd3, Bd4|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & N*e3\\
-\end{tabular}}|
-\end{center}
-|23\ldots~B*e3; 24.~f*e3, N*e3; 25.~Rd2, Rc8; 26.~Re2, N*d5; 27.~Ng6+, Kd7|
-Blacks best line
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & f*e3 & B*e3+\\
-25 & Kf1 & Bf4\\
-26 & Re1&\\
-\end{tabular}}|
-\end{center}
-|26.~Nd3, Bd6; 27.~c4, Rc8; 28.~b3|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & f6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* *k* r}
-{p * * pp}
-{ * * p *}
-{* *PN * }
-{ * * b *}
-{* * * *P}
-{PPP* *P*}
-{R * RK* }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & Ng6+ & Kf7\\
-28 & N*f4 & Rhe8\\
-29 & R*e8&\\
-\end{tabular}}|
-\end{center}
-|29.~c4, Rac8; 30.~b3, h6; 31.~Kf2, R*e1; 32.~R*e1, Rc5|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & R*e8\\
-30 & d6&\\
-\end{tabular}}|
-\end{center}
-|30.~Kf2, Re5; 31.~Rd1, g5; 32.~Ne2|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Rd8\\
-31 & Rd1 & g6\\
-32 & Nd5&\\
-\end{tabular}}|
-\end{center}
-|32.~c4, g5; 33.~Ne2, Ke6; 34.~Nd4+, Kd7; 35.~c5, h6|
-\wdecisive{},5.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & R*d6\\
-33 & c4&\\
-\end{tabular}}|
-\end{center}
-|33.~Ke2, Ke6; 34.~c4, Rc6; 35.~Kd3, f5; 36.~b3|
-\wdecisive{},4.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & f5\\
-34 & Ke1&\\
-\end{tabular}}|
-\end{center}
-|34.~b3|
-\wdecisive{},4.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & \ldots & Ra6\\
-35 & a3 & f4??\\
-\end{tabular}}|
-\end{center}
-Simply throws away a pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-36 & c5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{p * *k*p}
-{r* * *p*}
-{* PN* * }
-{ * * p *}
-{P * * *P}
-{ P * *P*}
-{* *RK * }
-$$\showboard$$
- why not take the pawn?
-|36.~N*f4, h6; 37.~g3, g5; 38.~Nd5, Re6+; 39.~Kd2, Re4|
-\wdecisive{},5.06 looks good to me.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-36 & \ldots & Ke6?\\
-37 & Nc7+&\\
-\end{tabular}}|
-\end{center}
-Black resigns
-
-\board
-{ * * * *}
-{p N * *p}
-{r* *k*p*}
-{* P * * }
-{ * * p *}
-{P * * *P}
-{ P * *P*}
-{* *RK * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C70\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Adam Rintoul\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & Ba4 & b5\\
-5 & Bb3 & Nf6\\
-6 & d3 & Bc5\\
-\end{tabular}}|
-\end{center}
-|6\ldots~Bb7; 7.~0-0, d5; 8.~e*d5, N*d5; 9.~Bg5, Be7; 10.~B*e7, Nd*e7|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & Be3?&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bqk* r}
-{* pp*ppp}
-{p*n* n *}
-{*pb p * }
-{ * *P* *}
-{*B*PBN* }
-{PPP* PPP}
-{RN*QK *R}
-$$\showboard$$
-|7.~Nc3|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & B*e3\\
-8 & f*e3 & 0-0\\
-9 & 0-0 & d6\\
-10 & Nbd2&\\
-\end{tabular}}|
-\end{center}
-|10.~a3, Bb7; 11.~Nc3, Rb8; 12.~Nd5, a5|
-\bbetter{},0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & Bg4\\
-11 & d4?&\\
-\end{tabular}}|
-\end{center}
-|11.~a4, Rb8; 12.~a*b5, a*b5; 13.~h3, Bh5; 14.~Qe2, Nd7|
-\bbetter{},-0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & B*f3\\
-\end{tabular}}|
-\end{center}
-|11\ldots~e*d4; 12.~Qe1, d*e3; 13.~Q*e3, Na5; 14.~Nd4, c6; 15.~c3, N*b3|
-\bupperhand{} a pawn up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & N*f3 & N*e4??\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* q rk*}
-{* p *ppp}
-{p*np * *}
-{*p* p * }
-{ * Pn* *}
-{*B* PN* }
-{PPP* *PP}
-{R *Q*RK }
-$$\showboard$$
-|12\ldots~Qe8; 13.~d5, Na5; 14.~Qd3, N*b3; 15.~a*b3, c6; 16.~Rad1|
-\bupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Bd5 & Qd7\\
-\end{tabular}}|
-\end{center}
-|13\ldots~Ng5; 14.~B*c6, N*f3+; 15.~B*f3, Rb8; 16.~d*e5, d*e5; 17.~a3|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & B*e4 & f5\\
-15 & Bd5+ & Kh8\\
-16 & Ng5 & e*d4\\
-17 & Qh5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * r k}
-{* pq* pp}
-{p*np * *}
-{*p*B*pNQ}
-{ * p * *}
-{* * P * }
-{PPP* *PP}
-{R * *RK }
-$$\showboard$$
-|17.~N*h7, Rfb8; 18.~Ng5, g6; 19.~Qf3, Ne5; 20.~Qh3+, Kg7; 21.~B*a8|
-\wdecisive{},4.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & h6?\\
-\end{tabular}}|
-\end{center}
-|17\ldots~g6; 18.~B*c6, g*h5; 19.~B*d7, d*e3; 20.~R*f5, R*f5; 21.~B*f5|
-\wdecisive{},4.90
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & e*d4&\\
-\end{tabular}}|
-\end{center}
-|18.~Qg6, Qe8; 19.~Qh7 mate|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & Rae8\\
-\end{tabular}}|
-\end{center}
-|18\ldots~Rf6; 19.~Rae1, Raf8; 20.~Ne6, Re8; 21.~Qf3|
-\wdecisive{},2.66
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Rae1 & R*e1\\
-20 & R*e1 & Nd8\\
-21 & Qg6&\\
-\end{tabular}}|
-\end{center}
-I finally find the two move mate!
-
-\board
-{ * n r k}
-{* pq* p }
-{p* p *Qp}
-{*p*B*pN }
-{ * P * *}
-{* * * * }
-{PPP* *PP}
-{* * R K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Nov 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C30\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Ian Robertson (2150)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & f4 & d6\\
-3 & Nf3 & Nc6\\
-\end{tabular}}|
-\end{center}
-|3\ldots~e*f4|
-Just take the pawn, and then follow the main line KG.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & Bb5 & Bd7\\
-5 & 0-0 & Nf6\\
-6 & Nc3 & Be7\\
-\end{tabular}}|
-\end{center}
-|6\ldots~a6; 7.~Ba4, e*f4; 8.~d3, b5; 9.~Bb3, b4|
-Who knows?
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & d3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* qk* r}
-{pppbbppp}
-{ *np n *}
-{*B* p * }
-{ * *PP *}
-{* NP*N* }
-{PPP* *PP}
-{R BQ*RK }
-$$\showboard$$
- At this point white is winning.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & 0-0\\
-8 & Kh1!&\\
-\end{tabular}}|
-\end{center}
-A clever waiting move, to avoid temp gaining checks.
-|8.~Ne2|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & Nd4?\\
-\end{tabular}}|
-\end{center}
-losses a pawn
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & B*d7 & Q*d7\\
-\end{tabular}}|
-\end{center}
-|9\ldots~N*f3; 10.~Bh3, Nd4; 11.~Be3, c5; 12.~f*e5, d*e5|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & f*e5 & N*f3??\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{pppqbppp}
-{ * p n *}
-{* * P * }
-{ * *P* *}
-{* NP*n* }
-{PPP* *PP}
-{R BQ*R*K}
-$$\showboard$$
- Losses the piece.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & e*f6 & B*f6\\
-12 & Q*f3 & b5?\\
-\end{tabular}}|
-\end{center}
-what is this for?
-|12\ldots~Rae8|
-Planning taking control over the very white center.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Nd5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{p pq*ppp}
-{ * p b *}
-{*p*N* * }
-{ * *P* *}
-{* *P*Q* }
-{PPP* *PP}
-{R B *R*K}
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Qd8??\\
-\end{tabular}}|
-\end{center}
-Losses another pawn, as well as weakening the kingside, and allowing
-exchange of queens.
-|13\ldots~Bd8|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & N*f6+ & Q*f6\\
-15 & Q*f6 & g*f6\\
-16 & R*f6 & Kg7\\
-17 & Bg5&\\
-\end{tabular}}|
-\end{center}
-Black is just out of good moves.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & Rae8?\\
-\end{tabular}}|
-\end{center}
-Blocking in the f rook, allowing the skew.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & Raf1 & d5?\\
-\end{tabular}}|
-\end{center}
-again lack of vision
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Bh6+ & Kg8\\
-20 & e*d5 & Rd8\\
-21 & B*f8 & R*f8\\
-22 & Rc6&\\
-\end{tabular}}|
-\end{center}
-Planning an invasion of the 7th. Textbook play.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Rd8\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * r *k*}
-{p p *p*p}
-{ *R* * *}
-{*p*P* * }
-{ * * * *}
-{* *P* * }
-{PPP* *PP}
-{* * *R*K}
-$$\showboard$$
- Planing to remove the dangerous white pawn, but missing the connected
-rooks that arrive on the 7th.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & R*c7 & R*d5\\
-24 & Rf*f7 & Rd8\\
-\end{tabular}}|
-\end{center}
-Silly, blocking the kings escape, athough its over anyway. I should
-have tried for at least one cheapo.
-|24\ldots~Re5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & R*h7 & Rf8??\\
-\end{tabular}}|
-\end{center}
-Again just missing the action.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & Rcg7 mate&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * rk*}
-{p * * RR}
-{ * * * *}
-{*p* * * }
-{ * * * *}
-{* *P* * }
-{PPP* *PP}
-{* * * *K}
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Dec 1993 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B10\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Bob Colquhoun\\
-Dunfermline Club Knockout
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c6\\
-2 & Nf3 & d5\\
-3 & e*d5 & c*d5\\
-4 & c4&\\
-\end{tabular}}|
-\end{center}
-|4.~d4|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & \ldots & Nf6\\
-\end{tabular}}|
-\end{center}
-|4\ldots~d4; 5.~b3, Nc6; 6.~Bb2, Nf6; 7.~Na3, e5|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & c*d5&\\
-\end{tabular}}|
-\end{center}
-|5.~d4, e6; 6.~c*d5, N*d5; 7.~Nbd2, Bd6; 8.~Bc4|
-Score: 0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & N*d5\\
-6 & Bc4 & e6\\
-\end{tabular}}|
-\end{center}
-|6\ldots~Nb6; 7.~Bb3, Nc6; 8.~d4, Bf5; 9.~Bg5, Be4|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & 0-0 & Nc6\\
-8 & d4 & a6\\
-\end{tabular}}|
-\end{center}
-|8\ldots~Bb4; 9.~Bd2, B*d2; 10.~Nb*d2, Nf4; 11.~Nb3, 0-0|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & Re1&\\
-\end{tabular}}|
-\end{center}
-|9.~Nc3|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & b5\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Be7; 10.~Nc3, 0-0; 11.~Qd3, Qd7; 12.~N*d5|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & B*d5 & Q*d5\\
-11 & Nc3 & Qf5\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Qd8; 12.~d5, Ne7; 13.~d6, Nf5; 14.~Qd5, Bd7|
-Score: 0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & d5 & Nd8\\
-\end{tabular}}|
-\end{center}
-|12\ldots~Nb4; 13.~d6, Nd3; 14.~Re4, N*c1; 15.~R*c1, Rb8|
-Score: 0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & d*e6&\\
-\end{tabular}}|
-\end{center}
-|13.~d6, Nb7; 14.~Ne4, Nc5; 15.~Nd4|
-Score: 0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & B*e6\\
-14 & Qd5&\\
-\end{tabular}}|
-\end{center}
-|14.~Nd5, Rc8; 15.~Nd4, Qg6; 16.~Bf4, Bc5; 17.~Nc7, Kf8; 18.~N*a6|
-Score: 0.75
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Q*d5\\
-15 & N*d5 & Bd6\\
-16 & Bg5&\\
-\end{tabular}}|
-\end{center}
-|16.~Nd4, Rb8; 17.~Bf4, B*f4; 18.~N*f4, Rb6; 19.~Nd*e6, N*e6; 20.~N*e6|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & 0-0\\
-\end{tabular}}|
-\end{center}
-|16\ldots~h6; 17.~Bd2, 0-0; 18.~Bf4|
-Score: -0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & Rad1 & Nc6\\
-\end{tabular}}|
-\end{center}
-|17\ldots~Nb7; 18.~Be7, B*e7|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & Nd4&\\
-\end{tabular}}|
-\end{center}
-|18.~Nb6, Bb4; 19.~R*e6, f*e6; 20.~N*a8, R*a8|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & B*d5\\
-\end{tabular}}|
-\end{center}
-|18\ldots~N*d4; 19.~R*d4, h6; 20.~Ne7, Kh7; 21.~R*d6, h*g5; 22.~Nd5|
-Score: -0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & N*c6 & B*h2+\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Rfe8; 20.~R*e8, R*e8; 21.~h3, Re6; 22.~Nd4, Re4|
-Score: -0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & K*h2 & B*c6\\
-21 & Rd6 & Rfe8\\
-\end{tabular}}|
-\end{center}
-|21\ldots~Rac8|
-Score: -0.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & R*e8+&\\
-\end{tabular}}|
-\end{center}
-|22.~Rc1, Be4; 23.~Rc7, h6; 24.~Be3, Kf8|
-Score: -0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & B*e8\\
-23 & a3&\\
-\end{tabular}}|
-\end{center}
-|23.~Be3, h6; 24.~b3, Kh7; 25.~a3, g6; 26.~Bd4|
-Score: -0.78
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & a5\\
-\end{tabular}}|
-\end{center}
-|23\ldots~h6; 24.~Be3, Kh7; 25.~b3, f6; 26.~Bd4, Bf7; 27.~b4|
-Score: -0.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & Kg3&\\
-\end{tabular}}|
-\end{center}
-|24.~b3, h6; 25.~Rd8, R*d8; 26.~B*d8, a4; 27.~b*a4, b*a4|
-Score: -0.81
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & a4\\
-\end{tabular}}|
-\end{center}
-|24\ldots~h6|
-Score: -0.91
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Bc1&\\
-\end{tabular}}|
-\end{center}
-|25.~Kh4, h6; 26.~Be3, Kh7; 27.~Bd4, Rc8; 28.~g3, Bc6|
-Score: -1.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & Rc8\\
-\end{tabular}}|
-\end{center}
-|25\ldots~h6; 26.~Be3, Kh7; 27.~Kh4, Rc8; 28.~Bd4, Bc6; 29.~f3|
-Score: -1.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & Bd2&\\
-\end{tabular}}|
-\end{center}
-|26.~Be3, h6; 27.~Kh4, Kh7; 28.~Bd4, Bc6; 29.~f3|
-Score: -1.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & Rc4\\
-\end{tabular}}|
-\end{center}
-|26\ldots~Bc6; 27.~Be3, h6; 28.~f3, Kh7|
-Score: -1.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & Rd8 & Re4\\
-28 & Bb4&\\
-\end{tabular}}|
-\end{center}
-|28.~f4|
-Score: -0.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & f6\\
-\end{tabular}}|
-\end{center}
-|28\ldots~h6; 29.~Kf3, Re6; 30.~Kg4, Kh7; 31.~f4, Re4; 32.~g3|
-Score: -1.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & f4&\\
-\end{tabular}}|
-\end{center}
-|29.~Kf3, Re6; 30.~Kg4, Kf7; 31.~Kh4, Re2; 32.~Rd2|
-Score: -0.91
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & Kf7\\
-30 & Kf3&\\
-\end{tabular}}|
-\end{center}
-|30.~Rc8, Kg6; 31.~Kf3|
-Score: -1.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Bc6\\
-31 & Rc8&\\
-\end{tabular}}|
-\end{center}
-|31.~Kg3, Re2; 32.~Rd2, R*d2; 33.~B*d2, Ke6; 34.~Be3|
-Score: -1.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & R*b4+\\
-32 & R*c6 & R*b2\\
-33 & g4&\\
-\end{tabular}}|
-\end{center}
-|33.~Rb6|
-Score: -2.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & Rb3+\\
-34 & Ke4 & R*a3\\
-35 & Rc7+&\\
-\end{tabular}}|
-\end{center}
-|35.~f5, h6; 36.~Rc7, Kg8; 37.~Rb7, Rb3; 38.~Rd7, Rb4; 39.~Kf3|
-Score: -3.28
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-35 & \ldots & Kg6\\
-36 & Rb7&\\
-\end{tabular}}|
-\end{center}
-|36.~f5, Kh6; 37.~Rc2, Rb3; 38.~g5, Kh5; 39.~g*f6, g*f6; 40.~Rh2|
-Score: -3.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-36 & \ldots & Rb3\\
-37 & f5+&\\
-\end{tabular}}|
-\end{center}
-|37.~Kd4|
-Score: -3.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-37 & \ldots & Kh6\\
-38 & g5+&\\
-\end{tabular}}|
-\end{center}
-|38.~Kd4, a3; 39.~Ra7, b4; 40.~Kc4, Rb2; 41.~Rb7, Rc2|
-Score: -3.59
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-38 & \ldots & f*g5\\
-39 & Rb6+ & Kh5\\
-40 & Rb7 & Rb4+\\
-\end{tabular}}|
-\end{center}
-|40\ldots~Kg4; 41.~R*g7, Rb4; 42.~Ke5, Rf4; 43.~f6, h5; 44.~Ra7, h4|
-Score: -4.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-41 & Ke5 & Rf4\\
-\end{tabular}}|
-\end{center}
-|41\ldots~Kg4; 42.~R*g7, Rf4; 43.~f6, h5; 44.~Ra7, Rf5; 45.~Ke6, h4|
-Score: -4.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-42 & R*b5 & Kg4\\
-43 & Ke6 & R*f5\\
-\end{tabular}}|
-\end{center}
-|43\ldots~h5; 44.~Re5, h4; 45.~Re1, a3; 46.~Ra1, Rf3; 47.~Rg1, Kh5|
-Score: -3.94
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-44 & R*f5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * pp}
-{ * *K* *}
-{* * *Rp }
-{p* * *k*}
-{* * * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Dec 1993 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} George Petrie\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & Nc6\\
-3 & Bc4 & d6\\
-\end{tabular}}|
-\end{center}
-|3\ldots~e6; 4.~Nc3, Nge7; 5.~d3, d5; 6.~Bb3, d4; 7.~Ne2, e5|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & 0-0&\\
-\end{tabular}}|
-\end{center}
-|4.~c3|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & \ldots & e6\\
-\end{tabular}}|
-\end{center}
-|4\ldots~g6; 5.~d4, c*d4; 6.~N*d4, Bg7; 7.~Be3, N*d4; 8.~B*d4, Nf6|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & d3&\\
-\end{tabular}}|
-\end{center}
-|5.~Bb5, Nf6; 6.~d3, Bd7; 7.~Nc3, Be7; 8.~Bg5, 0-0|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & Be7\\
-\end{tabular}}|
-\end{center}
-|5\ldots~d5; 6.~Bb5, Nf6; 7.~Ne5, Bd7; 8.~N*d7, Q*d7; 9.~Bg5|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Nc3 & Bd7\\
-\end{tabular}}|
-\end{center}
-|6\ldots~Bf6|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & Bf4&\\
-\end{tabular}}|
-\end{center}
-|7.~Re1, Nf6; 8.~Be3, 0-0; 9.~a3, Rc8; 10.~Bf4, Nd4; 11.~N*d4|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & a6\\
-\end{tabular}}|
-\end{center}
-|7\ldots~Na5; 8.~Nd2, N*c4; 9.~N*c4, e5; 10.~Bg3, Be6; 11.~Ne3|
-Score: -0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & d4&\\
-\end{tabular}}|
-\end{center}
-|8.~a3, Nf6; 9.~Re1, 0-0; 10.~Be3, e5; 11.~Nd5, Be6; 12.~N*e7|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & c*d4\\
-9 & Ne2 & e5\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Na5|
-Score: -0.94
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & Bg3 & Nf6\\
-11 & Bd5&\\
-\end{tabular}}|
-\end{center}
-|11.~c3, N*e4; 12.~c*d4, 0-0; 13.~Bd5, N*g3|
-Score: -0.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & 0-0\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Nb4; 12.~c3, Nb*d5; 13.~e*d5, d3; 14.~Nc1, e4; 15.~Nd2|
-Score: -1.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & c4&\\
-\end{tabular}}|
-\end{center}
-|12.~c3, d*c3; 13.~N*c3, b6; 14.~a3, Qc7; 15.~b3, Be6; 16.~B*e6|
-Score: -0.63
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & Qb6\\
-\end{tabular}}|
-\end{center}
-|12\ldots~Bg4; 13.~Qb3, Qc7; 14.~Rac1, Rac8; 15.~Qd3, b6|
-Score: -1.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Qd2&\\
-\end{tabular}}|
-\end{center}
-|13.~b3, Bg4; 14.~Nc1, Rac8; 15.~Nd3, Nh5; 16.~a3, N*g3; 17.~f*g3|
-Score: -1.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Rac8\\
-\end{tabular}}|
-\end{center}
-|13\ldots~Nb4; 14.~b3, Bg4; 15.~Rfd1, Nb*d5|
-Score: -1.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Bh4&\\
-\end{tabular}}|
-\end{center}
-|14.~Rac1|
-Score: -1.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Nb4\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Bg4; 15.~Bg3, Nb4; 16.~b3, Nb*d5; 17.~e*d5, B*f3; 18.~g*f3|
-Score: -1.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & Ne*d4&\\
-\end{tabular}}|
-\end{center}
-|15.~B*f6, B*f6; 16.~h3, N*d5; 17.~c*d5|
-Score: -1.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & \ldots & Nb*d5\\
-\end{tabular}}|
-\end{center}
-|15\ldots~e*d4; 16.~b3, Bg4; 17.~Qf4, Nd3|
-Score: -3.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & B*f6&\\
-\end{tabular}}|
-\end{center}
-|16.~e*d5, e*d4; 17.~Rfe1, Bd8; 18.~b3, Ng4; 19.~B*d8, Rf*d8; 20.~N*d4|
-Score: -1.94
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & N*f6\\
-17 & Ne2&\\
-\end{tabular}}|
-\end{center}
-|17.~Nf5, B*f5; 18.~e*f5, R*c4; 19.~b3, Ne4; 20.~Qd5, Rb4|
-Score: -4.75
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & R*c4\\
-18 & b3&\\
-\end{tabular}}|
-\end{center}
-|18.~Nc3, Rb4; 19.~b3, N*e4; 20.~N*e4, R*e4; 21.~Rfd1|
-Score: -5.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & R*e4\\
-19 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|19.~Ng3, Rb4; 20.~Rfe1, Bg4; 21.~Qd3, Rf4; 22.~Qe3, Q*e3; 23.~f*e3|
-Score: -5.38
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Rg4\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Rf4; 20.~Qe3, Qc7|
-Score: -5.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & Qd1&\\
-\end{tabular}}|
-\end{center}
-|20.~Rae1|
-Score: -5.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & Bc6\\
-21 & Na4&\\
-\end{tabular}}|
-\end{center}
-|21.~Rc1, Rf4; 22.~Re1, B*f3; 23.~g*f3, Re8; 24.~a3|
-Score: -5.66
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Qb4\\
-\end{tabular}}|
-\end{center}
-|21\ldots~B*a4; 22.~b*a4, Qa5; 23.~Qb3, Rb4; 24.~Qc2, R*a4; 25.~Rfc1|
-Score: -5.94
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & Rc1&\\
-\end{tabular}}|
-\end{center}
-|22.~h3, Rf4; 23.~Nb2, B*f3; 24.~g*f3, Rd4; 25.~Nd3, Qc3|
-Score: -5.81
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & R*g2+\\
-23 & K*g2 & Qg4+\\
-24 & Kh1 & B*f3+\\
-25 & Q*f3 & Q*f3+\\
-26 & Kg1 & Nh5\\
-\end{tabular}}|
-\end{center}
-|26\ldots~Nd5; 27.~Rc4, b5; 28.~Rfc1, b*c4; 29.~R*c4, Bf6|
-Score: -14.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & Rc3 & Qd5\\
-\end{tabular}}|
-\end{center}
-|27\ldots~Qg4; 28.~Kh1, b5; 29.~Rg1, Qd4; 30.~Rh3, Nf4; 31.~Rhg3, b*a4|
-Score: -12.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & Nb6&\\
-\end{tabular}}|
-\end{center}
-|28.~h3, Nf4; 29.~Rg3, Ne2; 30.~Kh2, N*g3; 31.~K*g3, Qd3; 32.~Kg2|
-Score: -11.94
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & Qd4\\
-29 & Rfc1&\\
-\end{tabular}}|
-\end{center}
-|29.~Na4, b5; 30.~h3, Nf4; 31.~Kh2, b*a4; 32.~Rc7, Re8|
-Score: -12.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & Q*b6\\
-30 & Rc8&\\
-\end{tabular}}|
-\end{center}
-|30.~R1c2, d5; 31.~h3, Qg6; 32.~Kh2, Nf4; 33.~f3, b6|
-Score: -13.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Nf4\\
-31 & R1c7&\\
-\end{tabular}}|
-\end{center}
-|31.~R8c3, Ne2; 32.~Kf1, N*c1; 33.~R*c1, d5; 34.~h3, Bc5; 35.~f3|
-Score: -15.63
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & Bh4\\
-\end{tabular}}|
-\end{center}
-|31\ldots~Nh3; 32.~Kh1, Q*f2; 33.~Rc4, d5; 34.~Rc3, Qg1|
-Score: -#4
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & Rc2&\\
-\end{tabular}}|
-\end{center}
-|32.~R*f8, K*f8; 33.~Rc8, Ke7; 34.~Rc2, Qd4; 35.~h3, B*f2; 36.~Kh2|
-Score: -18.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & Nd3\\
-\end{tabular}}|
-\end{center}
-|32\ldots~B*f2; 33.~Kf1, Qe3; 34.~R*f8, K*f8; 35.~Rc8, Ke7; 36.~Rc7, Kd8|
-Score: -19.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & R*f8+&\\
-\end{tabular}}|
-\end{center}
-|33.~Kf1, B*f2; 34.~R*f8, K*f8; 35.~Rc8, Ke7; 36.~Rg8, Bg3; 37.~Ke2|
-Score: -14.78
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & K*f8\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{*p* *ppp}
-{pq p * *}
-{* * p * }
-{ * * * b}
-{*P*n* * }
-{P*R* P P}
-{* * * K }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Dec 1993 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Peter Horne\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e6\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-\end{tabular}}|
-\end{center}
-|3\ldots~d5; 4.~d3, d*e4; 5.~B*c6, b*c6; 6.~d*e4, Q*d1; 7.~K*d1|
-Score: 0.19
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & Ba4&\\
-\end{tabular}}|
-\end{center}
-|4.~B*c6, d*c6; 5.~0-0, Nf6; 6.~Re1, Be7; 7.~d4, c5; 8.~e5|
-Score: 0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & \ldots & b5\\
-5 & Bb3 & Bb7\\
-\end{tabular}}|
-\end{center}
-|5\ldots~Na5; 6.~d3, N*b3; 7.~a*b3, Bb7; 8.~0-0, Bc5; 9.~Nc3|
-Score: -0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & d4&\\
-\end{tabular}}|
-\end{center}
-|6.~c3, Nf6; 7.~d3, Be7; 8.~Be3, 0-0; 9.~Nbd2, d5|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & Na5\\
-7 & Nbd2&\\
-\end{tabular}}|
-\end{center}
-|7.~e5, N*b3; 8.~a*b3, c5; 9.~Bg5, f6; 10.~Be3, c*d4; 11.~B*d4|
-Score: -0.38
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & Nf6\\
-\end{tabular}}|
-\end{center}
-|7\ldots~N*b3; 8.~a*b3, c5; 9.~0-0, d5; 10.~e*d5, B*d5|
-Score: -0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & e5 & Nd5\\
-\end{tabular}}|
-\end{center}
-|8\ldots~N*b3; 9.~N*b3, Ne4; 10.~0-0, Be7; 11.~c3, 0-0; 12.~Be3, d5|
-Score: -0.19
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & 0-0 & d6\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Nf4|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & a4&\\
-\end{tabular}}|
-\end{center}
-|10.~B*d5, B*d5; 11.~a4, d*e5; 12.~a*b5, c5; 13.~b*a6, e*d4|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & b4\\
-\end{tabular}}|
-\end{center}
-|10\ldots~d*e5; 11.~B*d5, Q*d5; 12.~d*e5, c5; 13.~a*b5, a*b5; 14.~b3|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & Nc4&\\
-\end{tabular}}|
-\end{center}
-|11.~B*d5, B*d5; 12.~c3, d*e5; 13.~N*e5, Bd6; 14.~c*b4, B*b4; 15.~Ndf3|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & N*b3\\
-12 & c*b3 & a5\\
-\end{tabular}}|
-\end{center}
-|12\ldots~Rb8; 13.~Qc2, Be7; 14.~Na5, c5; 15.~e*d6, Q*d6; 16.~N*b7, R*b7|
-Score: -0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Qe2&\\
-\end{tabular}}|
-\end{center}
-|13.~Bg5, Be7; 14.~B*e7, Q*e7; 15.~Re1, d*e5|
-Score: -0.56
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & f6\\
-\end{tabular}}|
-\end{center}
-|13\ldots~Be7; 14.~Rd1, 0-0; 15.~Be3, d*e5; 16.~d*e5|
-Score: -0.63
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & e*d6&\\
-\end{tabular}}|
-\end{center}
-|14.~e*f6, Bc8; 15.~f7, K*f7; 16.~Ng5, Ke7; 17.~Ne4, Qd7; 18.~Bg5|
-Score: 0.47
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & c*d6\\
-\end{tabular}}|
-\end{center}
-|14\ldots~B*d6; 15.~Q*e6, Be7; 16.~Bd2, Ra6; 17.~Qf5, c5; 18.~d*c5, B*c5|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & Q*e6+ & Qe7\\
-\end{tabular}}|
-\end{center}
-|15\ldots~Be7; 16.~Re1, Ra6; 17.~Nh4, Nc7; 18.~Q*e7, Q*e7; 19.~R*e7, K*e7|
-Score: 0.72
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & Qh3&\\
-\end{tabular}}|
-\end{center}
-|16.~N*d6, Kd8; 17.~Q*e7, B*e7; 18.~N*b7, Kc8; 19.~Nc5, Re8; 20.~Re1|
-Score: 4.66
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & Qf7\\
-\end{tabular}}|
-\end{center}
-|16\ldots~Qc7; 17.~Re1, Be7; 18.~Qe6, Ra6; 19.~Bd2, Qc8; 20.~Q*c8, B*c8|
-Score: 0.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & Re1+ & Kd8\\
-18 & Bd2 & Qg6\\
-\end{tabular}}|
-\end{center}
-|18\ldots~g6|
-Score: 0.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Re2&\\
-\end{tabular}}|
-\end{center}
-|19.~Rac1, Ra6; 20.~Ne3, N*e3; 21.~B*e3, d5; 22.~Bf4, Bd6|
-Score: 0.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Be7\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Ra6; 20.~Rae1, Be7; 21.~Qe6, Re8; 22.~Ne3, N*e3; 23.~B*e3, B*f3|
-Score: 0.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & Rae1&\\
-\end{tabular}}|
-\end{center}
-|20.~Nh4, Qh5; 21.~Rae1, Bc8; 22.~Qg3, Qg4; 23.~Bf4, N*f4; 24.~Q*g4|
-Score: 1.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & Re8\\
-\end{tabular}}|
-\end{center}
-|20\ldots~Bc8; 21.~Qh4, Bb7; 22.~Bf4, Ba6; 23.~Qg3|
-Score: 0.91
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & Nh4&\\
-\end{tabular}}|
-\end{center}
-|21.~N*d6, Bc8; 22.~Nh4, Qh5; 23.~Qg3, Rg8; 24.~Nf3, Bg4|
-Score: 2.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Qh5\\
-22 & Nf5&\\
-\end{tabular}}|
-\end{center}
-|22.~N*d6, Ba6; 23.~Re6, Bc8; 24.~g4, B*e6; 25.~R*e6, Nf4; 26.~B*f4|
-Score: 3.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Q*h3\\
-23 & g*h3 & g6\\
-\end{tabular}}|
-\end{center}
-|23\ldots~Bc6; 24.~N*g7, Rg8; 25.~Bh6, Bd7; 26.~Nb6|
-Score: 1.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & Nc*d6&\\
-\end{tabular}}|
-\end{center}
-|24.~Nf*d6, Bc6; 25.~N*e8, K*e8; 26.~Re6, Bd7; 27.~Nd6, Kd8; 28.~Nf7|
-Score: 3.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & g*f5\\
-25 & N*e8&\\
-\end{tabular}}|
-\end{center}
-|25.~N*b7, Kd7; 26.~Nc5, B*c5; 27.~d*c5, R*e2|
-Score: 1.66
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & K*e8\\
-26 & Bh6&\\
-\end{tabular}}|
-\end{center}
-|26.~f3, Kd7; 27.~Kf2, Rg8; 28.~Rd1, Bd6; 29.~Kf1, Bc6|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & Kf7\\
-\end{tabular}}|
-\end{center}
-|26\ldots~Kd7; 27.~f3, Rg8; 28.~Kf2, Bd6; 29.~Rg1, Rg6; 30.~R*g6, h*g6|
-Score: -0.47
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & Bf4&\\
-\end{tabular}}|
-\end{center}
-|27.~f3, Rg8; 28.~Kf2, Bd6; 29.~Rg1, Rg6; 30.~R*g6, h*g6; 31.~Ke1|
-Score: -0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & \ldots & Rg8+\\
-28 & Kf1 & Ba6\\
-29 & Bd2 & Bd6\\
-30 & f3&\\
-\end{tabular}}|
-\end{center}
-|30.~Rc1, B*h2; 31.~f3, Bg1; 32.~Rc4, B*c4; 33.~b*c4, B*d4; 34.~Rg2|
-Score: -3.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & B*h2\\
-31 & Kf2&\\
-\end{tabular}}|
-\end{center}
-|31.~Rc1, Bg1; 32.~Rc4, B*c4; 33.~b*c4, B*d4; 34.~Re1, Ne7|
-Score: -3.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & Bg3+\\
-32 & Kf1 & B*e1\\
-33 & B*e1&\\
-\end{tabular}}|
-\end{center}
-|33.~K*e1, Rg1; 34.~Kf2, Rb1; 35.~Re1, R*b2; 36.~Rd1, Nc3; 37.~Ke1|
-Score: -4.84
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & Ne3+\\
-\end{tabular}}|
-\end{center}
-|33\ldots~Re8; 34.~Bg3, R*e2; 35.~Kg1, R*b2; 36.~Bd6, R*b3|
-Score: -8.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & Kf2 & f4\\
-\end{tabular}}|
-\end{center}
-|34\ldots~Nd1; 35.~Kf1, Re8; 36.~Kg1, B*e2; 37.~f4, Rd8; 38.~Kg2, R*d4|
-Score: -7.81
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-35 & R*e3 & f*e3+\\
-36 & K*e3 & Re8+\\
-37 & Kd2 & Re2+\\
-38 & Kd1 & R*b2\\
-39 & d5&\\
-\end{tabular}}|
-\end{center}
-|39.~f4, R*b3; 40.~h4, Rd3; 41.~Kc1, R*d4; 42.~Bg3, Rd3; 43.~Bf2|
-Score: -6.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-39 & \ldots & R*b3\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * *k*p}
-{b* * p *}
-{p *P* * }
-{Pp * * *}
-{*r* *P*P}
-{ * * * *}
-{* *KB * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Brian Easton\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & Nf6\\
-2 & Nc3 & e6\\
-3 & d4 & d5\\
-4 & e5 & Ne4\\
-5 & N*e4 & d*e4\\
-6 & Bc4 & Nc6\\
-7 & Be3 & Bb4+\\
-8 & c3 & Be7\\
-9 & Ne2 & Bg5\\
-10 & Qd2 & Na5\\
-11 & B*g5 & N*c4\\
-12 & Qf4 & Qd5\\
-13 & b3 & Nb2\\
-14 & 0-0 & b6\\
-15 & Ng3 & Ba6\\
-16 & c4 & Nd3\\
-17 & Q*e4 & Q*e4\\
-18 & N*e4 & Bb7\\
-19 & f3 & 0-0\\
-20 & Nf2 & f6\\
-21 & e*f6 & g*f6\\
-22 & Bh6 & Rf7\\
-23 & N*d3 & Rd8\\
-24 & Nf4 & Re7\\
-25 & Rfe1 & Kf7\\
-26 & Rad1 & e5\\
-27 & d*e5 & R*d1\\
-28 & R*d1 & f*e5\\
-29 & Nd5 & Rd7\\
-30 & f4 & e4\\
-31 & f5 & c6\\
-32 & Nc3 & c5\\
-33 & R*d7+ & Kf6\\
-34 & R*b7 & K*f5\\
-35 & R*h7 & Kg6\\
-36 & Rh8&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * R}
-{p * * * }
-{ p * *kB}
-{* p * * }
-{ *P*p* *}
-{*PN * * }
-{P* * *PP}
-{* * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} George Plant\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Wester-Hailes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & Ba4 & Nf6\\
-5 & d4 & b5\\
-6 & Bb3 & d6\\
-7 & Ng5 & Qd7\\
-8 & B*f7+ & Kd8\\
-9 & d5 & Nb4\\
-10 & c3 & N*e4\\
-11 & Be6 & Qe8\\
-12 & c*b4 & N*g5\\
-13 & B*g5+ & Be7\\
-14 & B*e7+ & Q*e7\\
-15 & B*c8 & R*c8\\
-16 & 0-0 & c6\\
-17 & d*c6 & R*c6\\
-18 & Re1 & h5\\
-19 & Nc3 & Rc4\\
-20 & a3 & g5\\
-21 & Nd5 & Qg7\\
-22 & Ne3 & Rc7\\
-23 & Nf5 & Qf6\\
-24 & Q*d6+ & Q*d6\\
-25 & N*d6 & Re7\\
-26 & R*e5 & R*e5\\
-27 & Nf7+ & Ke7\\
-28 & N*e5 & Rc8\\
-29 & Nd3 & Kd6\\
-30 & Kf1 & h4\\
-31 & h3 & Kd5\\
-32 & Ne1 & Ke4\\
-33 & Nf3 & Kf4\\
-34 & Nd4 & Re8\\
-35 & Re1 & R*e1+\\
-36 & K*e1 & Ke5\\
-37 & Nc2 & Ke4\\
-38 & Ke2 & Kf4\\
-39 & Kd3 & Ke5\\
-40 & Ne3 & Kf4\\
-41 & Nd5+ & Kf5\\
-42 & Nc7&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* N * * }
-{p* * * *}
-{*p* *kp }
-{ P * * p}
-{P *K* *P}
-{ P * PP*}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} C. McIntee\\
-Wester-Hailes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & Nc6\\
-3 & Be2 & Nf6\\
-4 & Nc3 & e6\\
-5 & 0-0 & d5\\
-6 & e*d5 & N*d5\\
-7 & N*d5 & Q*d5\\
-8 & c4 & Qd8\\
-9 & Re1 & h5\\
-10 & b3 & f6\\
-11 & Bb2 & h4\\
-12 & h3 & Qc7\\
-13 & d4 & Qf4\\
-14 & d5 & e*d5\\
-15 & c*d5 & Nd8\\
-16 & Bb5+ & Kf7\\
-17 & Qc1 & Qd6\\
-18 & Qe3 & Be7\\
-19 & Qe4 & g5\\
-20 & Bd3 & Ke8\\
-21 & Qg6+ & Kd7\\
-22 & Bb5+ & Kc7\\
-23 & Ne5 & Q*d5\\
-24 & Rad1 & Qg8\\
-25 & Bc4 & Ne6\\
-26 & Q*g8 & R*g8\\
-27 & B*e6 & B*e6\\
-28 & Nf3 & Rad8\\
-29 & R*d8 & R*d8\\
-30 & R*e6 & Rd1+\\
-31 & Kh2 & Bd6+\\
-32 & g3 & f5\\
-33 & Be5 & h*g3+\\
-34 & f*g3 & B*e5\\
-35 & R*e5 & Ra1\\
-36 & R*c5+ & Kb6\\
-37 & Rc2 & g4\\
-38 & h*g4 & f*g4\\
-39 & Ne5 & Kb5\\
-40 & N*g4 & a5\\
-41 & Ne3 & Re1\\
-42 & Nc4 & Re6\\
-43 & g4 & Rh6+\\
-44 & Kg3 & Rg6\\
-45 & Rg2 & a4\\
-46 & Ne5 & Rg5\\
-47 & b*a4+ & K*a4\\
-48 & Kf4 & Rg7\\
-49 & g5 & b5\\
-50 & g6 & b4\\
-51 & Kf5 & Ka3\\
-52 & Kf6 & Rg8\\
-53 & g7&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *r*}
-{* * * P }
-{ * * K *}
-{* * N * }
-{ p * * *}
-{k * * * }
-{P* * *R*}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} F. Robertson\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Wester-Hailes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & d5\\
-2 & Nf3 & e6\\
-3 & Bf4 & Be7\\
-4 & e3 & Nf6\\
-5 & Bd3 & b6\\
-6 & 0-0 & 0-0\\
-7 & Re1 & Bb7\\
-8 & Nbd2 & c5\\
-9 & c3 & Nc6\\
-10 & Ne5 & Rc8\\
-11 & Ndf3 & c4\\
-12 & Bc2 & b5\\
-13 & b3 & Qa5\\
-14 & b4 & Qd8\\
-15 & a4 & a6\\
-16 & a*b5 & a*b5\\
-17 & N*c6 & B*c6\\
-18 & Ne5 & Bb7\\
-19 & Ra5 & Qe8\\
-20 & Ra7 & Ba8\\
-21 & Ng4 & Bc6\\
-22 & Be5 & Qd8\\
-23 & Qf3 & Ra8\\
-24 & R*a8 & B*a8\\
-25 & N*f6+ & B*f6\\
-26 & e4 & B*e5\\
-27 & d*e5 & d*e4\\
-28 & B*e4 & B*e4\\
-29 & Q*e4 & Qd3\\
-30 & Q*d3 & c*d3\\
-31 & Rd1 & Rd8\\
-32 & f4 & f5\\
-33 & Kf2 & Kf8\\
-34 & Ke3 & Ke7\\
-35 & R*d3 & R*d3+\\
-36 & K*d3 & Kd7\\
-37 & h3 & g6\\
-38 & Kd4 & Kc6\\
-39 & g3 & Kb6\\
-40 & g4 & Kc6\\
-41 & c4 & Kb6\\
-42 & c5+ & Kc6\\
-43 & Ke3 & Kc7\\
-44 & Ke2 & Kc6\\
-45 & Kf3 & Kd5\\
-46 & g*f5 & g*f5\\
-47 & h4 & Kc4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * *p}
-{ * *p* *}
-{*pP Pp* }
-{ Pk* P P}
-{* * *K* }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} A. McKerrow\\
-Wester-Hailes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & Ba4 & Nf6\\
-5 & 0-0 & Be7\\
-6 & Nc3 & b5\\
-7 & Bb3 & 0-0\\
-8 & a3 & d6\\
-9 & Re1 & Rb8\\
-10 & d3 & Bg4\\
-11 & h3 & Bh5\\
-12 & Nd5 & N*d5\\
-13 & e*d5 & Nd4\\
-14 & g4 & N*f3+\\
-15 & Q*f3 & Bg6\\
-16 & a4 & b4\\
-17 & a5 & Qc8\\
-18 & Ba4 & f5\\
-19 & g*f5 & R*f5\\
-20 & Qg4 & Bh5\\
-21 & Qc4 & Rf6\\
-22 & Bg5 & Rg6\\
-23 & f4 & h6\\
-24 & R*e5 & d*e5\\
-25 & d6+ & Qe6\\
-26 & Q*e6+ & R*e6\\
-27 & Bb3 & h*g5\\
-28 & d*e7 & Bf7\\
-29 & f*g5 & Rg6\\
-30 & Rf1 & B*b3\\
-31 & c*b3 & R*g5+\\
-32 & Kh2 & Re8\\
-33 & h4 & Rg4\\
-34 & Kh3 & Rf4\\
-35 & R*f4 & e*f4\\
-36 & Kg4 & R*e7\\
-37 & K*f4 & Rd7\\
-38 & Ke4 & Rd6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *k*}
-{* p * p }
-{p* r * *}
-{P * * * }
-{ p *K* P}
-{*P*P* * }
-{ P * * *}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} S. McCluskey\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Wester-Hailes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & B*c6 & d*c6\\
-5 & d3 & Bd6\\
-6 & 0-0 & Bg4\\
-7 & h3 & Bh5\\
-8 & Be3 & Qe7\\
-9 & Nc3 & Nf6\\
-10 & Re1 & 0-0-0\\
-11 & Nb1 & Bb4\\
-12 & c3 & Ba5\\
-13 & b4 & Bb6\\
-14 & a3 & N*e4\\
-15 & B*b6 & B*f3\\
-16 & Q*f3 & Ng5\\
-17 & Qe3 & c*b6\\
-18 & d4 & Rhe8\\
-19 & h4 & Ne6\\
-20 & g3 & e*d4\\
-21 & c*d4 & R*d4\\
-22 & Nc3 & c5\\
-23 & Rac1 & Red8\\
-24 & b*c5 & b*c5\\
-25 & Ne4 & R8d7\\
-26 & N*c5 & Rc7\\
-27 & N*e6 & Q*e6\\
-28 & Q*d4 & R*c1\\
-29 & R*c1+ & Kb8\\
-30 & Q*g7&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ k * * *}
-{*p* *pQp}
-{p* *q* *}
-{* * * * }
-{ * * * P}
-{P * * P }
-{ * * P *}
-{* R * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Rab Brown\\
-Dunferline Club Knockout
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & d6\\
-3 & d4 & Nc6\\
-4 & d*e5 & N*e5\\
-5 & N*e5 & d*e5\\
-6 & Q*d8+ & K*d8\\
-7 & Bc4 & Bb4+\\
-8 & Nc3 & B*c3+\\
-9 & b*c3 & Be6\\
-10 & B*e6 & f*e6\\
-11 & 0-0 & Nf6\\
-12 & Bb2 & N*e4\\
-13 & c4 & Nd2\\
-14 & Rfd1 & Ke7\\
-15 & R*d2 & c5\\
-16 & B*e5 & Rhg8\\
-17 & Rad1 & g5\\
-18 & Rd7+ & Ke8\\
-19 & R*b7 & g4\\
-20 & R*h7 & Rd8\\
-21 & R*d8+ & K*d8\\
-22 & Rh8 & R*h8\\
-23 & B*h8 & Kd7\\
-24 & f3 & g*f3\\
-25 & g*f3 & Ke7\\
-26 & Be5 & Kd7\\
-27 & Kg2 & Ke7\\
-28 & Kg3 & Kf7\\
-29 & Bd6 & Kf6\\
-30 & B*c5 & a5\\
-31 & Kf4 & e5+\\
-32 & Ke4 & Ke6\\
-33 & f4 & a4\\
-34 & f*e5 & a3\\
-35 & B*a3 & Kd7\\
-36 & Kd5 & Ke8\\
-37 & Ke6 & Kd8\\
-38 & Kf7 & Kd7\\
-39 & e6+ & Kc6\\
-40 & e7 & Kc7\\
-41 & e8=Q & Kb7\\
-42 & Qe6 & Kc7\\
-43 & Qd6+ & Kb7\\
-44 & Ke7 & Ka7\\
-45 & Qb4 & Ka8\\
-46 & Kd7 & Ka7\\
-47 & Kc7 & Ka6\\
-48 & Qb6 mate&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* K * * }
-{kQ * * *}
-{* * * * }
-{ *P* * *}
-{B * * * }
-{P*P* * P}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Dick Patterson\\
-Dunfermline C vs Grangemouth B
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & Nc6\\
-3 & Be2 & e6\\
-4 & b3 & a6\\
-5 & 0-0 & b5\\
-6 & Bb2 & Nf6\\
-7 & e5 & Nd5\\
-8 & d4 & Bb7\\
-9 & c4 & Nf4\\
-10 & c*b5 & N*e2+\\
-11 & Q*e2 & a*b5\\
-12 & Re1 & c*d4\\
-13 & N*d4 & N*d4\\
-14 & B*d4 & Qg5\\
-15 & g3 & Rc8\\
-16 & f4 & Qg6\\
-17 & Q*b5 & Bc6\\
-18 & Qe2 & Be7\\
-19 & a4 & 0-0\\
-20 & a5 & f6\\
-21 & e*f6 & B*f6\\
-22 & B*f6 & R*f6\\
-23 & b4 & R*f4\\
-24 & Qd2 & Rf3\\
-25 & Rf1 & R*f1+\\
-26 & K*f1 & Qf5+\\
-27 & Qf4 & Qd3+\\
-28 & Ke1 & Rf8\\
-29 & Q*f8+ & K*f8\\
-30 & a6 & Qd4\\
-31 & Ke2 & Q*a1\\
-32 & Nd2 & Q*a6+\\
-33 & Ke3 & Qa3+\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{* *p* pp}
-{ *b*p* *}
-{* * * * }
-{ P * * *}
-{q * K P }
-{ * N * P}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jan 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Ian Mitchell (1660)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & f4 & e*f4\\
-3 & Nf3 & Nc6\\
-4 & d4 & Nf6\\
-5 & Bd3 & d5\\
-6 & e5 & Ne4\\
-7 & 0-0 & g5\\
-8 & c3 & Qe7\\
-9 & Nfd2 & Bf5\\
-10 & Qe2 & N*d2\\
-11 & N*d2 & B*d3\\
-12 & Q*d3 & 0-0-0\\
-13 & a4 & Rg8\\
-14 & a5 & a6\\
-15 & b4 & h6\\
-16 & b5 & Nb8\\
-17 & Nb3 & a*b5\\
-18 & Q*b5 & Qd7\\
-19 & Qd3 & f6\\
-20 & e*f6 & Bd6\\
-21 & Bd2 & Qg4\\
-22 & a6 & N*a6\\
-23 & R*a6 & b*a6\\
-24 & Q*a6+ & Kd7\\
-25 & Qb5+ & Ke6\\
-26 & c4 & f3\\
-27 & R*f3 & Rb8\\
-28 & Q*d5+ & Kd7\\
-29 & Nc5+ & Kd8\\
-30 & Q*g8+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ r k *Q*}
-{* p * * }
-{ * b P p}
-{* N * p }
-{ *PP *q*}
-{* * *R* }
-{ * B *PP}
-{* * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Feb 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Paul Burtwistle\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & e6\\
-3 & Be2 & Nc6\\
-4 & 0-0 & Nf6\\
-5 & Nc3 & d5\\
-6 & e5 & Nd7\\
-7 & Re1 & Nd*e5\\
-8 & N*e5 & N*e5\\
-9 & Bb5+ & Nc6\\
-10 & d4 & a6\\
-11 & B*c6+ & b*c6\\
-12 & Be3 & c*d4\\
-13 & B*d4 & c5\\
-14 & Be5 & Bb7\\
-15 & Qd2 & f6\\
-16 & Bc7 & Q*c7\\
-17 & R*e6+ & Kf7\\
-18 & Rae1 & d4\\
-19 & Nd1 & Bd6\\
-20 & f4 & Rhe8\\
-21 & f5 & Bd5\\
-22 & R*e8 & R*e8\\
-23 & c3 & R*e1+\\
-24 & Q*e1 & B*h2+\\
-25 & Kh1 & Be5\\
-26 & c*d4 & c*d4\\
-27 & Qe2 & Qc4\\
-28 & Qh5+ & Kf8\\
-29 & Kg1 & Qc2\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{* * * pp}
-{p* * p *}
-{* *bbP*Q}
-{ * p * *}
-{* * * * }
-{PPq* *P*}
-{* *N* K }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Feb 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Jim O'Neill (1875)\\
-Dunfermline Club Knockout
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & Nf6\\
-5 & Bd3 & a6\\
-6 & 0-0 & e5\\
-7 & Nf3 & Bg4\\
-8 & Nc3 & Nbd7\\
-9 & Re1 & Rc8\\
-10 & Be3 & b5\\
-11 & Nd5 & N*d5\\
-12 & e*d5 & Nf6\\
-13 & Bg5 & Be7\\
-14 & B*f6 & B*f6\\
-15 & Be4 & 0-0\\
-16 & c3 & Bh4\\
-17 & Qc2 & f5\\
-18 & N*h4 & Q*h4\\
-19 & g3 & Qh5\\
-20 & Bg2 & Rf6\\
-21 & f3 & B*f3\\
-22 & B*f3 & Q*f3\\
-23 & Rad1 & f4\\
-24 & g*f4 & Rg6+\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *r* *k*}
-{* * * pp}
-{p* p *r*}
-{*p*Pp * }
-{ * * P *}
-{* P *q* }
-{PPQ* * P}
-{* *RR K }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Feb 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Bill Bell\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e6\\
-2 & d4 & d5\\
-3 & Nf3 & d*e4\\
-4 & Nfd2 & Q*d4\\
-5 & c3 & Qd5\\
-6 & Be2 & e3\\
-7 & Nf3 & Q*d1+\\
-8 & B*d1 & e*f2+\\
-9 & K*f2 & Nc6\\
-10 & Be3 & Bd7\\
-11 & Re1 & h6\\
-12 & Nbd2 & 0-0-0\\
-13 & Ba4 & Kb8\\
-14 & Rad1 & Bd6\\
-15 & b4 & a6\\
-16 & Nc4 & Be7\\
-17 & Nfe5 & Be8\\
-18 & R*d8+ & B*d8\\
-19 & B*c6 & B*c6\\
-20 & N*f7 & Rh7\\
-21 & N*d8 & Bd5\\
-22 & Nd2 & g5\\
-23 & Rd1 & Kc8\\
-24 & Nb3 & Rd7\\
-25 & N*b7 & B*b7\\
-26 & R*d7 & K*d7\\
-27 & Nc5+ & Kc6\\
-28 & N*e6 & Nf6\\
-29 & Nd8+ & Kd7\\
-30 & N*b7 & Ne4+\\
-31 & Kf3 & N*c3\\
-32 & Nc5+ & Kc6\\
-33 & N*a6 & N*a2\\
-34 & Bd2 & Kb6\\
-35 & Nc5 & Kc6\\
-36 & Nd3 & Kb5\\
-37 & Ke4 & Kc4\\
-38 & g3 & Kb3\\
-39 & h4 & g*h4\\
-40 & g*h4 & Nc3+\\
-41 & B*c3 & K*c3\\
-42 & h5 & Kc4\\
-43 & Ne5+ & K*b4\\
-44 & Kd5 & c5\\
-45 & Nd3+ & Kb5\\
-46 & N*c5 & Kb6\\
-47 & Ne6 & Kb7\\
-48 & Nf8 & Kc7\\
-49 & Ke6 & Kd8\\
-50 & Kf7 & Kc8\\
-51 & Kg6 & Kd8\\
-52 & K*h6 & Ke8\\
-53 & Kg7&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * *kN *}
-{* * * K }
-{ * * * *}
-{* * * *P}
-{ * * * *}
-{* * * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Feb 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} John MacArthur (1725)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & e6\\
-2 & Nf3 & Nf6\\
-3 & c4 & d5\\
-4 & Nc3 & Nc6\\
-5 & e3 & Be7\\
-6 & Be2 & 0-0\\
-7 & 0-0 & Qd6\\
-8 & c5 & Qd7\\
-9 & Ne5 & N*e5\\
-10 & d*e5 & Ne4\\
-11 & N*e4 & d*e4\\
-12 & Qc2 & Qc6\\
-13 & b4 & Rd8\\
-14 & Bb2 & a5\\
-15 & a3 & a*b4\\
-16 & a*b4 & R*a1\\
-17 & R*a1 & b6\\
-18 & Bd4 & b*c5\\
-19 & b*c5 & Bb7\\
-20 & Ra5 & Ra8\\
-21 & Bb5 & Qd5\\
-22 & Qa4 & R*a5\\
-23 & Q*a5 & B*c5\\
-24 & Q*c7 & Bf8\\
-25 & Be8 & h6\\
-26 & Q*f7+ & Kh7\\
-27 & Q*f8 & Bc6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * *BQ *}
-{* * * pk}
-{ *b*p* p}
-{* *qP * }
-{ * Bp* *}
-{* * P * }
-{ * * PPP}
-{* * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Feb 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Ian Sneddon (1685)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & c4 & e5\\
-2 & Nc3 & Nf6\\
-3 & Nf3 & Nc6\\
-4 & g3 & d5\\
-5 & c*d5 & N*d5\\
-6 & Bg2 & Be6\\
-7 & 0-0 & Bb4\\
-8 & Ne4 & Qd7\\
-9 & d4 & e*d4\\
-10 & N*d4 & 0-0-0\\
-11 & N*e6 & Q*e6\\
-12 & Qc2 & h6\\
-13 & Rd1 & f5\\
-14 & Nc5 & B*c5\\
-15 & Q*c5 & Nde7\\
-16 & Be3 & R*d1+\\
-17 & R*d1 & Rd8\\
-18 & R*d8+ & K*d8\\
-19 & b3 & a6\\
-20 & Qc3 & Qe5\\
-21 & Q*e5 & N*e5\\
-22 & B*b7 & N7c6\\
-23 & Bf4 & Na5\\
-24 & B*e5 & N*b7\\
-25 & B*g7 & h5\\
-26 & Kg2 & Nd6\\
-27 & f3 & Ne8\\
-28 & Be5 & c6\\
-29 & Kh3 & Ke7\\
-30 & Kh4 & Nf6\\
-31 & B*f6+ & K*f6\\
-32 & K*h5 & c5\\
-33 & g4 & f4\\
-34 & g5+ & Kg7\\
-35 & Kg4&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * k }
-{p* * * *}
-{* p * P }
-{ * * pK*}
-{*P* *P* }
-{P* *P* P}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo B70\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Paul Connally\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & g6\\
-5 & Nc3 & Nf6\\
-6 & Bd3 & Bg7\\
-7 & 0-0 & 0-0\\
-8 & f4 & Nc6\\
-9 & N*c6 & b*c6\\
-10 & Kh1 & Rb8\\
-11 & Qe1 & Ng4\\
-12 & h3 & Nf6\\
-13 & b3 & e5\\
-14 & f*e5 & Nh5\\
-15 & Bb2 & d*e5\\
-16 & Rf3 & a5\\
-17 & g4 & Nf4\\
-18 & Rd1 & Qg5\\
-19 & Bc1 & B*g4\\
-20 & B*f4 & B*f3+\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ r * rk*}
-{* * *pbp}
-{ *p* *p*}
-{p * p q }
-{ * *PB *}
-{*PNB*b*P}
-{P*P* * *}
-{* *RQ *K}
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} ${1 \over 2}\!-\!{1 \over 2}$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Tom Hunt\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Glenrothes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & Nf3 & Nc6\\
-2 & g3 & e5\\
-3 & Nc3 & d5\\
-4 & d3 & Be6\\
-5 & Bg2 & Qd7\\
-6 & Ng5 & d4\\
-7 & Nce4 & Bf5\\
-8 & a3 & Be7\\
-9 & 0-0 & B*g5\\
-10 & N*g5 & f6\\
-11 & Ne4 & Bh3\\
-12 & Nc5 & Qc8\\
-13 & B*h3 & Q*h3\\
-14 & N*b7 & Rb8\\
-15 & Nc5 & h5\\
-16 & e4 & g5\\
-17 & Qf3 & g4\\
-18 & Qf5 & Kf7\\
-19 & Bg5 & Nce7\\
-20 & Qe6+ & Kg6\\
-21 & f4 & e*f4\\
-22 & R*f4 & K*g5\\
-23 & Raf1 & h4\\
-24 & Qf7 & h*g3\\
-25 & Ne6+ & Kh4\\
-26 & h*g3+ & Q*g3+\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ r * *nr}
-{p p nQ* }
-{ * *Np *}
-{* * * * }
-{ * pPRpk}
-{P *P* q }
-{ PP* * *}
-{* * *RK }
-$$\showboard$$
-${1 \over 2}\!-\!{1 \over 2}$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Dan Husband\\
-Glenrothes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & Nc6\\
-3 & d4 & N*d4\\
-4 & N*d4 & c*d4\\
-5 & Q*d4 & e6\\
-6 & Nc3 & Qb6\\
-7 & Q*b6 & a*b6\\
-8 & Bb5 & Bc5\\
-9 & 0-0 & Nf6\\
-10 & Be3 & 0-0\\
-11 & Rfe1 & d6\\
-12 & a4 & Bd7\\
-13 & Bg5 & Bc6\\
-14 & B*f6 & g*f6\\
-15 & Rad1 & Kh8\\
-16 & Rd3 & Rad8\\
-17 & Rh3 & Rg8\\
-18 & Bd3 & Rg7\\
-19 & Nb5 & B*b5\\
-20 & a*b5 & Rdg8\\
-21 & Rg3 & R*g3\\
-22 & h*g3 & h6\\
-23 & Kf1 & Kg7\\
-24 & c3 & d5\\
-25 & e*d5 & e*d5\\
-26 & Ra1 & d4\\
-27 & Ra7 & d*c3\\
-28 & b*c3 & Rd8\\
-29 & Be4 & Rd1+\\
-30 & Ke2 & Rc1\\
-31 & R*b7 & R*c3\\
-32 & Kf1 & Rb3\\
-33 & R*f7+ & Kh8\\
-34 & R*f6 & R*b5\\
-35 & R*h6+ & Kg7\\
-36 & Rg6+ & Kh7\\
-37 & R*b6+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * *k}
-{ R * * *}
-{*rb * * }
-{ * *B* *}
-{* * * P }
-{ * * PP*}
-{* * *K* }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} ${1 \over 2}\!-\!{1 \over 2}$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Keith Chance\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Glenrothes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & Nf3 & Nc6\\
-2 & e4 & e5\\
-3 & d4 & e*d4\\
-4 & N*d4 & d6\\
-5 & N*c6 & b*c6\\
-6 & Bd3 & Bb7\\
-7 & 0-0 & Nf6\\
-8 & Re1 & Be7\\
-9 & e5 & d*e5\\
-10 & R*e5 & 0-0\\
-11 & h3 & Re8\\
-12 & Re1 & Qd7\\
-13 & Bg5 & Rad8\\
-14 & B*f6 & B*f6\\
-15 & R*e8+ & Q*e8\\
-16 & Nc3 & Ba6\\
-17 & Qe1 & Q*e1+\\
-18 & R*e1 & B*d3\\
-19 & c*d3 & g6\\
-20 & Rd1 & Rb8\\
-21 & Ne4 & B*b2\\
-22 & Rb1 & a5\\
-23 & Nc3 & Rb4\\
-24 & Nd1 & Ba3\\
-25 & R*b4 & B*b4\\
-26 & Kf1 & f5\\
-27 & Nb2 & Kf7\\
-28 & Nc4 & Ke6\\
-29 & Ke2 & Kd5\\
-30 & a3 & Bc5\\
-31 & N*a5 & B*a3\\
-32 & Nc4 & Bc5\\
-33 & f3 & h5\\
-34 & g4 & h*g4\\
-35 & h*g4 & f*g4\\
-36 & f*g4 & Ke6\\
-37 & Kf3 & Bd6\\
-38 & Ke4 & g5\\
-39 & Na5 & c5\\
-40 & Nc4 & Bf4\\
-41 & Na5 & Bd2\\
-42 & Nc4 & Bb4\\
-43 & Ne5 & Bd2\\
-44 & Nf3 & Bc1\\
-45 & Ne5 & Bf4\\
-46 & Ng6 & Bg3\\
-47 & Nf8+ & Kd6\\
-48 & Nh7 & Bf4\\
-49 & Kf5 & Kd5\\
-50 & N*g5 & B*g5\\
-51 & K*g5 & Kd4\\
-52 & Kf5 & K*d3\\
-53 & g5 & c4\\
-54 & g6 & c3\\
-55 & g7 & c2\\
-56 & g8=Q & c1=Q\\
-57 & Qd5+ & Ke2\\
-58 & Qg2+ & Kd1\\
-59 & Qg1+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* p * * }
-{ * * * *}
-{* * *K* }
-{ * * * *}
-{* * * * }
-{ * * * *}
-{* qk* Q }
-$$\showboard$$
-${1 \over 2}\!-\!{1 \over 2}$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} ${1 \over 2}\!-\!{1 \over 2}$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Jim King\\
-Glenrothes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & Nc6\\
-3 & d4 & c*d4\\
-4 & N*d4 & d6\\
-5 & Bb5 & Qc7\\
-6 & 0-0 & a6\\
-7 & Ba4 & b5\\
-8 & Bb3 & Nf6\\
-9 & Re1 & e6\\
-10 & Bg5 & Be7\\
-11 & c3 & 0-0\\
-12 & Nd2 & Bb7\\
-13 & Qe2 & Rfe8\\
-14 & Rac1 & d5\\
-15 & Bc2 & Rac8\\
-16 & e5 & Nd7\\
-17 & B*e7 & R*e7\\
-18 & N2f3 & h6\\
-19 & Qd3 & g6\\
-20 & Qe3 & Kg7\\
-21 & Nh4 & Nc*e5\\
-22 & b3 & Q*c3\\
-23 & Q*c3 & R*c3\\
-24 & Bb1 & b4\\
-25 & R*c3 & b*c3\\
-26 & Rc1 & g5\\
-27 & Nhf3 & N*f3+\\
-28 & N*f3 & g4\\
-29 & Nd4 & e5\\
-30 & Nf5+ & Kf6\\
-31 & N*e7 & K*e7\\
-32 & R*c3 & Kd6\\
-33 & h3 & Nf6\\
-34 & h*g4 & N*g4\\
-35 & Bf5 & Nf6\\
-36 & Bc8 & d4\\
-37 & Rc4 & Bd5\\
-38 & Rc2 & a5\\
-39 & f3 & Nh5\\
-40 & Ba6 & Nf4\\
-41 & Rd2 & f6\\
-42 & Bd3 & Bc6\\
-43 & Kf2 & h5\\
-44 & g3 & Ne6\\
-45 & a4 & Be8\\
-46 & Bb5 & Bg6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * * }
-{ * knpb*}
-{pB* p *p}
-{P* p * *}
-{*P* *PP }
-{ * R K *}
-{* * * * }
-$$\showboard$$
-${1 \over 2}\!-\!{1 \over 2}$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} R. Gourley\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Glenrothes Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & Nf3 & Nc6\\
-2 & d4 & e6\\
-3 & c4 & d5\\
-4 & Nc3 & Bb4\\
-5 & e3 & Nf6\\
-6 & Bd2 & 0-0\\
-7 & Ne5 & N*e5\\
-8 & d*e5 & Ne4\\
-9 & N*e4 & d*e4\\
-10 & B*b4 & c5\\
-11 & B*c5 & Qa5+\\
-12 & b4 & Rd8\\
-13 & b*a5 & R*d1+\\
-14 & R*d1 & h6\\
-15 & Rd8+ & Kh7\\
-16 & Be7 & b6\\
-17 & a*b6 & a*b6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bR * *}
-{* * Bppk}
-{ p *p* p}
-{* * P * }
-{ *P*p* *}
-{* * P * }
-{P* * PPP}
-{* * KB*R}
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Grant Glynis\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & Nf6\\
-5 & Nc3 & a6\\
-6 & Bc4 & Nc6\\
-7 & N*c6 & b*c6\\
-8 & Be3 & e6\\
-9 & 0-0 & Be7\\
-10 & Bb3 & 0-0\\
-11 & Qe2 & Bb7\\
-12 & Rad1 & Qc7\\
-13 & f4 & e5\\
-14 & Kh1 & Rfd8\\
-15 & Qf3 & Qc8\\
-16 & f*e5 & d*e5\\
-17 & Qg3 & R*d1\\
-18 & N*d1 & Qg4\\
-19 & Q*e5 & Q*e4\\
-20 & Q*e4 & N*e4\\
-21 & R*f7 & Nd6\\
-22 & R*e7+ & Kh8\\
-23 & Re5 & Rf8\\
-24 & Kg1 & h6\\
-25 & Bc5 & Rf6\\
-26 & c3 & a5\\
-27 & g3 & Ba6\\
-28 & Bc2 & g5\\
-29 & Bd4 & Kg8\\
-30 & R*a5 & Rf1+\\
-31 & Kg2 & Rf8\\
-32 & R*a6 & Nc4\\
-33 & R*c6 & Na5\\
-34 & R*h6 & Rf7\\
-35 & Rh8 mate&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *kR}
-{* * *r* }
-{ * * * *}
-{n * * p }
-{ * B * *}
-{* P * P }
-{PPB* *KP}
-{* *N* * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo B20\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Alistair Welshman\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Bc4 & d6\\
-3 & Nc3 & Nf6\\
-4 & Nf3 & e6\\
-5 & 0-0 & Be7\\
-6 & d3 & 0-0\\
-7 & Bg5 & Nc6\\
-8 & B*f6 & B*f6\\
-9 & Bb5 & Bd7\\
-10 & B*c6 & B*c6\\
-11 & Qe2 & Re8\\
-12 & Rae1 & B*c3\\
-13 & b*c3 & Qa5\\
-14 & e5 & d5\\
-15 & d4 & Bb5\\
-16 & Qe3 & B*f1\\
-17 & R*f1 & c*d4\\
-18 & Q*d4 & Rac8\\
-19 & Qb4 & Q*b4\\
-20 & c*b4 & R*c2\\
-21 & Ra1 & Rec8\\
-22 & Kf1 & Rc1+\\
-23 & R*c1 & R*c1+\\
-24 & Ke2 & Rc2+\\
-25 & Nd2 & R*a2\\
-26 & g4 & Rb2\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *k*}
-{pp* *ppp}
-{ * *p* *}
-{* *pP * }
-{ P * *P*}
-{* * * * }
-{ r NKP P}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C02\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Robin Taylor (1610)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & e6\\
-2 & e4 & d5\\
-3 & e5 & c5\\
-4 & c3 & Nc6\\
-5 & Nf3 & Bd7\\
-6 & Bf4 & c*d4\\
-7 & c*d4 & Bb4+\\
-8 & Bd2 & B*d2+\\
-9 & Q*d2 & Nge7\\
-10 & Nc3 & a6\\
-11 & a3 & Qc7\\
-12 & Bd3 & 0-0-0\\
-13 & 0-0 & Rdf8\\
-14 & b4 & f6\\
-15 & b5 & N*d4\\
-16 & N*d4 & Q*e5\\
-17 & b*a6 & Q*d4\\
-18 & a*b7+ & Kb8\\
-19 & Ne2 & Qa7\\
-20 & Qb4 & Nf5\\
-21 & B*f5 & e*f5\\
-22 & Qd6+ & K*b7\\
-23 & Rab1+ & Kc8\\
-24 & Rfc1+ & Kd8\\
-25 & Rb8+ & Q*b8\\
-26 & Q*b8+ & Ke7\\
-27 & Qb4+ & Kf7\\
-28 & f4 & Rc8\\
-29 & R*c8 & R*c8\\
-30 & Qd6 & Be6\\
-31 & Nd4 & Rc1+\\
-32 & Kf2 & Rd1\\
-33 & Q*e6+ & Kf8\\
-34 & N*f5 & Rd2+\\
-35 & Ke3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{* * * pp}
-{ * *Qp *}
-{* *p*N* }
-{ * * P *}
-{P * K * }
-{ * r *PP}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Mar 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B92\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Steve Smith (1745)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline C vs Stirling A
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & Nf6\\
-5 & Nc3 & a6\\
-6 & Be2 & e5\\
-7 & Nb3 & Be7\\
-8 & 0-0 & 0-0\\
-9 & a4 & Be6\\
-10 & f4 & B*b3\\
-11 & c*b3 & Nc6\\
-12 & Be3 & Qd7\\
-13 & Bc4 & Rad8\\
-14 & f5 & Kh8\\
-15 & Qf3 & Nb4\\
-16 & Rfd1 & Nc2\\
-17 & Rac1 & N*e3\\
-18 & Q*e3 & Qc6\\
-19 & Nd5 & N*d5\\
-20 & B*d5 & Qd7\\
-21 & Qb6 & Rb8\\
-22 & Rc7 & Bd8\\
-23 & R*d7 & B*b6+\\
-24 & Kf1 & f6\\
-25 & B*b7 & Bd4\\
-26 & Rc1 & B*b2\\
-27 & Rcc7 & Rg8\\
-28 & B*a6 & h5\\
-29 & Bc4 & Rgc8\\
-30 & R*g7 & R*c7\\
-31 & R*c7 & Bd4\\
-32 & Rf7 & Rg8\\
-33 & R*f6 & Rg4\\
-34 & Bd5 & Rf4+\\
-35 & Ke1 & Bc3+\\
-36 & Ke2 & Bd4\\
-37 & Rh6+ & Kg7\\
-38 & R*h5 & Rf2+\\
-39 & Kd3 & R*g2\\
-40 & Kc4 & Bg1\\
-41 & h4 & Rc2+\\
-42 & Kd3 & Rg2\\
-43 & Rg5+ & R*g5\\
-44 & h*g5 & Bb6\\
-45 & Kc4 & Bd8\\
-46 & f6+ & Kg6\\
-47 & f7 & Be7\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * bP* }
-{ * p *k*}
-{* *Bp P }
-{P*K*P* *}
-{*P* * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo C10\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Phillips Bill\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e6\\
-2 & d4 & d5\\
-3 & Nc3 & c5\\
-4 & e5 & Nc6\\
-5 & Nf3 & Qb6\\
-6 & Bb5 & Bd7\\
-7 & B*c6 & B*c6\\
-8 & 0-0 & Ne7\\
-9 & d*c5 & Q*c5\\
-10 & Be3 & Qa5\\
-11 & Qd3 & Nf5\\
-12 & Nd4 & N*e3\\
-13 & N*c6 & b*c6\\
-14 & Q*e3 & Bc5\\
-15 & Qd3 & 0-0\\
-16 & a3 & Qc7\\
-17 & b4 & Bb6\\
-18 & Rfe1 & a6\\
-19 & Na4 & Rfb8\\
-20 & N*b6 & R*b6\\
-21 & c4 & d*c4\\
-22 & Q*c4 & Rb5\\
-23 & Qe4 & Rd5\\
-24 & Rad1 & Rad8\\
-25 & R*d5 & c*d5\\
-26 & Qd4 & Rc8\\
-27 & f4 & g6\\
-28 & Re3 & h5\\
-29 & Kf2 & Qc2+\\
-30 & Kf3 & Rc4\\
-31 & Qd3 & Qc1\\
-32 & Qe2 & d4\\
-33 & Rd3 & Rc3\\
-34 & Ke4 & R*a3\\
-35 & R*a3 & Q*a3\\
-36 & Qc4 & Qe3 mate\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *k*}
-{* * *p* }
-{p* *p*p*}
-{* * P *p}
-{ PQpKP *}
-{* * q * }
-{ * * *PP}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo C97\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Andrew Watt\\
-Edinburgh Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & Ba4 & Nf6\\
-5 & 0-0 & Be7\\
-6 & Re1 & b5\\
-7 & Bb3 & d6\\
-8 & c3 & 0-0\\
-9 & h3 & Na5\\
-10 & Bc2 & c5\\
-11 & d4 & Qc7\\
-12 & b4 & c*b4\\
-13 & c*b4 & Nc4\\
-14 & Nbd2 & Bb7\\
-15 & N*c4 & Q*c4\\
-16 & d*e5 & d*e5\\
-17 & a3 & Rac8\\
-18 & Bd3 & Qc3\\
-19 & Bg5 & Rfd8\\
-20 & Re3 & B*e4\\
-21 & Rc1 & Q*c1\\
-22 & Q*c1 & R*c1+\\
-23 & Re1 & R*e1+\\
-24 & N*e1 & B*d3\\
-25 & Nf3 & Be4\\
-26 & N*e5 & Rd1+\\
-27 & Kh2 & Bd6\\
-28 & f4 & h6\\
-29 & Bh4 & g5\\
-30 & Bg3 & B*e5\\
-31 & f*e5 & Nh5\\
-32 & e6 & N*g3\\
-33 & e7 & Nf1+\\
-34 & Kg1 & Bc6\\
-35 & Kf2 & f6\\
-36 & Ke2 & Ra1\\
-37 & Kd3 & Kf7\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * Pk* }
-{p*b* p p}
-{*p* * p }
-{ P * * *}
-{P *K* *P}
-{ * * *P*}
-{r * *n* }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo B50\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Jake Milne\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Edinburgh Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & Bc4 & e6\\
-4 & d3 & Nf6\\
-5 & a3 & Nc6\\
-6 & Nc3 & Be7\\
-7 & 0-0 & 0-0\\
-8 & Be3 & b6\\
-9 & h3 & Bb7\\
-10 & Ne2 & d5\\
-11 & e*d5 & e*d5\\
-12 & Ba2 & Re8\\
-13 & c3 & Qc7\\
-14 & Bf4 & Bd6\\
-15 & B*d6 & Q*d6\\
-16 & d4 & c*d4\\
-17 & Ne*d4 & N*d4\\
-18 & N*d4 & Rad8\\
-19 & Qd2 & Ba6\\
-20 & Qg5 & Re5\\
-21 & Nf5 & R*f5\\
-22 & Q*f5 & B*f1\\
-23 & R*f1 & g6\\
-24 & Qf3 & Kg7\\
-25 & Rd1 & Qe5\\
-26 & g3 & a5\\
-27 & Kg2 & h5\\
-28 & h4 & Rd6\\
-29 & Bb1 & d4\\
-30 & Qd3 & Qd5+\\
-31 & Qf3 & Qb3\\
-32 & Qe2 & Qd5+\\
-33 & f3 & Qe6\\
-34 & Q*e6 & R*e6\\
-35 & Be4 & d*c3\\
-36 & b*c3 & N*e4\\
-37 & f*e4 & R*e4\\
-38 & Rd6 & Re2+\\
-39 & Kf3 & Rb2\\
-40 & Rd3 & a4\\
-41 & Ke4 & f5+\\
-42 & Kd5 & Re2\\
-43 & c4 & Re8\\
-44 & Kc6 & Rc8+\\
-45 & K*b6 & R*c4\\
-46 & Kb5 & Rg4\\
-47 & Rd7+ & Kf6\\
-48 & Ra7 & f4\\
-49 & g*f4 & R*f4\\
-50 & R*a4 & R*a4\\
-51 & K*a4 & g5\\
-52 & h*g5+ & K*g5\\
-53 & Kb5 & h4\\
-54 & a4 & h3\\
-55 & a5 & h2\\
-56 & a6 & h1=Q\\
-57 & Kb6 & Qb1+\\
-58 & Ka7 & Kf5\\
-59 & Ka8 & Qe4+\\
-60 & Kb8 & Qe8+\\
-61 & Kb7 & Qd7+\\
-62 & Kb6 & Qd8+\\
-63 & Kb7 & Qd5+\\
-64 & Kb6 & Qa8\\
-65 & Ka5 & Ke5\\
-66 & Kb6 & Kd5\\
-67 & Ka5 & Kc5\\
-68 & Ka4 & Q*a6+\\
-69 & Kb3 & Qc4+\\
-70 & Ka3 & Qb5\\
-71 & Ka2 & Kc4\\
-72 & Ka1 & Kc3\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * * }
-{ * * * *}
-{*q* * * }
-{ * * * *}
-{* k * * }
-{ * * * *}
-{K * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo C54\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} John Bourke\\
-Edinburgh Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bc4 & Bc5\\
-4 & c3 & Nf6\\
-5 & d4 & e*d4\\
-6 & c*d4 & Bb4+\\
-7 & Bd2 & N*e4\\
-8 & B*b4 & N*b4\\
-9 & B*f7+ & K*f7\\
-10 & Qb3+ & d5\\
-11 & Q*b4 & Re8\\
-12 & 0-0 & Kg8\\
-13 & Nc3 & b6\\
-14 & Rfe1 & Bf5\\
-15 & Qb3 & c6\\
-16 & Rac1 & Qd6\\
-17 & Re3 & N*c3\\
-18 & Q*c3 & R*e3\\
-19 & Q*e3 & Rc8\\
-20 & Re1 & h6\\
-21 & Qe7 & Q*e7\\
-22 & R*e7 & a5\\
-23 & Rb7 & b5\\
-24 & Ne5 & c5\\
-25 & R*b5 & c*d4\\
-26 & f4 & Be4\\
-27 & R*a5 & Rc1+\\
-28 & Kf2 & Rc2+\\
-29 & Kg3 & R*g2+\\
-30 & Kh3 & R*b2\\
-31 & Ra3 & Rd2\\
-32 & Kg3 & Rg2+\\
-33 & Kh3 & Rd2\\
-34 & Kg3 & d3\\
-35 & Nf3 & Rb2\\
-36 & h4 & d2\\
-37 & N*d2 & R*d2\\
-38 & Kg4 & Rd3\\
-39 & R*d3 & B*d3\\
-40 & Kf3 & Bc4\\
-41 & a4 & Kf7\\
-42 & Ke3 & Ke6\\
-43 & Kd4 & Kf5\\
-44 & a5 & K*f4\\
-45 & a6 & B*a6\\
-46 & K*d5 & Kg4\\
-47 & Ke6 & K*h4\\
-48 & Kf7 & g5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * *K* }
-{b* * * p}
-{* * * p }
-{ * * * k}
-{* * * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C70\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} David King\\
-Edinburgh Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & a6\\
-4 & Ba4 & b5\\
-5 & Bb3 & Bc5\\
-6 & 0-0 & Nge7\\
-7 & c3 & d6\\
-8 & d4 & e*d4\\
-9 & c*d4 & Ba7\\
-10 & Be3 & Na5\\
-11 & Bc2 & 0-0\\
-12 & Nbd2 & f5\\
-13 & Bg5 & Qe8\\
-14 & Re1 & h6\\
-15 & B*e7 & Q*e7\\
-16 & e*f5 & Qf6\\
-17 & Be4 & Bb7\\
-18 & B*b7 & N*b7\\
-19 & Qb3+ & Kh8\\
-20 & Qd5 & Rab8\\
-21 & Rac1 & Bb6\\
-22 & g4 & Nd8\\
-23 & Ne4 & Qf7\\
-24 & Q*f7 & R*f7\\
-25 & h3&\\
-\end{tabular}}|
-\end{center}
-At this point the score sheet goes wrong. Black eventually looses on
-time!
-
-\board
-{ r n * k}
-{* p *rp }
-{pb p * p}
-{*p* *P* }
-{ * PN*P*}
-{* * *N*P}
-{PP * P *}
-{* R R K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo D20\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} C. Tait\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Edinburgh Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & d5\\
-2 & c4 & d*c4\\
-3 & e4 & c6\\
-4 & B*c4 & e6\\
-\end{tabular}}|
-\end{center}
-|4\ldots~Nf6; 5.~Nc3, e5; 6.~Be3, e*d4; 7.~B*d4, Bd6; 8.~f3|
-Score: 0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & Nf3 & Bb4+\\
-\end{tabular}}|
-\end{center}
-|5\ldots~Nf6; 6.~Qe2, Bb4; 7.~Bd2, Qb6; 8.~Nc3, 0-0; 9.~0-0, Nbd7|
-Score: 0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Bd2 & B*d2+\\
-7 & Q*d2&\\
-\end{tabular}}|
-\end{center}
-|7.~Nb*d2, Nf6; 8.~0-0, 0-0; 9.~Rc1, Nbd7; 10.~Qe2, c5; 11.~Bd3|
-Score: 0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & Nf6\\
-8 & Nc3 & 0-0\\
-\end{tabular}}|
-\end{center}
-|8\ldots~Nbd7; 9.~0-0, 0-0; 10.~Rad1, Qe7; 11.~Rfe1, e5|
-Score: 0.38
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & 0-0 & b6\\
-10 & e5&\\
-\end{tabular}}|
-\end{center}
-|10.~Rac1, Bb7; 11.~Rfd1, c5; 12.~d*c5, Q*d2; 13.~R*d2, b*c5|
-Score: 0.28
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & Nfd7\\
-\end{tabular}}|
-\end{center}
-|10\ldots~Nd5; 11.~Rfd1, Ba6; 12.~B*a6, N*a6; 13.~Rac1, Nac7; 14.~N*d5, c*d5|
-Score: 0.28
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & Rfd1 & Ba6\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Bb7; 12.~Ne4, c5; 13.~d5, b5; 14.~B*b5, B*d5; 15.~Qe3, Qe7|
-Score: 0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & Bb3&\\
-\end{tabular}}|
-\end{center}
-|12.~B*a6, N*a6; 13.~Rac1, Qe7; 14.~Ne4, c5; 15.~Qe2, Nb4; 16.~d*c5|
-Score: 0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & \ldots & Re8\\
-\end{tabular}}|
-\end{center}
-|12\ldots~h6; 13.~Rac1, Qe7; 14.~Ne4, Rd8; 15.~Nd6, Nf6; 16.~Qe3|
-Score: 0.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Ne4 & c5\\
-\end{tabular}}|
-\end{center}
-|13\ldots~h6; 14.~Nd6, Re7; 15.~Rac1, c5; 16.~Bc2, Nc6; 17.~Be4, Qc7|
-Score: 0.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Nd6&\\
-\end{tabular}}|
-\end{center}
-|14.~d*c5, Bb7; 15.~Qe3, Re7; 16.~Nd6, Bc6; 17.~Ne4, b*c5; 18.~N*c5|
-Score: 1.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Rf8\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Re7; 15.~N*f7, R*f7; 16.~B*e6, c*d4; 17.~Bd5, Nc6; 18.~B*c6|
-Score: 0.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & d5 & b5\\
-\end{tabular}}|
-\end{center}
-|15\ldots~Qe7; 16.~N*f7, c4; 17.~d*e6, N*e5; 18.~N3*e5, c*b3; 19.~Qd5|
-Score: 1.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & d*e6 & f*e6\\
-\end{tabular}}|
-\end{center}
-|16\ldots~c4; 17.~N*f7, Qb6; 18.~e*d7, N*d7; 19.~Q*d7, R*f7; 20.~Qd5|
-Score: 3.75
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & B*e6+ & Kh8\\
-18 & Nf7+&\\
-\end{tabular}}|
-\end{center}
-|18.~Qd5, Qe7; 19.~Nf7, R*f7; 20.~B*f7, h6|
-Score: 4.56
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & R*f7\\
-19 & B*f7 & Nc6\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Bb7; 20.~Ng5, h6; 21.~Bd5|
-Score: 3.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & e6&\\
-\end{tabular}}|
-\end{center}
-|20.~Q*d7, Nd4; 21.~Qg4, Qe7; 22.~N*d4, Q*f7; 23.~e6, Qf6|
-Score: 5.84
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & Qe7\\
-\end{tabular}}|
-\end{center}
-|20\ldots~Nf6; 21.~Rac1, c4; 22.~b3, Q*d2; 23.~R*d2, Rd8; 24.~R*d8, N*d8|
-Score: 3.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & Q*d7 & Bc8\\
-\end{tabular}}|
-\end{center}
-|21\ldots~Bb7; 22.~Q*e7, N*e7; 23.~Rd7, B*f3; 24.~g*f3, Nc6; 25.~e7, N*e7|
-Score: 7.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & Q*c6&\\
-\end{tabular}}|
-\end{center}
-|22.~Q*e7, B*e6; 23.~Q*e6, Nd4; 24.~N*d4, c*d4; 25.~R*d4, a6|
-Score: 17.72
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Rb8\\
-\end{tabular}}|
-\end{center}
-|22\ldots~Bb7; 23.~Qd7, Q*d7; 24.~e*d7, Rd8; 25.~Re1, g6; 26.~Re8, Kg7|
-Score: 10.66
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & Qe8+&\\
-\end{tabular}}|
-\end{center}
-|23.~Q*c5, B*e6; 24.~Q*e7, B*f7; 25.~Q*a7, Rf8; 26.~Q*f7, Rc8|
-Score: 18.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & Q*e8\\
-24 & B*e8 & Bb7\\
-\end{tabular}}|
-\end{center}
-|24\ldots~B*e6; 25.~Bd7, Bg8; 26.~Ne5, g6; 27.~Rac1, c4; 28.~a4, b*a4|
-Score: 7.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Bf7&\\
-\end{tabular}}|
-\end{center}
-|25.~B*b5, B*f3; 26.~g*f3, Kg8; 27.~e7, Kf7; 28.~Rd8, K*e7; 29.~R*b8|
-Score: 12.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & Bc6\\
-\end{tabular}}|
-\end{center}
-|25\ldots~g5; 26.~e7, Kg7; 27.~Rd8, Bc6; 28.~R*b8, K*f7; 29.~Ne5, K*e7|
-Score: 12.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & Rd2&\\
-\end{tabular}}|
-\end{center}
-|26.~Ne5, B*g2; 27.~e7, g6; 28.~K*g2|
-Score: 15.75
-
-\board
-{ r * * k}
-{p * *Bpp}
-{ *b*P* *}
-{*pp * * }
-{ * * * *}
-{* * *N* }
-{PP R PPP}
-{R * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B50\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} J. Comrie\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Dunfermline C vs Alloa
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & Bc4 & e6\\
-4 & Nc3 & Be7\\
-5 & d4 & c*d4\\
-6 & Q*d4 & Nf6\\
-7 & e5 & d*e5\\
-8 & Q*d8+ & B*d8\\
-9 & N*e5 & 0-0\\
-10 & 0-0 & Nbd7\\
-11 & N*d7 & B*d7\\
-12 & Be3 & a6\\
-13 & a4 & Ba5\\
-14 & Ne2 & Bc6\\
-15 & Nd4 & Nd5\\
-16 & N*c6 & b*c6\\
-17 & B*d5 & c*d5\\
-18 & c3 & Rab8\\
-19 & b4 & Bc7\\
-20 & Rfd1 & Rfd8\\
-21 & Rac1 & Bb6\\
-22 & Kf1 & B*e3\\
-23 & f*e3 & f5\\
-24 & Rc2 & g5\\
-25 & Kf2 & Kf7\\
-26 & Kf3 & Rdc8\\
-27 & g4 & R*b4\\
-28 & g*f5 & Kf6\\
-29 & f*e6 & K*e6\\
-30 & Rd4 & R*d4\\
-31 & e*d4 & Rf8+\\
-32 & Kg4 & h6\\
-33 & Re2+ & Kd6\\
-34 & Rb2 & Rc8\\
-35 & Kh5 & R*c3\\
-36 & Rb6+ & Rc6\\
-37 & R*c6+ & K*c6\\
-38 & K*h6 & g4\\
-39 & Kg5 & Kd6\\
-40 & K*g4 & Ke6\\
-41 & Kg5 & Ke7\\
-42 & h4 & Kf7\\
-43 & h5 & Kg7\\
-44 & Kf5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * k }
-{p* * * *}
-{* *p*K*P}
-{P* P * *}
-{* * * * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Apr 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C65\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Scott Hunter\\
-Dunfermline Club Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Nf6\\
-4 & d3 & Bc5\\
-5 & 0-0 & 0-0\\
-6 & Re1 & d5\\
-7 & Be3 & B*e3\\
-8 & e*d5 & Q*d5\\
-9 & B*c6 & Q*c6\\
-10 & R*e3 & e4\\
-11 & d*e4 & N*e4\\
-12 & Nc3 & N*c3\\
-13 & R*c3 & Qd6\\
-14 & Q*d6 & c*d6\\
-15 & Rd1 & Re8\\
-16 & R*d6 & g5\\
-17 & g4 & B*g4\\
-18 & N*g5 & Re1+\\
-19 & Kg2 & Rae8\\
-20 & Rg3 & f5\\
-21 & h3 & Be2\\
-22 & Nf3+ & Kf7\\
-23 & N*e1 & f4\\
-24 & Rf3 & B*f3+\\
-25 & N*f3 & Re2\\
-26 & Rd7+ & Kf8\\
-27 & R*b7 & R*c2\\
-28 & R*a7 & R*b2\\
-29 & Ra4 & Kf7\\
-30 & R*f4+ & Kg6\\
-31 & a4 & h5\\
-32 & h4 & Ra2\\
-33 & Kg3 & Ra3\\
-34 & Rc4 & Rd3\\
-35 & Kf4 & Rd5\\
-36 & Ne5+ & Kf6\\
-37 & Re4 & Ra5\\
-38 & Nd7+ & Kg6\\
-39 & f3 & Rf5+\\
-40 & Ke3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* *N* * }
-{ * * *k*}
-{* * *r*p}
-{P* *R* P}
-{* * KP* }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} May 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B20\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} James Hepburn\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Under 1500 Final
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Bc4 & d6\\
-3 & d3 & e6\\
-4 & Nc3 & Nf6\\
-5 & Nf3 & a6\\
-6 & Bd2 & Nc6\\
-7 & 0-0 & Be7\\
-8 & Re1 & 0-0\\
-9 & a3 & e5\\
-10 & h3 & b5\\
-11 & Bb3 & Bb7\\
-12 & Nd5 & N*d5\\
-13 & B*d5 & Qd7\\
-14 & c3 & Na5\\
-15 & b4 & B*d5\\
-16 & e*d5 & Nb7\\
-17 & Re4 & f5\\
-18 & Re2 & c*b4\\
-19 & a*b4 & Bf6\\
-20 & Qb3 & a5\\
-21 & Rae1 & a*b4\\
-22 & c*b4 & Rfe8\\
-23 & Bg5 & B*g5\\
-24 & N*g5 & Nd8\\
-25 & f4 & Nf7\\
-26 & N*f7 & Q*f7\\
-27 & f*e5 & d*e5\\
-28 & R*e5 & R*e5\\
-29 & R*e5 & Ra1+\\
-30 & Kh2 & g5\\
-31 & d4 & Kg7\\
-32 & Qd3 & Qd7\\
-33 & R*f5 & Qd6+\\
-34 & Re5 & Q*b4\\
-35 & R*g5+ & Kf7\\
-36 & Q*h7+ & Kf6\\
-37 & Qh6+ & Ke7\\
-38 & Rg7+ & Kd8\\
-39 & Qh8+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * k * Q}
-{* * * R }
-{ * * * *}
-{*p*P* * }
-{ q P * *}
-{* * * *P}
-{ * * *PK}
-{r * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} May 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo D02\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} D. Heron (1790)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-East of Scotland Championship
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & Nf3 & Nc6\\
-2 & d4 & d5\\
-3 & Bf4 & Bf5\\
-4 & e3 & a6\\
-5 & c4 & e6\\
-6 & Nc3 & Nf6\\
-7 & a3 & Qd7\\
-8 & b4 & Bd6\\
-9 & B*d6 & Q*d6\\
-10 & Be2 & 0-0\\
-11 & 0-0 & Ne4\\
-12 & N*e4 & B*e4\\
-13 & Nd2 & Bg6\\
-14 & Qb3 & Ne7\\
-15 & c5 & Qd7\\
-16 & a4 & c6\\
-17 & b5 & Nf5\\
-18 & Ra3 & Rfe8\\
-19 & Qb2 & Kh8\\
-20 & Rb3 & Nh6\\
-21 & b*c6 & b*c6\\
-22 & Rb7 & Qc8\\
-23 & Nf3 & Rb8\\
-24 & B*a6 & R*b7\\
-25 & Q*b7 & Q*b7\\
-26 & B*b7 & f6\\
-27 & B*c6 & Rb8\\
-28 & Bb5 & Bc2\\
-29 & Rc1 & Be4\\
-30 & Nd2 & Bg6\\
-31 & Nb1 & Ng8\\
-32 & Nc3 & Ne7\\
-33 & a5 & Nc8\\
-34 & Bd7 & Bf5\\
-35 & N*d5 & e*d5\\
-36 & B*f5 & Ne7\\
-37 & Bd3 & Nc6\\
-38 & Rb1 & R*b1+\\
-39 & B*b1 & N*a5\\
-40 & Ba2&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * k}
-{* * * pp}
-{ * * p *}
-{n Pp* * }
-{ * P * *}
-{* * P * }
-{B* * PPP}
-{* * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} May 1994 \hspace{.3 in} ${1 \over 2}\!-\!{1 \over 2}$\\
-\hline
-Foo A15\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} W. Falconer\\
-East of Scotland Chalengers
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & c4 & Nf6\\
-2 & d3 & e6\\
-3 & Nf3 & d5\\
-4 & c*d5 & N*d5\\
-5 & a3 & Bd6\\
-6 & e3 & Nc6\\
-7 & Nbd2 & 0-0\\
-8 & Nc4 & Bd7\\
-9 & Be2 & b5\\
-10 & N*d6 & c*d6\\
-11 & 0-0 & Rc8\\
-12 & Bd2 & Qb6\\
-13 & Qb3 & Ne5\\
-14 & Rac1 & a6\\
-15 & Rc2 & R*c2\\
-16 & Q*c2 & Rc8\\
-17 & Qb1 & N*f3+\\
-18 & B*f3 & Bc6\\
-19 & Rc1 & Qd8\\
-20 & B*d5 & B*d5\\
-21 & Ba5 & Qd7\\
-22 & R*c8+ & Q*c8\\
-23 & Bb4 & Qc6\\
-24 & f3 & Bb3\\
-25 & Qe1 & Qc2\\
-26 & Qc3 & Q*c3\\
-27 & B*c3 & d5\\
-28 & Kf2 & f6\\
-29 & d4&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * *k*}
-{* * * pp}
-{p* *pp *}
-{*p*p* * }
-{ * P * *}
-{PbB PP* }
-{ P * KPP}
-{* * * * }
-$$\showboard$$
-${1 \over 2}\!-\!{1 \over 2}$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} May 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo A20\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Walter Pearson (1650)\\
-East of Scotland Chalengers
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & c4 & e5\\
-2 & d3 & Ne7\\
-3 & Nf3 & d6\\
-4 & e3 & g6\\
-5 & Be2 & Bg7\\
-6 & 0-0 & 0-0\\
-7 & Nbd2 & Nd7\\
-8 & Nb3 & b6\\
-9 & d4 & e*d4\\
-10 & Nf*d4 & Bb7\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* q rk*}
-{pbpnnpbp}
-{ p p *p*}
-{* * * * }
-{ *PN * *}
-{*N* P * }
-{PP *BPPP}
-{R BQ*RK }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} May 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo D61\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Douglas Heatlie (1650)\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-East of Scotland Chalengers
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & e6\\
-2 & c4 & d5\\
-3 & Nc3 & Nf6\\
-4 & Bg5 & Be7\\
-5 & e3 & Nbd7\\
-6 & Qc2 & 0-0\\
-7 & Nf3 & Re8\\
-8 & h4 & Nb6\\
-9 & b3 & d*c4\\
-10 & b*c4 & Bd7\\
-11 & Bd3 & g6\\
-12 & B*f6 & B*f6\\
-13 & h5 & B*d4\\
-14 & e*d4 & Qf6\\
-15 & h*g6 & f*g6\\
-16 & Ne4 & Qg7\\
-17 & Nc5 & Bc6\\
-18 & Ne5 & Nd5\\
-19 & c*d5 & e*d5\\
-20 & 0-0-0 & R*e5\\
-21 & d*e5 & Q*e5\\
-22 & g3 & Qg5+\\
-23 & Qd2 & Qe5\\
-24 & Nb3 & Ba4\\
-25 & Qh6 & Qc3+\\
-26 & Bc2 & B*b3\\
-27 & Q*h7+ & Kf8\\
-28 & Qh8+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * k Q}
-{ppp * * }
-{ * * *p*}
-{* *p* * }
-{ * * * *}
-{*bq * P }
-{P*B* P *}
-{* KR* *R}
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jul 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B50\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Graham Mill\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Scottish Chess Minor
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & Bc4&\\
-\end{tabular}}|
-\end{center}
-This is an unusual way of opening, but is common at the Minor level.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-3 & \ldots & e6\\
-4 & Nc3 & Nf6\\
-5 & d3&\\
-\end{tabular}}|
-\end{center}
-|5.~0-0|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & Nc6\\
-\end{tabular}}|
-\end{center}
-|5\ldots~d5; 6.~Bb3, d*e4; 7.~N*e4, N*e4; 8.~d*e4, Q*d1+; 9.~K*d1|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Bf4&\\
-\end{tabular}}|
-\end{center}
-|6.~0-0, Be7|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & a6\\
-7 & 0-0 & Be7\\
-\end{tabular}}|
-\end{center}
-|7\ldots~Na5; 8.~Bb3, N*b3; 9.~a*b3, Be7; 10.~Re1, 0-0; 11.~Qd2|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & Re1 & 0-0\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bq rk*}
-{*p* bppp}
-{p*nppn *}
-{* p * * }
-{ *B*PB *}
-{* NP*N* }
-{PPP* PPP}
-{R *QR K }
-$$\showboard$$
- I often find this sort of position when playing the sicilian, where
-white has the e file, pushes his pawn, and gains a winning advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & e5 & d*e5\\
-10 & N*e5 & Bd7\\
-\end{tabular}}|
-\end{center}
-|10\ldots~N*e5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & Ne4&\\
-\end{tabular}}|
-\end{center}
-|11.~Bb3|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & N*e5\\
-12 & B*e5 & Bc6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* q rk*}
-{*p* bppp}
-{p*b*pn *}
-{* p B * }
-{ *B*N* *}
-{* *P* * }
-{PPP* PPP}
-{R *QR K }
-$$\showboard$$
-|12\ldots~N*e4; 13.~d*e4, b5; 14.~Bb3, Bc6; 15.~Qh5, Re8|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & B*f6&\\
-\end{tabular}}|
-\end{center}
-|13.~Qf3, N*e4; 14.~d*e4, b6; 15.~Rad1, Qe8|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & B*e4??\\
-\end{tabular}}|
-\end{center}
-|13\ldots~B*f6; 14.~N*f6+, Q*f6; 15.~c3, b6; 16.~Qe2|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & B*e7 & Q*e7\\
-15 & R*e4 & Rac8\\
-16 & f4&\\
-\end{tabular}}|
-\end{center}
-|16.~a4, Qf6; 17.~c3, Rfd8; 18.~Qe2, h6; 19.~Re1|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & b5\\
-17 & Bb3 & Rc6\\
-\end{tabular}}|
-\end{center}
-|17\ldots~a5|
-and I might be able to stir up a queenside pawn charge.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & c4&\\
-\end{tabular}}|
-\end{center}
-|18.~a4|
-striking at the ambushing pawns.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & Rd8\\
-\end{tabular}}|
-\end{center}
-|18\ldots~Rd6; 19.~c*b5, a*b5; 20.~a4, c4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Qe2&\\
-\end{tabular}}|
-\end{center}
-|19.~c*b5, a*b5; 20.~a4, b*a4; 21.~Ra*a4, Rcd6; 22.~d4, c*d4; 23.~Re*d4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Rd4\\
-\end{tabular}}|
-\end{center}
-|19\ldots~b4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & R*d4&\\
-\end{tabular}}|
-\end{center}
-|20.~c*b5, a*b5; 21.~a4, b*a4; 22.~R*a4, Rd8; 23.~d4, c*d4; 24.~Re*d4|
-All variations just win for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & c*d4\\
-21 & Re1&\\
-\end{tabular}}|
-\end{center}
-|21.~c*b5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Rc5\\
-22 & Qe4&\\
-\end{tabular}}|
-\end{center}
-|22.~Qf2, b*c4; 23.~B*c4, Qd6|
-Blacks score is rapidly going down.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Rh5\\
-\end{tabular}}|
-\end{center}
-|22\ldots~Qd7; 23.~Qa8+, Qc8; 24.~Q*c8+, R*c8; 25.~g3, b*c4; 26.~d*c4|
-a passed pawn for white! Blacks passed pawn will not live long.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & g4&\\
-\end{tabular}}|
-\end{center}
-|23.~f5, Rh6; 24.~c*b5, a*b5|
-Totally won for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & Rh4\\
-24 & Qa8+ & Qf8\\
-25 & Q*f8+ & K*f8\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{* * *ppp}
-{p* *p* *}
-{*p* * * }
-{ *Pp PPr}
-{*B*P* * }
-{PP * * P}
-{* * R K }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & h3?&\\
-\end{tabular}}|
-\end{center}
-|26.~Bd1, Rh3; 27.~Be2, Ke7; 28.~Kg2, Re3; 29.~h3, Kd6|
-Just a piece up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & R*h3\\
-27 & Bc2 & Rg3+\\
-28 & Kf2 & R*g4\\
-29 & Kf3 & h5\\
-\end{tabular}}|
-\end{center}
-|29\ldots~Rh4; 30.~Kg3, Rh6; 31.~Re4, Rg6+; 32.~Kh3, Rh6+; 33.~Kg2|
-And black has drawing chances.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & Re4&\\
-\end{tabular}}|
-\end{center}
-|30.~Re5, g6; 31.~Re4, Rh4; 32.~R*d4, g5|
-Black is only a pawn or so down.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Ke7\\
-31 & R*d4&\\
-\end{tabular}}|
-\end{center}
-|31.~c*b5, a*b5; 32.~Re5, g6; 33.~R*b5, Kd6; 34.~Ke4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & e5\\
-\end{tabular}}|
-\end{center}
-|31\ldots~g5; 32.~c*b5, a*b5; 33.~a4, e5; 34.~Re4, R*f4+; 35.~R*f4, e*f4|
-Blacks is a `pawn` down, with 3 connected passed pawns. Not so bad,
-but still winning for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & Re4 & R*f4+\\
-33 & R*f4 & e*f4\\
-34 & K*f4 & Kf6\\
-35 & c5 & Ke7\\
-36 & b4 & f6\\
-37 & d4 & g5+\\
-38 & Kg3 & h4+\\
-39 & Kg4 & Ke6\\
-40 & c6 & Kd6\\
-41 & d5 & Kc7\\
-42 & Be4 & Kd6\\
-43 & Bg2 & Kc7\\
-44 & Bh3 & Kd6\\
-45 & Kf5 & Kc7\\
-46 & K*f6 & Kb6\\
-47 & K*g5&\\
-\end{tabular}}|
-\end{center}
-I finally resigned here.
-
-\board
-{ * * * *}
-{* * * * }
-{pkP* * *}
-{*p*P* K }
-{ P * * p}
-{* * * *B}
-{P* * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jul 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C67\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} A. McMonigle\\
-Scottish Chess Minor
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Nf6\\
-4 & 0-0 & N*e4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bqkb r}
-{pppp*ppp}
-{ *n* * *}
-{*B* p * }
-{ * *n* *}
-{* * *N* }
-{PPPP PPP}
-{RNBQ*RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & Re1&\\
-\end{tabular}}|
-\end{center}
-|5.~d4, Be7; 6.~d*e5, 0-0; 7.~Be3, a6|
-and white has the edge.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & d5\\
-\end{tabular}}|
-\end{center}
-|5\ldots~Nd6; 6.~B*c6, d*c6; 7.~N*e5, Be6; 8.~Nc3, Be7; 9.~Kh1|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & N*e5&\\
-\end{tabular}}|
-\end{center}
-|6.~d3|
-is a killer move.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & Qf6\\
-7 & Nf3&\\
-\end{tabular}}|
-\end{center}
-|7.~N*c6, b*c6; 8.~Qf3, Qg6; 9.~Bd3, Bf5; 10.~B*e4|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & Be7\\
-8 & d3! & Nd6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*b*k* r}
-{ppp bppp}
-{ *nn q *}
-{*B*p* * }
-{ * * * *}
-{* *P*N* }
-{PPP* PPP}
-{RNBQR K }
-$$\showboard$$
-|8\ldots~N*f2; 9.~K*f2, Bg4; 10.~Nbd2, 0-0; 11.~B*c6, b*c6|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & B*c6+&\\
-\end{tabular}}|
-\end{center}
-|9.~Bg5, Q*b2; 10.~B*c6+, b*c6; 11.~R*e7+, Kf8; 12.~Nbd2, h6|
-White is a couple of pawns up, but the tactices are hairy!
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & b*c6\\
-10 & c3 & 0-0\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*b* rk*}
-{p p bppp}
-{ *pn q *}
-{* *p* * }
-{ * * * *}
-{* PP*N* }
-{PP * PPP}
-{RNBQR K }
-$$\showboard$$
-|10\ldots~h6; 11.~Be3, Nf5; 12.~Bf4, Rb8; 13.~Be5, Qg6|
-\wbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & Bg5 & Qg6\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Q*f3; 12.~Q*f3, B*g5; 13.~b3, Bb7; 14.~Qg3, Bf6|
-Is blacks best line.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & B*e7 & Re8\\
-13 & B*d6 & R*e1+\\
-14 & Q*e1 & Q*d6\\
-15 & Qe8+ & Qf8\\
-16 & Q*f8+&\\
-\end{tabular}}|
-\end{center}
-|16.~Q*c6, Rb8; 17.~Q*c7, R*b2; 18.~Q*a7, Bf5; 19.~Qd4, Qb8; 20.~Nfd2|
-\wdecisive{} The proper continuation, and well winning for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & K*f8\\
-17 & Ne5&\\
-\end{tabular}}|
-\end{center}
-|17.~h3|
-Still a \wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & Bf5\\
-\end{tabular}}|
-\end{center}
-|17\ldots~c5; 18.~h3, f6; 19.~Nf3|
-and white moving the knight was a waste of two tempi.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Rb8\\
-20 & b3 & Bf5\\
-\end{tabular}}|
-\end{center}
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & d4&\\
-\end{tabular}}|
-\end{center}
-|18.~Nd2, Re8; 19.~Ndf3, c5; 20.~g4, f6; 21.~Kg2, f*e5; 22.~g*f5|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & Re8\\
-19 & Nd2 & Re6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * k *}
-{p p *ppp}
-{ *p*r* *}
-{* *pNb* }
-{ * P * *}
-{* P * * }
-{PP N PPP}
-{R * * K }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & Re1&\\
-\end{tabular}}|
-\end{center}
-|20.~g4, B*g4; 21.~N*g4, Rg6; 22.~h3, h5; 23.~f3, h*g4; 24.~h*g4|
-\wdecisive{} what a cou.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & f6\\
-21 & Nd7+ & Ke7\\
-22 & R*e6+ & B*e6\\
-23 & Nc5 & Bf5\\
-24 & f3&\\
-\end{tabular}}|
-\end{center}
-|24.~h3, h6; 25.~Kh2, Kd6; 26.~Nb7+, Ke7; 27.~g4, Bd3|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & Bc8\\
-25 & g4&\\
-\end{tabular}}|
-\end{center}
-|25.~Kf2, Kd6; 26.~f4, g6; 27.~Kf3, h6; 28.~g3, f5|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & Kf7\\
-26 & Kg2&\\
-\end{tabular}}|
-\end{center}
-|26.~Kf2, Ke7; 27.~Ke3, Kd6; 28.~Kd3, h6; 29.~c4, d*c4+; 30.~N*c4+|
-\wdecisive{} with a plan
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & f5\\
-27 & Kg3 & Kg6\\
-28 & Nd3&\\
-\end{tabular}}|
-\end{center}
-|28.~g*f5+, B*f5; 29.~Na6, Kf6; 30.~h3, h6; 31.~N*c7|
-Attacking the weak backwards pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & f*g4\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *b* * *}
-{p p * pp}
-{ *p* *k*}
-{* *p* * }
-{ * P *p*}
-{* PN*PK }
-{PP N * P}
-{* * * * }
-$$\showboard$$
-|28\ldots~Kf6; 29.~g*f5, K*f5; 30.~Ne5, Bb7|
-Score: 3.19
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & Ne5+ & Kf6\\
-30 & N*c6 & a6\\
-31 & f*g4 & g5\\
-32 & h4&\\
-\end{tabular}}|
-\end{center}
-|32.~Nb3, Bb7; 33.~Nb8, h6; 34.~Nc5, Bc8; 35.~b4, Kg6; 36.~Nb*a6|
-Successfully ganing up on the `a` pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & g*h4+\\
-33 & K*h4 & Bd7\\
-34 & g5+&\\
-\end{tabular}}|
-\end{center}
-|34.~Nb4, c6; 35.~N*a6, h6; 36.~Kh5, Kg7|
-Totally won.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & \ldots & Kg7\\
-35 & Ne5&\\
-\end{tabular}}|
-\end{center}
-|35.~Nb4, c6; 36.~N*a6, h6; 37.~Nc5, Bf5; 38.~a4, Kg6; 39.~g*h6|
-And either the 'a' or 'b' pawn will queen.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-35 & \ldots & Be8\\
-36 & Nb3 & Bg6\\
-\end{tabular}}|
-\end{center}
-At this point black resigned.
-
-\board
-{ * * * *}
-{* p * kp}
-{p* * *b*}
-{* *pN P }
-{ * P * K}
-{*NP * * }
-{PP * * *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jul 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B86\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Brian Swanson\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Scottish Chess Minor
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & Nf6\\
-5 & Nc3 & a6\\
-6 & Bc4 & e6\\
-\end{tabular}}|
-\end{center}
-|6\ldots~e5; 7.~Nf3, Qc7; 8.~Bd5, Bg4; 9.~0-0, N*d5; 10.~N*d5|
-Is another line of the Sicilian.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & Bg5&\\
-\end{tabular}}|
-\end{center}
-|7.~0-0, Qc7; 8.~Qd3, e5; 9.~Nf3, Bg4; 10.~Bg5|
-\wbetter{},0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & Be7\\
-8 & f4 & b5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{rnbqk* r}
-{* * bppp}
-{p* ppn *}
-{*p* * B }
-{ *BNPP *}
-{* N * * }
-{PPP* *PP}
-{R *QK *R}
-$$\showboard$$
-|8\ldots~d5; 9.~B*f6, B*f6; 10.~e*d5, Qc7; 11.~Be2, Q*f4|
-\bupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & Bd3?&\\
-\end{tabular}}|
-\end{center}
-|9.~Bb3, h6; 10.~B*f6, B*f6; 11.~0-0, B*d4+; 12.~Q*d4|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & Bb7\\
-10 & b4&\\
-\end{tabular}}|
-\end{center}
-|10.~Qf3, Qb6; 11.~Nde2, d5|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & Nc6\\
-11 & Nf3?&\\
-\end{tabular}}|
-\end{center}
-|11.~N*c6, B*c6; 12.~0-0, d5; 13.~e*d5, N*d5; 14.~B*e7, Q*e7|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & N*b4\\
-12 & Qe2 & 0-0\\
-13 & 0-0&\\
-\end{tabular}}|
-\end{center}
-|13.~a3, Qc7; 14.~Qd2|
-\bupperhand{},by a pawn or so.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Rc8\\
-\end{tabular}}|
-\end{center}
-|13\ldots~Qc7; 14.~Qd2, d5; 15.~B*f6, B*f6|
-\bupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Nd1 & d5\\
-15 & e*d5&\\
-\end{tabular}}|
-\end{center}
-|15.~e5, Ne4; 16.~B*e7, Q*e7; 17.~B*e4, d*e4; 18.~Nd4|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & \ldots & B*d5\\
-16 & Ne3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ *rq rk*}
-{* * bppp}
-{p* *pn *}
-{*p*b* B }
-{ n * P *}
-{* *BNN* }
-{P*P*Q*PP}
-{R * *RK }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & Bc5\\
-\end{tabular}}|
-\end{center}
-|16\ldots~B*a2; 17.~Rad1, N*d3; 18.~c*d3, Nd5|
-\bdecisive{},2+ pawns up, but getting a bit tactical.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & Kh1 & B*e3\\
-18 & Q*e3 & N*c2\\
-19 & B*c2 & R*c2\\
-20 & a4 & Ra2\\
-\end{tabular}}|
-\end{center}
-|20\ldots~h6|
-\bdecisive{}, just winning.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & R*a2 & B*a2\\
-22 & a*b5&\\
-\end{tabular}}|
-\end{center}
-|22.~Ra1, Bd5; 23.~a*b5, a*b5; 24.~Rb1, Ng4|
-\bdecisive{}, to or so pawns up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & Bc4\\
-\end{tabular}}|
-\end{center}
-|22\ldots~a*b5; 23.~Ra1, Bd5; 24.~Ra7, h6|
-\bupperhand{}, even with the rook on blacks 2nd. This rook should be
-able to get to 'b' pawn, though.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & Rc1 & B*b5\\
-24 & Ne5&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * q rk*}
-{* * *ppp}
-{p* *pn *}
-{*b* N B }
-{ * * P *}
-{* * Q * }
-{ * * *PP}
-{* R * *K}
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & Nd5?\\
-\end{tabular}}|
-\end{center}
-A bit wild.
-|24\ldots~h6; 25.~B*f6, Q*f6; 26.~Rc7, a5; 27.~Qc5, Be2; 28.~Q*a5, Q*f4|
-\bdecisive{}, almost three pawns up, and threating the forced queen
-exchage on f1.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Qg3&\\
-\end{tabular}}|
-\end{center}
-Alarms bells !!!, the bishop is going to h6. Remember.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & f6\\
-\end{tabular}}|
-\end{center}
-I though I was going to win a piece for a pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & Bh6 & g6??\\
-\end{tabular}}|
-\end{center}
-|26\ldots~Qe7; 27.~Nc6, Qc7; 28.~Rc2, Ba4; 29.~Rc4, Nb6|
-Black still leads (two pawns up), but the tactics are hairy.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & B*f8?&\\
-\end{tabular}}|
-\end{center}
-|27.~N*g6, Kf7; 28.~N*f8, Ke8; 29.~N*e6, Qd7; 30.~Re1|
-\wdecisive{},5.47
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & \ldots & f*e5\\
-\end{tabular}}|
-\end{center}
-|27\ldots~K*f8; 28.~Qh4, a5; 29.~g3, a4|
-\bbetter{}, but critically depending on the weak a pawn.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & Bh6 & e*f4\\
-29 & Qe1&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * q *k*}
-{* * * *p}
-{p* *p*pB}
-{*b*n* * }
-{ * * p *}
-{* * * * }
-{ * * *PP}
-{* R Q *K}
-$$\showboard$$
-|29.~B*f4, N*f4; 30.~Q*f4, a5; 31.~h3, g5; 32.~Qe5|
-\wupperhand{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & g5??\\
-\end{tabular}}|
-\end{center}
-My major blunder.
-|29\ldots~Kf7; 30.~g3, f3; 31.~Qf2, Qf6|
-\bupperhand{}, but tricky.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & Q*e6+ & Kh8\\
-31 & Rc8&\\
-\end{tabular}}|
-\end{center}
-Mate is in a couple of moves.
-
-\board
-{ *Rq * k}
-{* * * *p}
-{p* *Q* B}
-{*b*n* p }
-{ * * p *}
-{* * * * }
-{ * * *PP}
-{* * * *K}
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jul 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B54\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Brian Thomson\\
-Scottish Chess Minor
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & d4 & c*d4\\
-4 & N*d4 & Nc6\\
-5 & Bb5 & Bd7\\
-6 & Nc3&\\
-\end{tabular}}|
-\end{center}
-|6.~N*c6|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & Nf6\\
-\end{tabular}}|
-\end{center}
-|6\ldots~N*d4; 7.~Q*d4, B*b5; 8.~N*b5, Qa5; 9.~Nc3, e5; 10.~Qd5, Qc7|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & Bg5 & h6\\
-\end{tabular}}|
-\end{center}
-|7\ldots~N*d4; 8.~B*d7, N*d7; 9.~Q*d4, e5; 10.~Qd2, Be7; 11.~Be3|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & Bh4&\\
-\end{tabular}}|
-\end{center}
-|8.~B*f6, e*f6; 9.~f4, N*d4; 10.~B*d7, Q*d7; 11.~Q*d4, Be7|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & Qb6\\
-\end{tabular}}|
-\end{center}
-|8\ldots~g5; 9.~Bg3, N*d4; 10.~Q*d4, Bg7; 11.~0-0, 0-0|
-Score: -0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & N*c6&\\
-\end{tabular}}|
-\end{center}
-|9.~B*f6, g*f6; 10.~B*c6, b*c6; 11.~Na4, Qa5; 12.~c3, Bg7|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & b*c6\\
-10 & B*f6&\\
-\end{tabular}}|
-\end{center}
-|10.~Bd3, Q*b2; 11.~B*f6, e*f6; 12.~Na4, Qd4; 13.~c3|
-Score: -1.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & \ldots & e*f6\\
-11 & Ba4&\\
-\end{tabular}}|
-\end{center}
-|11.~Bd3, Q*b2; 12.~Na4, Qa3; 13.~c3, Be6; 14.~Qc2, 0-0-0|
-Score: -1.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & \ldots & Qc7\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Q*b2; 12.~Kd2, Qb6; 13.~Qf3, Be6; 14.~e5, Qd4|
-Score: -1.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & 0-0 & Be7\\
-13 & Re1&\\
-\end{tabular}}|
-\end{center}
-|13.~Rb1, 0-0; 14.~Qd3, Be6; 15.~f4, f5|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & 0-0\\
-14 & Qd4&\\
-\end{tabular}}|
-\end{center}
-|14.~Bb3|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Be6\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Rab8; 15.~b3, Be6; 16.~Rad1, Rb6; 17.~f4, Re8|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & Nd1&\\
-\end{tabular}}|
-\end{center}
-|15.~f4, Rab8; 16.~Bb3, f5; 17.~e5, B*b3; 18.~a*b3|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & \ldots & Qa5\\
-\end{tabular}}|
-\end{center}
-|15\ldots~Rab8; 16.~Qc3, Rb6; 17.~Ne3, Qb7; 18.~f4|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & Nc3 & Qc7\\
-\end{tabular}}|
-\end{center}
-|16\ldots~Rab8; 17.~b3, Qc7; 18.~Rad1, Rfe8; 19.~f4, Rb6|
-Score: -0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & Ne2&\\
-\end{tabular}}|
-\end{center}
-|17.~Nd1|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & Rab8\\
-\end{tabular}}|
-\end{center}
-|17\ldots~Rfb8; 18.~Nf4, Rb6; 19.~N*e6, f*e6; 20.~Bb3, d5; 21.~e*d5, c*d5|
-Score: -0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & b3&\\
-\end{tabular}}|
-\end{center}
-|18.~Nf4|
-Score: -0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & a5\\
-\end{tabular}}|
-\end{center}
-|18\ldots~f5; 19.~Rad1, f*e4; 20.~Q*e4, Bd5; 21.~Qd4|
-Score: -0.41
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & Nf4&\\
-\end{tabular}}|
-\end{center}
-|19.~Qc3, c5; 20.~Nd4, Rb7; 21.~Nc6, Ra8; 22.~Rad1|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & Bd7\\
-\end{tabular}}|
-\end{center}
-|19\ldots~Rfc8; 20.~c4, Rd8; 21.~f3, Rd7|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & Qd2&\\
-\end{tabular}}|
-\end{center}
-|20.~Qc3, Rb7; 21.~a3, Re8; 22.~Nd3, Reb8; 23.~f4|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-20 & \ldots & g5\\
-\end{tabular}}|
-\end{center}
-|20\ldots~Rfe8|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & Nh5&\\
-\end{tabular}}|
-\end{center}
-|21.~Ne2, Rb7; 22.~Nd4, Re8; 23.~Qc3, c5; 24.~B*d7, Q*d7|
-Score: 0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & \ldots & Qb6\\
-\end{tabular}}|
-\end{center}
-|21\ldots~Bg4; 22.~Ng3, Rfe8; 23.~c4, Bf8; 24.~f3, Be6|
-Score: 0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & Qc3 & Qd8\\
-23 & Rad1&\\
-\end{tabular}}|
-\end{center}
-|23.~a3, Rc8; 24.~Ng3, Re8; 25.~Rad1, Bg4; 26.~B*c6, B*d1; 27.~R*d1|
-Score: 0.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & \ldots & Bg4\\
-24 & Ng3 & B*d1\\
-25 & R*d1 & c5\\
-26 & Nh5&\\
-\end{tabular}}|
-\end{center}
-|26.~Nf5, h5; 27.~a3, Rb7; 28.~Qd3, Rb6; 29.~Qd2|
-Score: -0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & Kh8\\
-\end{tabular}}|
-\end{center}
-|26\ldots~Rb4; 27.~Ng3, Qa8; 28.~a3, Rb6|
-Score: -0.75
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & Rd3&\\
-\end{tabular}}|
-\end{center}
-|27.~Ng3, Rg8; 28.~Nf5, Bf8; 29.~Qd2, Qc7|
-Score: -0.34
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & \ldots & Rg8\\
-\end{tabular}}|
-\end{center}
-|27\ldots~Rb4; 28.~Ng3, c4; 29.~Rd5, c*b3; 30.~c*b3, Qb6; 31.~Bc6|
-Score: -0.88
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & Rf3&\\
-\end{tabular}}|
-\end{center}
-|28.~Ng3, Rg6; 29.~Nf5, Rb4; 30.~Bc6, Qc7; 31.~a3, Rb6|
-Score: -0.81
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & Rg6\\
-\end{tabular}}|
-\end{center}
-|28\ldots~d5; 29.~e*d5, Q*d5; 30.~Re3, Qd1; 31.~Re1, Qd8; 32.~Ng3|
-Score: -1.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & Bc6&\\
-\end{tabular}}|
-\end{center}
-|29.~Rd3, Rb4; 30.~f3, c4; 31.~Re3, c*b3; 32.~c*b3|
-Score: -0.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & Kg8\\
-30 & Bd5&\\
-\end{tabular}}|
-\end{center}
-|30.~Ng3, Qc7; 31.~Nf5, Bf8; 32.~Bd5, Bg7; 33.~Rd3, Bh8|
-Score: -1.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & a4\\
-31 & Qc4 & Qe8\\
-32 & Qd3&\\
-\end{tabular}}|
-\end{center}
-|32.~Qc3, a*b3; 33.~c*b3, Qd8; 34.~a4, Rb6; 35.~Rd3|
-Score: -0.78
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & Rb4\\
-\end{tabular}}|
-\end{center}
-|32\ldots~Qb5; 33.~Ng3, a*b3; 34.~Nf5, Bf8|
-Score: -0.97
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & e5&\\
-\end{tabular}}|
-\end{center}
-|33.~c3, Rb6; 34.~e5, Kf8; 35.~N*f6|
-Score: -0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & d*e5\\
-\end{tabular}}|
-\end{center}
-|33\ldots~Kh8; 34.~c3, Rh4; 35.~e*f6, Bd8; 36.~Re3, Qd7|
-Score: -0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & Q*g6+&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * *q*k*}
-{* * bp* }
-{ * * pQp}
-{* pBp pN}
-{pr * * *}
-{*P* *R* }
-{P*P* PPP}
-{* * * K }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Jul 1994 \hspace{.3 in} ${1 \over 2}\!-\!{1 \over 2}$\\
-\hline
-Foo B50\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} M. Navmann\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Scottish Chess Minor
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & c5\\
-2 & Nf3 & d6\\
-3 & Bc4 & e6\\
-\end{tabular}}|
-\end{center}
-|3\ldots~Nc6|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-4 & Nc3 & a6\\
-\end{tabular}}|
-\end{center}
-|4\ldots~Nf6; 5.~d3, d5; 6.~Bb3, d*e4; 7.~N*e4, N*e4; 8.~d*e4, Q*d1|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & a4&\\
-\end{tabular}}|
-\end{center}
-|5.~d3, Nc6; 6.~Bf4, Na5; 7.~e5, d5; 8.~Bg5, Ne7|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-5 & \ldots & Nf6\\
-6 & d3&\\
-\end{tabular}}|
-\end{center}
-|6.~d4|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & Be7\\
-\end{tabular}}|
-\end{center}
-|6\ldots~d5; 7.~Ba2, d*e4; 8.~N*e4, N*e4; 9.~d*e4, Q*d1; 10.~K*d1|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & b3&\\
-\end{tabular}}|
-\end{center}
-|7.~Bg5, h6; 8.~Bh4, d5; 9.~e*d5, N*d5; 10.~N*d5, e*d5|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-7 & \ldots & 0-0\\
-\end{tabular}}|
-\end{center}
-|7\ldots~d5; 8.~e*d5, e*d5; 9.~N*d5, N*d5; 10.~0-0, 0-0|
-Score: -1.59
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & d4&\\
-\end{tabular}}|
-\end{center}
-|8.~Qe2, Nc6; 9.~0-0, d5; 10.~e*d5, e*d5|
-Score: 0.06
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & c*d4\\
-\end{tabular}}|
-\end{center}
-|8\ldots~d5; 9.~e*d5, e*d5; 10.~Bd3, b6; 11.~0-0, Nc6|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & N*d4&\\
-\end{tabular}}|
-\end{center}
-|9.~Q*d4|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-9 & \ldots & d5\\
-\end{tabular}}|
-\end{center}
-|9\ldots~Qa5; 10.~Qd2, b5; 11.~Bd3, e5; 12.~Nf3, Bg4|
-Score: -0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-10 & e*d5 & e*d5\\
-11 & Bd3 & Re8\\
-\end{tabular}}|
-\end{center}
-|11\ldots~Nc6; 12.~Nce2, N*d4; 13.~N*d4, Bb4; 14.~Bd2, Qa5; 15.~Ne2, B*d2|
-Score: -0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-12 & 0-0 & Bb4\\
-\end{tabular}}|
-\end{center}
-|12\ldots~Nc6; 13.~Nce2, Bg4; 14.~f3, Bc5; 15.~c3|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & Bd2&\\
-\end{tabular}}|
-\end{center}
-|13.~Nce2, Nc6; 14.~Bb2, Bg4; 15.~f3, N*d4; 16.~N*d4|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Qa5\\
-\end{tabular}}|
-\end{center}
-|13\ldots~b6|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Nb1 & Kh8\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Nc6; 15.~B*b4, N*b4; 16.~Re1, Bg4; 17.~Be2, Rad8|
-Score: -0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & B*b4 & Q*b4\\
-16 & c3 & Qe7\\
-\end{tabular}}|
-\end{center}
-|16\ldots~Qc5; 17.~Re1, R*e1; 18.~Q*e1, Nc6; 19.~Nf5, b6|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & Nd2&\\
-\end{tabular}}|
-\end{center}
-|17.~Ra2, Qc7; 18.~Re2, R*e2; 19.~Q*e2, Nc6; 20.~Rd1, N*d4; 21.~c*d4|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-17 & \ldots & Bg4\\
-\end{tabular}}|
-\end{center}
-|17\ldots~Qc5; 18.~Qc2, Nc6; 19.~N2f3, N*d4; 20.~N*d4, Ne4|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & Qc1&\\
-\end{tabular}}|
-\end{center}
-|18.~N2f3, Qc7; 19.~Qd2, Nc6; 20.~Rfe1, Rad8; 21.~R*e8, R*e8|
-Score: 0.00
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & Nc6\\
-19 & N*c6&\\
-\end{tabular}}|
-\end{center}
-|19.~Re1, Ne5; 20.~Qc2, Qc7; 21.~c4, N*d3; 22.~Q*d3|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & \ldots & b*c6\\
-20 & Re1 & Qd7\\
-\end{tabular}}|
-\end{center}
-|20\ldots~Qb7; 21.~Qc2, Rad8; 22.~h3, Bh5; 23.~c4, R*e1; 24.~R*e1|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & R*e8+ & Q*e8\\
-22 & Qe1&\\
-\end{tabular}}|
-\end{center}
-|22.~Qc2, c5; 23.~h3, Bh5; 24.~b4, c4; 25.~Bf5|
-Score: 0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-22 & \ldots & a5\\
-\end{tabular}}|
-\end{center}
-|22\ldots~Qd7|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-23 & h3 & Bd7\\
-\end{tabular}}|
-\end{center}
-|23\ldots~Bh5; 24.~g4, Bg6; 25.~B*g6, h*g6; 26.~Rd1, Rd8; 27.~Q*e8, N*e8|
-Score: 0.19
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & Nf3&\\
-\end{tabular}}|
-\end{center}
-|24.~Rd1, Rb8; 25.~c4, h6; 26.~Q*e8, R*e8; 27.~c*d5, c*d5|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & Q*e1+\\
-\end{tabular}}|
-\end{center}
-|24\ldots~Rb8; 25.~Bc2, c5; 26.~c4, Q*e1; 27.~R*e1, d4|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & R*e1 & Re8\\
-\end{tabular}}|
-\end{center}
-|25\ldots~Rb8; 26.~Bc2, g6; 27.~Re7, Kg7; 28.~Ne5, Be8|
-Score: 0.44
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & R*e8+&\\
-\end{tabular}}|
-\end{center}
-|26.~Ne5|
-Score: 0.53
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-26 & \ldots & B*e8\\
-27 & c4&\\
-\end{tabular}}|
-\end{center}
-|27.~g3|
-Score: 0.28
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & \ldots & h6\\
-\end{tabular}}|
-\end{center}
-|27\ldots~g6; 28.~g3, Kg7; 29.~Kg2, h6; 30.~Ne5, d4; 31.~f4, c5|
-Score: 0.13
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & Kf1&\\
-\end{tabular}}|
-\end{center}
-|28.~g3, g6; 29.~Ne5, Kg7; 30.~Kg2, d4; 31.~Kf3, c5|
-Score: 0.25
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-28 & \ldots & g6\\
-29 & Ke2&\\
-\end{tabular}}|
-\end{center}
-|29.~c*d5|
-Score: 0.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-29 & \ldots & Kg7\\
-30 & Ke3&\\
-\end{tabular}}|
-\end{center}
-|30.~Ne5|
-Score: 0.31
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & Nd7\\
-\end{tabular}}|
-\end{center}
-|30\ldots~c5; 31.~Ne5, d4; 32.~Kd2, Bd7; 33.~N*d7, N*d7; 34.~Be4, Ne5|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & Kd4&\\
-\end{tabular}}|
-\end{center}
-|31.~c*d5, c*d5; 32.~Kd4, Nf6; 33.~Ne5, Kf8; 34.~g3, Kg7; 35.~f4|
-Score: 0.59
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & \ldots & d*c4\\
-32 & B*c4&\\
-\end{tabular}}|
-\end{center}
-|32.~K*c4, f5; 33.~Kc3, Bf7; 34.~g3, Nc5; 35.~Bc2, Bd5|
-Score: 0.16
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-32 & \ldots & Kf6\\
-\end{tabular}}|
-\end{center}
-|32\ldots~f5; 33.~Ke3, Bf7; 34.~B*f7, K*f7; 35.~Kf4, Ke6; 36.~Nd4, Kd5|
-Score: -0.03
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & Bd3&\\
-\end{tabular}}|
-\end{center}
-|33.~Nd2, Nb6; 34.~Ne4, Ke7; 35.~Bd3, f5; 36.~Nc5, Bf7|
-Score: 0.22
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-33 & \ldots & Ke6\\
-34 & Kc4&\\
-\end{tabular}}|
-\end{center}
-|34.~Ke3, Nb6; 35.~Nd4, Kd6; 36.~Kf3, Ke5; 37.~Ne2, f5|
-Score: 0.09
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-34 & \ldots & f6\\
-\end{tabular}}|
-\end{center}
-|34\ldots~f5; 35.~g4, f*g4; 36.~h*g4, Ne5; 37.~N*e5, K*e5; 38.~Kc3|
-Score: -0.13
-
-\board
-{ * *b* *}
-{* *n* * }
-{ *p*kppp}
-{p * * * }
-{P*K* * *}
-{*P*B*N*P}
-{ * * PP*}
-{* * * * }
-$$\showboard$$
-${1 \over 2}\!-\!{1 \over 2}$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Sep 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo B01\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Stewart McKay\\
-Grangemouth Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & d5\\
-2 & e*d5 & Nf6\\
-3 & Bb5+ & Bd7\\
-4 & B*d7+ & Q*d7\\
-5 & Nf3 & N*d5\\
-6 & 0-0 & Nc6\\
-7 & Re1 & e6\\
-8 & d3 & g6\\
-9 & Bg5 & Bg7\\
-10 & c3 & Nf6\\
-11 & d4 & h6\\
-12 & B*f6 & B*f6\\
-13 & d5 & Rd8\\
-14 & Qd2 & Q*d5\\
-15 & Qf4 & Bg7\\
-16 & Q*c7 & 0-0\\
-17 & Qf4 & g5\\
-18 & Qd2 & Qf5\\
-19 & Qe3 & Rd3\\
-20 & Qe4 & Q*e4\\
-21 & R*e4 & Rd1+\\
-22 & Re1 & Rfd8\\
-23 & h3 & Ne5\\
-24 & Na3 & N*f3+\\
-25 & g*f3 & R1d3\\
-26 & Kg2 & a6\\
-27 & Rac1 & b5\\
-28 & Re2 & Bf8\\
-29 & Nc2 & Bc5\\
-30 & Ne1 & Rd2\\
-31 & R*d2 & R*d2\\
-32 & Rc2 & Rd1\\
-33 & Kf1 & Be7\\
-34 & a3 & Bf6\\
-35 & Ke2 & Rd5\\
-36 & Nd3 & Rd8\\
-37 & Kd2 & Rc8\\
-38 & Ke3 & Bg7\\
-39 & f4 & Bf6\\
-40 & Ne5 & Rc5\\
-41 & Nd7 & g*f4+\\
-42 & K*f4 & Bg5+\\
-43 & Ke4 & f5+\\
-44 & Kf3 & Rd5\\
-45 & Nb8 & Rd6\\
-46 & c4 & b*c4\\
-47 & R*c4 & Rb6\\
-48 & Rb4 & Rd6\\
-49 & Ra4 & Rb6\\
-50 & N*a6 & R*b2\\
-51 & Nc7 & Rb3+\\
-52 & Kg2 & Be7\\
-53 & N*e6 & R*a3\\
-54 & R*a3 & B*a3\\
-55 & Kg3 & Kf7\\
-56 & Nd4 & Kg6\\
-57 & Kf4 & Kh5\\
-58 & N*f5&\\
-\end{tabular}}|
-\end{center}
-And White won by queening the f pawn.
-
-\board
-{ * * * *}
-{* * * * }
-{ * * * p}
-{* * *N*k}
-{ * * K *}
-{b * * *P}
-{ * * P *}
-{* * * * }
-$$\showboard$$
-$1\!-\!0$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Sep 1994 \hspace{.3 in} $0\!-\!1$\\
-\hline
-Foo D02\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Harward Shaughan\\
-\rule[-1pt]{11pt}{11pt} Andy Gill\\
-Grangemouth Minor Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & d4 & e6\\
-2 & Bf4 & d5\\
-3 & Nf3 & Nf6\\
-4 & Nbd2 & c5\\
-5 & e3 & a6\\
-6 & c4 & Nc6\\
-7 & Ne5 & c*d4\\
-8 & N*c6 & b*c6\\
-9 & e*d4 & Qb6\\
-10 & c*d5 & c*d5\\
-11 & Qc2 & Bd7\\
-12 & Be3 & Bb4\\
-13 & a3 & B*d2+\\
-14 & Q*d2 & 0-0\\
-15 & Bd3 & Rfc8\\
-16 & 0-0 & Bb5\\
-17 & b3 & Rc6\\
-18 & f3 & Rac8\\
-19 & Rfc1 & B*d3\\
-20 & R*c6 & R*c6\\
-21 & Q*d3 & Qc7\\
-22 & Bd2 & h6\\
-23 & Rb1 & Nh5\\
-24 & b4 & Nf4\\
-25 & B*f4 & Q*f4\\
-26 & b5 & Rc1+\\
-27 & R*c1 & Q*c1+\\
-28 & Kf2 & Qb2+\\
-29 & Kg3 & Q*b5\\
-30 & Q*b5 & a*b5\\
-31 & Kf2 & Kf8\\
-32 & Ke3 & Ke7\\
-33 & Kd3 & Kd6\\
-34 & f4 & f6\\
-35 & h4 & e5\\
-36 & d*e5+ & f*e5\\
-37 & f5 & e4+\\
-38 & Kd4 & Ke7\\
-39 & g4 & Kf6\\
-40 & Ke3 & g6\\
-41 & g5+ & h*g5\\
-42 & h*g5+ & K*f5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * * * *}
-{* * * * }
-{ * * *p*}
-{*p*p*kP }
-{ * *p* *}
-{P * K * }
-{ * * * *}
-{* * * * }
-$$\showboard$$
-$0\!-\!1$
-\clearpage
-\begin{center}
-\fbox{\fbox{\large\begin{tabular}{l}
-Game  \hspace{.3 in} Sep 1994 \hspace{.3 in} $1\!-\!0$\\
-\hline
-Foo C65\\
-\raisebox{2.5pt}[11pt]{\framebox[11pt]{\rule{0pt}{4.25pt}}} Andy Gill\\
-\rule[-1pt]{11pt}{11pt} Lindsay Ridland\\
-Grangemouth Minor Congress
-\end{tabular}}}
-\end{center}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-1 & e4 & e5\\
-2 & Nf3 & Nc6\\
-3 & Bb5 & Nf6\\
-4 & 0-0 & Bc5\\
-5 & Re1 & a6\\
-\end{tabular}}|
-\end{center}
-|5\ldots~Ng4; 6.~Re2, 0-0; 7.~d3, Nd4; 8.~N*d4, B*d4; 9.~Nd2|
-\wbetter{},0.13 but a bit messy for white.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & Ba4&\\
-\end{tabular}}|
-\end{center}
-|6.~B*c6, d*c6; 7.~h3, Qe7; 8.~d3, 0-0; 9.~Bg5, h6; 10.~Bh4|
-=, taking the exchange way out.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-6 & \ldots & b5\\
-7 & Bb3 & d6\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*bqk* r}
-{* p *ppp}
-{p*np n *}
-{*pb p * }
-{ * *P* *}
-{*B* *N* }
-{PPPP PPP}
-{RNBQR K }
-$$\showboard$$
- We have now reached a main line of the Ruy Lopez.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & c3&\\
-\end{tabular}}|
-\end{center}
-|8.~a4, Ng4; 9.~Re2, Bb7; 10.~a*b5, a*b5|
-=, and very like Game 7 of the Short-Kasparov WC, where Kasparov as
-white scored a decisive victory.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-8 & \ldots & Bg4\\
-9 & d3 & h6\\
-10 & Be3 & 0-0\\
-\end{tabular}}|
-\end{center}
-|10\ldots~B*e3; 11.~R*e3, 0-0; 12.~a4, b4; 13.~h3, Bh5; 14.~Nbd2, Rb8|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-11 & B*c5 & d*c5\\
-12 & Bc2 & Qd7\\
-13 & Nbd2&\\
-\end{tabular}}|
-\end{center}
-|13.~h3, Bh5; 14.~Nbd2, Rfd8; 15.~Nb3, Qd6; 16.~Qe2, Rab8; 17.~Red1|
-Fritz is deperate to put h3, but I dont see why.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-13 & \ldots & Nh5\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * rk*}
-{* pq*pp }
-{p*n* * p}
-{*pp p *n}
-{ * *P*b*}
-{* PP*N* }
-{PPBN PPP}
-{R *QR K }
-$$\showboard$$
-|13\ldots~Rad8|
-is an idea.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & Nb3&\\
-\end{tabular}}|
-\end{center}
-|14.~h3|
-\wbetter{},0.33 I now agree with this, because the knight block the h5
-retreat square.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-14 & \ldots & Nf4?\\
-\end{tabular}}|
-\end{center}
-|14\ldots~Qd6; 15.~h3, Be6; 16.~Ng5, B*b3; 17.~a*b3, Nf4; 18.~Nf3|
-\bbetter{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-15 & N*c5 & Qc8\\
-\end{tabular}}|
-\end{center}
-|15\ldots~Qe7; 16.~Nb3, Rfd8; 17.~h3, Be6; 18.~d4, Qf6; 19.~Rc1, e*d4|
-=
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & Re3&\\
-\end{tabular}}|
-\end{center}
-|16.~b4|
-White is just a pawn up.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-16 & \ldots & Rd8\\
-17 & Qd2 & Rd6\\
-\end{tabular}}|
-\end{center}
-|17\ldots~B*f3!; 18.~R*f3, Qg4; 19.~R*f4, e*f4; 20.~h3, Qh4; 21.~d4|
-and black has equalised!
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & Bd1&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r*q* *k*}
-{* p *pp }
-{p*nr * p}
-{*pN p * }
-{ * *Pnb*}
-{* PPRN* }
-{PP Q PPP}
-{R *B* K }
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-18 & \ldots & N*g2??\\
-\end{tabular}}|
-\end{center}
-Throws away a piece for a very temp. inititive.
-|18\ldots~Rb8; 19.~d4, e*d4; 20.~c*d4, Ne6; 21.~N*e6, Q*e6|
-and white is starting to push home his advantage.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-19 & K*g2 & Bh3+\\
-20 & Kh1 & Qg4\\
-\end{tabular}}|
-\end{center}
-|20\ldots~Rg6|
-is another idea, but the whole plan is conceptually flawed.
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-21 & Ne1 & Qg5\\
-22 & Qe2 & Be6\\
-23 & Rg3 & Qf6\\
-24 & N*e6&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{r* * *k*}
-{* p *pp }
-{p*nrNq p}
-{*p* p * }
-{ * *P* *}
-{* PP* R }
-{PP *QP P}
-{R *BN *K}
-$$\showboard$$
-|24.~Nf3, Ne7; 25.~N*e6, Q*e6; 26.~Bb3, Qf6; 27.~Rag1|
-\wdecisive{}
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-24 & \ldots & R*e6\\
-\end{tabular}}|
-\end{center}
-|24\ldots~Q*e6; 25.~Bb3, Qe7; 26.~Bd5, Rad8; 27.~Nf3, R8d7; 28.~Rd1|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & Qf3&\\
-\end{tabular}}|
-\end{center}
-Crude plan of exchanging queens to avoid `acidents`.
-|25.~Bb3|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-25 & \ldots & Qe7\\
-26 & Bb3 & Rf6\\
-27 & Qe3&\\
-\end{tabular}}|
-\end{center}
-|27.~Qg2|
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-27 & \ldots & Rd8\\
-28 & Nc2 & Kh7\\
-29 & Rag1 & g6\\
-30 & Rf3&\\
-\end{tabular}}|
-\end{center}
-
-\board
-{ * r * *}
-{* p qp*k}
-{p*n* rpp}
-{*p* p * }
-{ * *P* *}
-{*BPPQR* }
-{PPN* P P}
-{* * * RK}
-$$\showboard$$
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-30 & \ldots & R*f3\\
-\end{tabular}}|
-\end{center}
-|30\ldots~Rfd6??; 31.~R*f7+|
-Trying to avoid the exchance, but black loses his Queen! Black
-actually moved his rook to d6, but before letting it go, spotted the
-danger, and then took the exchange. Shame...
-\begin{center}|
-{\bf\begin{tabular}{rp{50pt}p{50pt}}
-31 & Q*f3 & Rd7\\
-32 & Ne3 & h5?\\
-33 & Nd5!&\\
-\end{tabular}}|
-\end{center}
-At least winning the exchange. Black resigned here.
-
-\board
-{ * * * *}
-{* prqp*k}
-{p*n* *p*}
-{*p*Np *p}
-{ * *P* *}
-{*BPP*Q* }
-{PP * P P}
-{* * * RK}
-$$\showboard$$
-$1\!-\!0$
-
-\end{document}
diff --git a/ghc/tests/programs/andy_cherry/mygames.pgn b/ghc/tests/programs/andy_cherry/mygames.pgn
deleted file mode 100644 (file)
index 3d2e46f..0000000
+++ /dev/null
@@ -1,1323 +0,0 @@
-% --------------
-%  Season 93/94
-% --------------
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.10.??"]
-[Round "1"]
-[White "Webb, George"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "C10"]
-
-1. Nf3 d5 2. d4 Nc6 3. Nc3 Nf6 (3... Bf5 {is more natural.}) 4. e4? (
-4. Bf4 {is better.}) 4... e6? (4... dxe4 5. d5 exf3 6. dxc6 Qxd1+ 7. 
-Nxd1 {and black is a clear pawn up.}) 5. e5 Ne4 {\ 4} 6. Nxe4? { Taking
-this knight looses a pawn} 6... dxe4 7. Nd2 Qxd4 8. Nc4 Qxd1+ 9. Kxd1 
-Bd7 (9... Bc5 10. f3 exf3 11. gxf3 O-O 12. Bd3 {White can get presure
-down the `g' file, but first needs to solve the problem of the Bishop on
-c5 guarding g8.}) 10. Bd2 (10. Be3 {is better.}) 10... Bb4 11. c3 Bc5 12. 
-Ke1 O-O-O (12... b5 13. Ne3 Bxe3 14. Bxe3 Nxe5 {wins a pawn, but black
-might have problems because of queenside weaknesses.}) 13. g3 (13. Bg5 
-Be7 14. Bxe7 Nxe7 15. Rd1 {and white is starting to contest the `d'
-file.}) 13... Rhf8 14. Bg2 f5? {black is throwing away a pawn.} 15. 
-exf6 gxf6 (15... Rxf6 {gives black more piece activity.}) 16. Bxe4 {
-taking the weak pawn, and attacking h7.} 16... e5? (16... Rh8 {is
-required to protect the weak h pawn.}) 17. Bxh7 {\ 4} 17... f5 (17... Bxf2+ 
-18. Kxf2 Be6 19. Nxe5 Rxd2+ 20. Ke1 Rxb2 {winning material, and striping
-whites king of protection.}) 18. b4 Be6 19. b5 (19. bxc5 Bxc4 {and white
-has the two bishops.}) 19... Bxc4 20. bxc6 bxc6 (20... Bxf2+ 21. Kxf2 
-Rxd2+ 22. Ke1 Re2+ 23. Kd1 bxc6 24. h4 Rd8+ {with a winning attack on
-whites exposed king.}) 21. Rb1? {Throws away a pawn needlessly.} 21... 
-Bxa2 (21... Bxf2+ 22. Kxf2 Rxd2+ 23. Ke1 Rxa2 {winning two pawns rather
-than one.}) 22. Rb2 Bd5 23. Rg1 e4 (23... a5 24. h4 a4 25. Bh6 Bf3 26. 
-Rd2 Rxd2 27. Bxd2 {is a better plan, with a dangerous passed `a' pawn.}) 
-24. Bh6? 24... Ba3 (24... Rf7 25. Bg5 Rxh7 26. Bxd8 Ba3 27. Rd2 Kxd8 {
-two bishops vs a rook, a difficult win for black.}) 25. Rb1 Rfe8? {
-another missed opertunity.} 26. Bxf5+ Be6 27. Bg6 Rh8 28. Be3 {\ 4
-28... Rd3?  (28... Rxh2 29. Bxe4 c5 30. Rb7 a5 {and black has a
-fighting chance}) 29. Bd4 (29. Bxe4 Rxc3 30. Bd4 Rc4 31. Bxh8 Rxe4+ {and
-black is lost.}) 29... Bd5?? 30. Bxh8 e3?? 31. f3? (31. Bxd3 
-exf2+ 32. Kxf2 Bc5+ 33. Bd4 {and white is two rooks up.}) 31... Rd2 32. 
-Bf6 Bb2 33. h4 (33. Bf5+ Kb7 34. c4 Bxc4 35. Rxb2+ Rxb2 36. Bxb2 {
-winning.}) 33... Kb7 34. Bg5 Bxf3 (34... Ba2 35. Bc2 Bxb1 36. Bxb1 Rh2 
-37. Bxe3 Bxc3+ {and black is just a bishop down in a pawn race.}) 35. 
-Bxe3 Re2+ 36. Kf1 Rxe3 37. Re1?? {giving black a chance to equalize.} 
-37... Re2?? {Returning the complement.} (37... Rxe1+ 38. Kxe1 Bxc3+ 
-39. Kf2 Bd4+ 40. Kxf3 Bxg1 {and White still has the edge with 2
-connected passed pawns, but black has real chances.}) 38. Rxe2 1-0
-
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "2"]
-[White "Gill, Andy"]
-[Black "Dunne, Barry"]
-[Result "1-0"]
-[ECO "C65"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 (4. O-O {Ruy Lopez, Berlin Defence}) 
-4... Be7 (4... Bc5 {is better.}) 5. O-O (5. Bxc6 dxc6 6. Nxe5 Bd6 7. Nf3 
-O-O 8. O-O Be6 {and white is a pawn up, but black has a lead in
-development.}) 5... O-O $2 (5... d6 {is needed to protect e5.}) 6. Nc3 (6. 
-Bxc6 dxc6 7. Nxe5 Bd6 8. Nf3 Bg4 9. Be3 {and white is a clean pawn up.}) 
-6... b6 $2 7. a3 Bb7 8. b4 Nd4 {\ 4A bit ambitious.} 9. Nxe5 (9. Nxd4 exd4 
-10. Ne2 d5 11. e5 Nd7 {is whites best line.}) 9... Nxb5 (9... d5 10. Bb2 
-dxe4 11. dxe4 Nxe4 {with equal chances.}) 10. Nxb5 d5 11. Bb2 dxe4 12. 
-dxe4 (12. f3 {is a better approach.}) 12... Qxd1 13. Raxd1 Bd6 {\ 4} (13... 
-Bxe4 14. Nd7 Bxc2 15. Bxf6 gxf6 16. Rd2 {with a slight advantage for
-white.}) 14. Nf3 (14. Nxd6 cxd6 15. Rxd6 Bxe4 16. c4 Rfd8 17. c5 bxc5 
-18. bxc5 {winning for white.}) 14... Bxe4 (14... Nxe4 {is better.}) 15. 
-Nxd6 cxd6 16. Bxf6 gxf6 17. Rxd6 Bxc2 (17... Bxf3 18. gxf3 Rac8 19. Rc1 
-Rc3 20. Rd3 Rxd3 21. cxd3 {and whites passed pawn is a long way from
-queening.}) 18. Rxf6 (18. Nd4 Ba4 19. Rxf6 Rfd8 20. Rf4 Rd7 21. Re4 {a
-pawn up, but with chances for black, because of the powerful Bishop.}) 
-18... Rfd8 19. Ne5 Kg7 (19... Bg6 {is better, defending the weak pawn.}) 
-20. Rxf7+ Kg8 21. Rc7 (21. f4 a6 22. g3 Rd2 23. Rb7 b5 {and white should
-win.}) 21... Re8 (21... Rdc8 22. Rb7 Be4 23. Rd7 Rc2 24. Rfd1 {with
-connected rooks for white.}) 22. Re1 (22. f4 {is better for protecting the
-knight.}) 22... Rac8 {should have moved the `e' Rook.} 23. Rxa7 Bf5 (
-23... Ra8 $5 {planning to attack the weak `a' pawn.}) 24. f4 Bg4 (24... 
-Rc2 {penatraiting the 7th.}) 25. Kf2 Rc2+ 26. Kg3 Re2 27. Rxe2 Bxe2 28. 
-Nc6 $2 {where is that knight going ?} 28... Re3+ 29. Kf2 Re4 {\ 4} 30. f5 (
-30. Ne7+ Kf8 31. Nd5 Bd3 32. Nxb6 Re7 {totally winning for white}) 
-30... Bg4 31. Ne7+ (31. Kg3 h6 32. f6 Be6 33. Re7 {looking very good for
-white.}) 31... Kf8 32. f6 Rf4+ 33. Kg3 Re4 34. h3 (34. Nd5 Be6 35. Nxb6 
-Rg4+ 36. Kf3 Rg6 37. Rxh7 Rxf6+ 38. Ke4 {and with 4 connected passed
-white will win.}) 34... Bh5 35. Nd5 b5 36. Rxh7 Bg6 37. Rh4 (37. Rh8+ Kf7 
-38. Rb8 Bf5 39. Rxb5 Be6 40. Rb7+ Kg6 41. Rg7+ {just look at whites
-advantage.}) 37... Rxh4 38. Kxh4 Be4 39. Nc3 (39. Ne3 Kf7 40. Kg5 Bc6 
-41. g4 Be4 42. h4 Bd3 43. h5 {winning.}) 39... Bc6 (39... Bxg2 40. Nxb5 
-Kf7 41. Kg5 Bxh3 42. Nd6+ Kg8 43. a4 Kh7) 40. g4 Kf7 41. g5 (41. Kg5 Kg8 
-42. h4 Bd7 43. h5 Kf7 44. Ne4 Kg8 45. Nd6) 41... Kg6 42. Kg4? 42... 
-Bd7+ 43. Kf4 Bxh3 44. Nxb5 Bd7 (44... Kf7 45. Nd6+ Ke6 46. f7 Ke7 47. g6 
-Kf8 48. a4 Kg7) 45. a4 Bc6 46. Nc3 Bd7 47. b5 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "3"]
-[White "Gill, Andy"]
-[Black "Brown, Rab"]
-[Result "0-1"]
-[ECO "C65"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. O-O Nf6 5. Nc3 d6 6. a3 Ng4? 7. 
-Qe1 (7. h3) 7... O-O {\ 4} 8. Bxc6 bxc6 9. b4 Ba6 10. bxc5 Bxf1 11. Kxf1 (
-11. Qxf1 Qd7 12. Bb2 dxc5 13. d3 Rfb8 14. Rb1 {clearly winning for
-white.}) 11... Qf6 {\ 4} (11... Rb8 12. Qe2 Qd7 13. Qa6 Ra8 14. h3 Nf6 15. 
-d4 exd4 {is a better plan.}) 12. d3 Qg6 13. Rb1 (13. h3 Nh6) 13... Qh5 
-14. Rb7 (14. h3 Nf6 15. Rb7 Rfc8 16. Bg5 Qg6 17. Qe3 Ne8 {and white has a
-commanding lead.}) 14... Nxh2+ 15. Nxh2 Qxh2 16. Rxc7 Qh1+ 17. Ke2 Qxg2 
-18. Rxc6 (18. cxd6 Rfc8 19. Rxc8+ Rxc8 20. Be3 Rd8 21. Bc5 h5) 18... dxc5 (
-18... Qg4+ 19. f3 Qg2+ 20. Qf2 Qxf2+ 21. Kxf2 Rfc8 22. Nd5 Rxc6 23. 
-Ne7+) 19. Rxc5 f5 20. Be3 Qg4+ 21. f3 Qg2+ 22. Qf2 Qh1 23. Rxe5 Qa1 {\ 4
-24. Bc5? (24. Qe1 Qb2 25. Qd2 Qxa3 26. Bc5 Qa5 27. exf5 {white has the
-advantage.}) 24... Qxc3 25. Rxf5 (25. Bxf8 Qxc2+ 26. Kf1 Qxd3+ 27. Qe2 
-Qb1+ 28. Qe1 Qxe1+ 29. Kxe1 {now black has only a slight advantage.}) 
-25... Qxc2+ (25... Rxf5 26. exf5 Qxc2+ 27. Kf1 Qxd3+ 28. Kg2 Rd8 29. f4 {
-and black has a clear lead.}) 26. Ke3 Qxf2+ 27. Kxf2 Rxf5 28. exf5 Rc8 
-29. d4 a6 30. a4 Kf7 31. Ke3 (31. Kg3 Kf6 32. Kf4 g5+ 33. fxg6 hxg6 34. 
-a5 g5+ 35. Kg4) 31... h5 (31... Kf6 32. Kf4 Rd8 33. a5 Rd5 34. Ke4 Rxf5) 
-32. Kf4 h4 33. Kg4 Rh8 34. d5 h3 35. Bd6 g6 (35... h2 36. Bxh2 Rxh2 37. 
-Kf4 Rh4+ 38. Ke5 Rxa4 39. d6 Rc4 {totaly won for black.}) 36. fxg6+ Kxg6 
-37. Bh2 Kf6 {\ 4} 38. f4 (38. a5 Ke7 39. Kf5 Rh5+ 40. Ke4 Rh4+ 41. f4 Kd6 
-42. Kd4 {holding the position.}) 38... Ke7 39. f5 a5 (39... Kf6 {is
-needed.}) 40. d6+ Kd7 (40... Kf6 {is still needed.}) 41. Kg5 Rb8 (41... Ke8) 
-42. f6 Rb2 (42... Ke6 43. Kg4 Rb4+ 44. Kxh3 Rxa4 45. d7 Kxd7 46. Be5 {
-but black should still win.}) 43. Kg6 (43. f7 Rg2+ 44. Kh6 Rf2 45. Kg7 
-Rg2+ 46. Kh7 Rf2 47. Kg7 {white has equalised!}) 43... Rf2 0-1
-
-[Site "Dunfermline C vs Stirling B"]
-[Date "1993.11.??"]
-[Round "4"]
-[White "Gill, Andy"]
-[Black "Kennedy, Ian"]
-[Result "0-1"]
-[ECO "C60"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Bd6 4. O-O a6 5. Ba4 b5 6. Bb3 Bb7 7. d3 Nf6 (
-7... Na5 8. Nbd2 f6 9. a4 Nxb3 10. Nxb3 Bb4 11. axb5 axb5 {with
-equality.}) 8. Nc3 (8. a4 b4 9. Nbd2 Bc5 10. Nc4 d6 {<saw>}) 8... O-O (
-8... Na5 9. Bd2 Nxb3 10. axb3 O-O 11. Bg5 Rb8 {=}) 9. Be3 Na5 {\ 4} (9... 
-Be7 10. a3 Ng4 11. Bd2 {<saw>}) 10. Bd5?! {where is that bishop going.} 
-10... b4 (10... c6 11. Bb3 Bc7 12. Bg5 Nxb3 13. Bxf6 Qxf6 14. axb3 {
-<sab>}) 11. Bxb7 Nxb7 12. Nd5 (12. Ne2 Ng4 13. Bd2 f5 14. exf5 Rxf5 15. 
-Ng3 Rf6 {<saw>}) 12... c6 (12... Nxd5 13. exd5 f6 14. c3 bxc3 15. bxc3 
-Be7 16. d4 d6 {<sab>}) 13. Nxf6+ (13. Bb6 Qc8 14. Nxf6+ gxf6 15. d4 Bc7 
-16. Bxc7 Qxc7 {<saw> and the black king is exposed.}) 13... Qxf6 14. Bb6 {
-?! strange move.} (14. Qd2 Be7 15. c3 a5 16. a3 bxa3 17. bxa3 {<saw> with
-the plan ofs owning the `b' file.}) 14... Bc5 (14... Be7) 15. Bc7 (15. Nxe5 {
-but black can easly win back the pawn.}) 15... Rac8? (15... d6 16. d4 
-exd4 17. e5 Qe7 18. exd6 Nxd6 19. Bxd6 Qxd6 {<ab>}) 16. Bxe5 Qg6 17. d4 (
-17. Bg3 Rfe8 18. Ne5 Qf6 19. Nxd7 Qxb2 20. Re1 {<aw> white should now
-try use his center pawns to push home his advantage.}) 17... Bd6 18. 
-Bxd6 {this is to early, leaving myself underdeveloped.} (18. Re1 f6 19. 
-Bxd6 Nxd6 20. Qd3 {<aw>}) 18... Nxd6 19. Ne5 (19. e5 Nc4 20. b3 Na3 21. 
-Rc1 d6 22. Re1 {<aw>}) 19... Qxe4 20. Nxd7 Rfe8 21. Nc5 Qg6? (21... 
-Qe2 22. Re1 Qc4 23. Qd2 Rcd8 24. Rad1 a5 {<aw> white is a clear pawn up.}) 
-22. Nxa6 Nf5 23. Nxb4 {\ 4 white should now win the endgame quite
-comfortably.} 23... Nh4 (23... Rcd8 24. c3 c5 25. Nc2 cxd4 26. Nxd4 Qf6 
-27. Qf3 Nxd4 {<aw> though still two clear pawns up.}) 24. g3 {forced.} 
-24... c5 25. dxc5 Rxc5 (25... Qe4 26. gxh4 Qxb4 27. a4 Qxh4 28. Qd5 Re2 {
-<aw>, but whites king is dangerously exposed, and the `a' rook is not
-(yet) part of the game.}) 26. a4 {crap plan! Its just too slow.} (26. Nd3 
-Rf5 27. f4 Rd5 28. a4 Qb6+ 29. Rf2 Nf5 {<waw> black will never stop 3
-connected passed pawns!}) 26... f5 27. Nd5 Rd8?? (27... Qd6 28. Nf4 
-Qxd1 29. Rfxd1 Nf3+ 30. Kg2 Ne5 {<waw>}) 28. Ne7+! 28... Kf7 29. Qxd8 
-Qg5 {\ 4} (29... Nf3+ 30. Kg2 {is an idea.}) 30. a5 {this plan is still to
-slow.} (30. Qg8+ Kxe7 31. Rfe1+ Kd6 32. Qf8+ Kc6 33. Qc8+ Kb6 34. Re6+ 
-Rc6 35. Qxc6+ Ka7 36. Qb6+ Ka8 37. Re8+ Qd8 38. Rxd8#) 30... f4 {\ 4} 31. 
-f3?? (31. Nc6 Nf3+ 32. Kg2 fxg3 33. Qd7+ Kf8 34. Qc8+ Kf7 35. fxg3 {
-<waw> but there are still some hairy tactics.}) 31... fxg3 32. hxg3?? (
-32. Qg8+ Kxe7 33. Rfe1+ Re5 34. Rxe5+ Qxe5 35. h3 Nxf3+ 36. Kg2 {and
-white can still win!}) 32... Qxg3+ 33. Kh1 Qg2# {painfull!} 0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "5"]
-[White "Gill, Andy"]
-[Black "Langham, Neil"]
-[Result "1-0"]
-[ECO "C41"]
-
-1. e4 e5 2. Nf3 d6 3. Nc3 Nf6 4. Bc4 h6 ( 4... Bg4 5. d3 Nc6 6. h3 Bh5 7. O-O
-Bxf3 8. Qxf3 { = } ) 5. O-O Bd7 6. d3 Nc6 7. Bd2 ( 7. Be3 Be7 8. Nd5 O-O 9. h3
-Nxd5 10. Bxd5 Bf6 ) 7... Na5 { \ 4 } 8. b4 ( 8. Bd5 Bg4 9. a3 c6 10. Ba2 d5
-11. Be3 dxe4 12. Nxe4 { but black is having the freer game } ) 8... Nxc4
-9. dxc4 Be6 ( 9... Be7 10. Qe2 O-O 11. Rfd1 Be6 12. c5 c6 13. cxd6 Qxd6 { <sab>
-} ) 10. Nd5 $2 Nxe4 11. Qe2 ( 11. Re1 Nxd2 12. Qxd2 c6 13. Ne3 Be7 14. Rad1 O-O
-{ <ab>, with white a pawn and position down. } ) 11... Nxd2 12. Nxd2 ( 12. Qxd2
-{ is better. } ) 12... Qg5 $4 { \ 4 } ( 12... g6 13. Ne3 f5 14. c5 dxc5 15. bxc5
-c6 { <ab>, ready for a pawn charge on white's king. } ) 13. Nxc7+ Ke7 (
-13... Kd7 { is better, stoping the future escape of the white knight. } )
-14. Nxa8 Bh3 { going for the cheapo. } 15. f4 $1 Qg6 16. Nc7 ( 16. fxe5 Kd8
-17. Qe4 Be6 18. Qxg6 fxg6 { is the best line Fritz2 found. } ) 16... Kd7
-17. Nd5 Bg4 18. Qf2 f6 ( 18... Qxc2 19. Ne3 Qg6 20. fxe5 Be6 21. Nf3 { rather
-cheeky, but still a rook down. } ) 19. Ne3 Ke6 $2 { \ 4 } 20. f5+ Bxf5 21. Qxf5+
-( 21. Nxf5 Qg5 22. h4 Qg4 { actually wins more material, but with this level of
-inequality, you want to swap of queens. } ) 21... Qxf5 22. Nxf5 g6 23. Ng3 { At
-this point the score sheet goes wrong, but the game was won by now anyway! }
-1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "6"]
-[White "Gill, Andy"]
-[Black "Duncan, Dennis"]
-[Result "1-0"]
-
-1. e4 e5 2. Nf3 d6 3. Bc4 Bg4 4. O-O Nf6 5. Nc3 ( 5. d3 Nc6 6. Be3 d5 7. exd5
-Nxd5 8. Nbd2 Nxe3 9. fxe3 { = } ) 5... c6 ( 5... Nc6 6. Bb5 Qd7 7. h3 Bxf3
-8. Qxf3 O-O-O { = } ) 6. Bb3 d5 7. d3 ( 7. exd5 cxd5 8. Re1 e4 9. d3 Bxf3 { = }
-) 7... b5 ( 7... dxe4 8. dxe4 Qxd1 9. Rxd1 Bxf3 { <sab> } ) 8. h3 { \ 4 } (
-8. exd5 b4 9. Ne4 cxd5 10. Nxf6+ gxf6 11. d4 exd4 12. Qxd4 { <aw> } ) 8... Bc8
-( 8... Bxf3 9. Qxf3 d4 10. Ne2 Nbd7 11. Bg5 Be7 { <saw> } ) 9. Nxe5 ( 9. exd5
-Nxd5 10. Nxe5 Be6 11. Nxd5 { <aw> } ) 9... Qc7 ( 9... Bd6 10. Nf3 dxe4 11. Nxe4
-Nxe4 12. Re1 Bxh3 13. Rxe4+ Be6 { <aw> } ) 10. Nf3 Nh5 ( 10... Be6 11. Nd4 dxe4
-12. Bxe6 { <aw> } ) 11. exd5 c5 12. Nxb5 ( 12. Re1+ $1 Be7 13. Nxb5 Qb6 14. d6
-Qxb5 15. Rxe7+ Kd8 16. Bxf7 { <waw> } ) 12... Qb6 ( 12... Qb7 13. Re1+ Kd8
-14. Ne5 Nf6 15. Bg5 Bf5 16. Bxf6+ gxf6 { <waw> } ) 13. Ba4 ( 13. Re1+ Kd8
-14. Ne5 Qxb5 15. Nxf7+ Kc7 16. Nxh8 Nf6 17. Bf4+ { <waw> } ) 13... Bd7 14. Qe2+
-Be7 { \ 4 } 15. d4 ( 15. d6 O-O 16. dxe7 Re8 17. d4 cxd4 18. Nfxd4 { <waw> } )
-15... Bxb5 16. Bxb5+ Nd7 ( 16... Kf8 17. Re1 Qd6 18. Nh4 Qf6 19. Qxh5 { <waw> }
-) 17. Bxd7+ Kxd7 18. Ne5+ Ke8 19. dxc5 ( 19. Nc6 Qc7 20. Re1 cxd4 21. c4 Nf6 {
-<waw> } ) 19... Qxc5 20. Rd1 ( 20. d6 Qxd6 21. Qf3 Rc8 22. Nxf7 Qf6 23. Qxf6
-Nxf6 24. Nxh8 { <waw> } ) 20... Ng3 21. Qe3 ( 21. Qg4 Qxc2 22. Rd2 Qf5 23. Qxg3
-Bf6 { <waw> } ) 21... Nf5 22. Qxc5 ( 22. Qf3 Nd6 23. c4 Bf6 24. Re1 Bxe5
-25. Rxe5+ Kf8 { <waw> } ) 22... Bxc5 { \ 4 } 23. Be3 $2 ( 23. Re1 Ne7 24. c4 f6
-25. Nd3 Bd4 { <waw> } ) 23... Nxe3 ( 23... Bxe3 24. fxe3 Nxe3 25. Rd2 Rc8
-26. Re2 Nxd5 27. Ng6+ Kd7 { Blacks best line } ) 24. fxe3 Bxe3+ 25. Kf1 Bf4
-26. Re1 ( 26. Nd3 Bd6 27. c4 Rc8 28. b3 { <waw> } ) 26... f6 { \ 4 } 27. Ng6+ Kf7
-28. Nxf4 Rhe8 29. Rxe8 ( 29. c4 Rac8 30. b3 h6 31. Kf2 Rxe1 32. Rxe1 Rc5 {
-<waw> } ) 29... Rxe8 30. d6 ( 30. Kf2 Re5 31. Rd1 g5 32. Ne2 { <waw> } )
-30... Rd8 31. Rd1 g6 32. Nd5 ( 32. c4 g5 33. Ne2 Ke6 34. Nd4+ Kd7 35. c5 h6 {
-<waw>,5.25 } ) 32... Rxd6 33. c4 ( 33. Ke2 Ke6 34. c4 Rc6 35. Kd3 f5 36. b3 {
-<waw>,4.53 } ) 33... f5 34. Ke1 ( 34. b3 { <waw>,4.22 } ) 34... Ra6 35. a3 f4
-$4 { Simply throws away a pawn. } 36. c5 { \ 4 why not take the pawn? } (
-36. Nxf4 h6 37. g3 g5 38. Nd5 Re6+ 39. Kd2 Re4 { <waw>,5.06 looks good to me. }
-) 36... Ke6 $2 37. Nc7+ { Black resigns } 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "7"]
-[White "Gill, Andy"]
-[Black "Rintoul, Adam"]
-[Result "1-0"]
-[ECO "C70"]
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 5. Bb3 Nf6 6. d3 Bc5 ( 6... Bb7 7. O-O
-d5 8. exd5 Nxd5 9. Bg5 Be7 10. Bxe7 Ndxe7 { = } ) 7. Be3 $2 { \ 4 } ( 7. Nc3 )
-7... Bxe3 8. fxe3 O-O 9. O-O d6 10. Nbd2 ( 10. a3 Bb7 11. Nc3 Rb8 12. Nd5 a5 {
-<sab>,0.13 } ) 10... Bg4 11. d4 $2 ( 11. a4 Rb8 12. axb5 axb5 13. h3 Bh5
-14. Qe2 Nd7 { <sab>,-0.22 } ) 11... Bxf3 ( 11... exd4 12. Qe1 dxe3 13. Qxe3 Na5
-14. Nd4 c6 15. c3 Nxb3 { <ab> a pawn up. } ) 12. Nxf3 Nxe4 $4 { \ 4 } ( 12... Qe8
-13. d5 Na5 14. Qd3 Nxb3 15. axb3 c6 16. Rad1 { <ab> } ) 13. Bd5 Qd7 ( 13... Ng5
-14. Bxc6 Nxf3+ 15. Bxf3 Rb8 16. dxe5 dxe5 17. a3 { <waw> } ) 14. Bxe4 f5
-15. Bd5+ Kh8 16. Ng5 exd4 17. Qh5 { \ 4 } ( 17. Nxh7 Rfb8 18. Ng5 g6 19. Qf3 Ne5
-20. Qh3+ Kg7 21. Bxa8 { <waw>,4.44 } ) 17... h6 $2 ( 17... g6 18. Bxc6 gxh5
-19. Bxd7 dxe3 20. Rxf5 Rxf5 21. Bxf5 { <waw>,4.90 } ) 18. exd4 ( 18. Qg6 Qe8
-19. Qh7# ) 18... Rae8 ( 18... Rf6 19. Rae1 Raf8 20. Ne6 Re8 21. Qf3 {
-<waw>,2.66 } ) 19. Rae1 Rxe1 20. Rxe1 Nd8 21. Qg6 { I finally find the two move
-mate! } 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.11.??"]
-[Round "8"]
-[White "Robertson, Ian"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "C30"]
-[WhiteElo "2150"]
-
-1. e4 e5 2. f4 d6 3. Nf3 Nc6 (3... exf4 {Just take the pawn, and then
-follow the main line KG.}) 4. Bb5 Bd7 5. O-O Nf6 6. Nc3 Be7 (6... a6 7. 
-Ba4 exf4 8. d3 b5 9. Bb3 b4 {Who knows?}) 7. d3 {\ 4 At this point white is
-winning.} 7... O-O 8. Kh1 {! A clever waiting move, to avoid temp
-gaining checks.} (8. Ne2) 8... Nd4 {? losses a pawn} 9. Bxd7 Qxd7 (9... 
-Nxf3 10. Bh3 Nd4 11. Be3 c5 12. fxe5 dxe5 {<saw>}) 10. fxe5 Nxf3 {?? \ 4
-Losses the piece.} 11. exf6 Bxf6 12. Qxf3 b5 {? what is this for?} (
-12... Rae8 {Planning taking control over the very white center.}) 13. 
-Nd5 {\ 4} 13... Qd8 {?? Losses another pawn, as well as weakening the
-kingside, and allowing exchange of queens.} (13... Bd8) 14. Nxf6+ Qxf6 
-15. Qxf6 gxf6 16. Rxf6 Kg7 17. Bg5 {Black is just out of good moves.} 
-17... Rae8 {? Blocking in the f rook, allowing the skew.} 18. Raf1 d5 {
-? again lack of vision} 19. Bh6+ Kg8 20. exd5 Rd8 21. Bxf8 Rxf8 22. Rc6 {
-Planning an invasion of the 7th. Textbook play.} 22... Rd8 {\ 4 Planing to
-remove the dangerous white pawn, but missing the connected rooks that
-arrive on the 7th.} 23. Rxc7 Rxd5 24. Rfxf7 Rd8 {Silly, blocking the
-kings escape, athough its over anyway. I should have tried for at least
-one cheapo.} (24... Re5) 25. Rxh7 Rf8 {?? Again just missing the action.} 
-26. Rcg7# 1-0
-
-[Site "Dunfermline Club Knockout"]
-[Date "1993.12.??"]
-[Round "9"]
-[White "Gill, Andy"]
-[Black "Colquhoun, Bob"]
-[Result "1-0"]
-[ECO "B10"]
-
-1. e4 c6 2. Nf3 d5 3. exd5 cxd5 4. c4 ( 4. d4 { Score: 0.06 } ) 4... Nf6 (
-4... d4 5. b3 Nc6 6. Bb2 Nf6 7. Na3 e5 { Score: -0.03 } ) 5. cxd5 ( 5. d4 e6
-6. cxd5 Nxd5 7. Nbd2 Bd6 8. Bc4 { Score: 0.13 } ) 5... Nxd5 6. Bc4 e6 (
-6... Nb6 7. Bb3 Nc6 8. d4 Bf5 9. Bg5 Be4 { Score: 0.00 } ) 7. O-O Nc6 8. d4 a6
-( 8... Bb4 9. Bd2 Bxd2 10. Nbxd2 Nf4 11. Nb3 O-O { Score: -0.16 } ) 9. Re1 (
-9. Nc3 { Score: -0.09 } ) 9... b5 ( 9... Be7 10. Nc3 O-O 11. Qd3 Qd7 12. Nxd5 {
-Score: -0.03 } ) 10. Bxd5 Qxd5 11. Nc3 Qf5 ( 11... Qd8 12. d5 Ne7 13. d6 Nf5
-14. Qd5 Bd7 { Score: 0.41 } ) 12. d5 Nd8 ( 12... Nb4 13. d6 Nd3 14. Re4 Nxc1
-15. Rxc1 Rb8 { Score: 0.34 } ) 13. dxe6 ( 13. d6 Nb7 14. Ne4 Nc5 15. Nd4 {
-Score: 0.34 } ) 13... Bxe6 14. Qd5 ( 14. Nd5 Rc8 15. Nd4 Qg6 16. Bf4 Bc5
-17. Nc7 Kf8 18. Nxa6 { Score: 0.75 } ) 14... Qxd5 15. Nxd5 Bd6 16. Bg5 (
-16. Nd4 Rb8 17. Bf4 Bxf4 18. Nxf4 Rb6 19. Ndxe6 Nxe6 20. Nxe6 { Score: 0.00 } )
-16... O-O ( 16... h6 17. Bd2 O-O 18. Bf4 { Score: -0.25 } ) 17. Rad1 Nc6 (
-17... Nb7 18. Be7 Bxe7 { Score: 0.00 } ) 18. Nd4 ( 18. Nb6 Bb4 19. Rxe6 fxe6
-20. Nxa8 Rxa8 { Score: 0.16 } ) 18... Bxd5 ( 18... Nxd4 19. Rxd4 h6 20. Ne7 Kh7
-21. Rxd6 hxg5 22. Nd5 { Score: -0.25 } ) 19. Nxc6 Bxh2+ ( 19... Rfe8 20. Rxe8
-Rxe8 21. h3 Re6 22. Nd4 Re4 { Score: -0.13 } ) 20. Kxh2 Bxc6 21. Rd6 Rfe8 (
-21... Rac8 { Score: -0.44 } ) 22. Rxe8+ ( 22. Rc1 Be4 23. Rc7 h6 24. Be3 Kf8 {
-Score: -0.41 } ) 22... Bxe8 23. a3 ( 23. Be3 h6 24. b3 Kh7 25. a3 g6 26. Bd4 {
-Score: -0.78 } ) 23... a5 ( 23... h6 24. Be3 Kh7 25. b3 f6 26. Bd4 Bf7 27. b4 {
-Score: -0.88 } ) 24. Kg3 ( 24. b3 h6 25. Rd8 Rxd8 26. Bxd8 a4 27. bxa4 bxa4 {
-Score: -0.81 } ) 24... a4 ( 24... h6 { Score: -0.91 } ) 25. Bc1 ( 25. Kh4 h6
-26. Be3 Kh7 27. Bd4 Rc8 28. g3 Bc6 { Score: -1.03 } ) 25... Rc8 ( 25... h6
-26. Be3 Kh7 27. Kh4 Rc8 28. Bd4 Bc6 29. f3 { Score: -1.09 } ) 26. Bd2 ( 26. Be3
-h6 27. Kh4 Kh7 28. Bd4 Bc6 29. f3 { Score: -1.13 } ) 26... Rc4 ( 26... Bc6
-27. Be3 h6 28. f3 Kh7 { Score: -1.16 } ) 27. Rd8 Re4 28. Bb4 ( 28. f4 { Score:
--0.88 } ) 28... f6 ( 28... h6 29. Kf3 Re6 30. Kg4 Kh7 31. f4 Re4 32. g3 {
-Score: -1.13 } ) 29. f4 ( 29. Kf3 Re6 30. Kg4 Kf7 31. Kh4 Re2 32. Rd2 { Score:
--0.91 } ) 29... Kf7 30. Kf3 ( 30. Rc8 Kg6 31. Kf3 { Score: -1.16 } ) 30... Bc6
-31. Rc8 ( 31. Kg3 Re2 32. Rd2 Rxd2 33. Bxd2 Ke6 34. Be3 { Score: -1.25 } )
-31... Rxb4+ 32. Rxc6 Rxb2 33. g4 ( 33. Rb6 { Score: -2.06 } ) 33... Rb3+
-34. Ke4 Rxa3 35. Rc7+ ( 35. f5 h6 36. Rc7 Kg8 37. Rb7 Rb3 38. Rd7 Rb4 39. Kf3 {
-Score: -3.28 } ) 35... Kg6 36. Rb7 ( 36. f5 Kh6 37. Rc2 Rb3 38. g5 Kh5 39. gxf6
-gxf6 40. Rh2 { Score: -3.34 } ) 36... Rb3 37. f5+ ( 37. Kd4 { Score: -3.44 } )
-37... Kh6 38. g5+ ( 38. Kd4 a3 39. Ra7 b4 40. Kc4 Rb2 41. Rb7 Rc2 { Score:
--3.59 } ) 38... fxg5 39. Rb6+ Kh5 40. Rb7 Rb4+ ( 40... Kg4 41. Rxg7 Rb4 42. Ke5
-Rf4 43. f6 h5 44. Ra7 h4 { Score: -4.09 } ) 41. Ke5 Rf4 ( 41... Kg4 42. Rxg7
-Rf4 43. f6 h5 44. Ra7 Rf5 45. Ke6 h4 { Score: -4.22 } ) 42. Rxb5 Kg4 43. Ke6
-Rxf5 ( 43... h5 44. Re5 h4 45. Re1 a3 46. Ra1 Rf3 47. Rg1 Kh5 { Score: -3.94 }
-) 44. Rxf5 1-0
-
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.12.??"]
-[Round "10"]
-[White "Gill, Andy"]
-[Black "Petrie, George"]
-[Result "0-1"]
-
-1. e4 c5 2. Nf3 Nc6 3. Bc4 d6 ( 3... e6 4. Nc3 Nge7 5. d3 d5 6. Bb3 d4 7. Ne2
-e5 { Score: 0.09 } ) 4. O-O ( 4. c3 { Score: 0.03 } ) 4... e6 ( 4... g6 5. d4
-cxd4 6. Nxd4 Bg7 7. Be3 Nxd4 8. Bxd4 Nf6 { Score: -0.16 } ) 5. d3 ( 5. Bb5 Nf6
-6. d3 Bd7 7. Nc3 Be7 8. Bg5 O-O { Score: 0.00 } ) 5... Be7 ( 5... d5 6. Bb5 Nf6
-7. Ne5 Bd7 8. Nxd7 Qxd7 9. Bg5 { Score: 0.03 } ) 6. Nc3 Bd7 ( 6... Bf6 { Score:
-0.00 } ) 7. Bf4 ( 7. Re1 Nf6 8. Be3 O-O 9. a3 Rc8 10. Bf4 Nd4 11. Nxd4 { Score:
-0.06 } ) 7... a6 ( 7... Na5 8. Nd2 Nxc4 9. Nxc4 e5 10. Bg3 Be6 11. Ne3 { Score:
--0.06 } ) 8. d4 ( 8. a3 Nf6 9. Re1 O-O 10. Be3 e5 11. Nd5 Be6 12. Nxe7 { Score:
-0.06 } ) 8... cxd4 9. Ne2 e5 ( 9... Na5 { Score: -0.94 } ) 10. Bg3 Nf6 11. Bd5
-( 11. c3 Nxe4 12. cxd4 O-O 13. Bd5 Nxg3 { Score: -0.97 } ) 11... O-O (
-11... Nb4 12. c3 Nbxd5 13. exd5 d3 14. Nc1 e4 15. Nd2 { Score: -1.16 } ) 12. c4
-( 12. c3 dxc3 13. Nxc3 b6 14. a3 Qc7 15. b3 Be6 16. Bxe6 { Score: -0.63 } )
-12... Qb6 ( 12... Bg4 13. Qb3 Qc7 14. Rac1 Rac8 15. Qd3 b6 { Score: -1.13 } )
-13. Qd2 ( 13. b3 Bg4 14. Nc1 Rac8 15. Nd3 Nh5 16. a3 Nxg3 17. fxg3 { Score:
--1.22 } ) 13... Rac8 ( 13... Nb4 14. b3 Bg4 15. Rfd1 Nbxd5 { Score: -1.22 } )
-14. Bh4 ( 14. Rac1 { Score: -1.25 } ) 14... Nb4 ( 14... Bg4 15. Bg3 Nb4 16. b3
-Nbxd5 17. exd5 Bxf3 18. gxf3 { Score: -1.53 } ) 15. Nexd4 ( 15. Bxf6 Bxf6
-16. h3 Nxd5 17. cxd5 { Score: -1.44 } ) 15... Nbxd5 ( 15... exd4 16. b3 Bg4
-17. Qf4 Nd3 { Score: -3.34 } ) 16. Bxf6 ( 16. exd5 exd4 17. Rfe1 Bd8 18. b3 Ng4
-19. Bxd8 Rfxd8 20. Nxd4 { Score: -1.94 } ) 16... Nxf6 17. Ne2 ( 17. Nf5 Bxf5
-18. exf5 Rxc4 19. b3 Ne4 20. Qd5 Rb4 { Score: -4.75 } ) 17... Rxc4 18. b3 (
-18. Nc3 Rb4 19. b3 Nxe4 20. Nxe4 Rxe4 21. Rfd1 { Score: -5.13 } ) 18... Rxe4
-19. Nc3 ( 19. Ng3 Rb4 20. Rfe1 Bg4 21. Qd3 Rf4 22. Qe3 Qxe3 23. fxe3 { Score:
--5.38 } ) 19... Rg4 ( 19... Rf4 20. Qe3 Qc7 { Score: -5.34 } ) 20. Qd1 (
-20. Rae1 { Score: -5.41 } ) 20... Bc6 21. Na4 ( 21. Rc1 Rf4 22. Re1 Bxf3
-23. gxf3 Re8 24. a3 { Score: -5.66 } ) 21... Qb4 ( 21... Bxa4 22. bxa4 Qa5
-23. Qb3 Rb4 24. Qc2 Rxa4 25. Rfc1 { Score: -5.94 } ) 22. Rc1 ( 22. h3 Rf4
-23. Nb2 Bxf3 24. gxf3 Rd4 25. Nd3 Qc3 { Score: -5.81 } ) 22... Rxg2+ 23. Kxg2
-Qg4+ 24. Kh1 Bxf3+ 25. Qxf3 Qxf3+ 26. Kg1 Nh5 ( 26... Nd5 27. Rc4 b5 28. Rfc1
-bxc4 29. Rxc4 Bf6 { Score: -14.53 } ) 27. Rc3 Qd5 ( 27... Qg4 28. Kh1 b5
-29. Rg1 Qd4 30. Rh3 Nf4 31. Rhg3 bxa4 { Score: -12.00 } ) 28. Nb6 ( 28. h3 Nf4
-29. Rg3 Ne2 30. Kh2 Nxg3 31. Kxg3 Qd3 32. Kg2 { Score: -11.94 } ) 28... Qd4
-29. Rfc1 ( 29. Na4 b5 30. h3 Nf4 31. Kh2 bxa4 32. Rc7 Re8 { Score: -12.97 } )
-29... Qxb6 30. Rc8 ( 30. R1c2 d5 31. h3 Qg6 32. Kh2 Nf4 33. f3 b6 { Score:
--13.97 } ) 30... Nf4 31. R1c7 ( 31. R8c3 Ne2 32. Kf1 Nxc1 33. Rxc1 d5 34. h3
-Bc5 35. f3 { Score: -15.63 } ) 31... Bh4 ( 31... Nh3 32. Kh1 Qxf2 33. Rc4 d5
-34. Rc3 Qg1 { Score: -#4 } ) 32. Rc2 ( 32. Rxf8 Kxf8 33. Rc8 Ke7 34. Rc2 Qd4
-35. h3 Bxf2 36. Kh2 { Score: -18.41 } ) 32... Nd3 ( 32... Bxf2 33. Kf1 Qe3
-34. Rxf8 Kxf8 35. Rc8 Ke7 36. Rc7 Kd8 { Score: -19.53 } ) 33. Rxf8+ ( 33. Kf1
-Bxf2 34. Rxf8 Kxf8 35. Rc8 Ke7 36. Rg8 Bg3 37. Ke2 { Score: -14.78 } )
-33... Kxf8 0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1993.12.??"]
-[Round "11"]
-[White "Gill, Andy"]
-[Black "Horne, Peter"]
-[Result "0-1"]
-
-1. e4 e6 2. Nf3 Nc6 3. Bb5 a6 ( 3... d5 4. d3 dxe4 5. Bxc6 bxc6 6. dxe4 Qxd1
-7. Kxd1 { Score: 0.19 } ) 4. Ba4 ( 4. Bxc6 dxc6 5. O-O Nf6 6. Re1 Be7 7. d4 c5
-8. e5 { Score: 0.22 } ) 4... b5 5. Bb3 Bb7 ( 5... Na5 6. d3 Nxb3 7. axb3 Bb7
-8. O-O Bc5 9. Nc3 { Score: -0.13 } ) 6. d4 ( 6. c3 Nf6 7. d3 Be7 8. Be3 O-O
-9. Nbd2 d5 { Score: -0.09 } ) 6... Na5 7. Nbd2 ( 7. e5 Nxb3 8. axb3 c5 9. Bg5
-f6 10. Be3 cxd4 11. Bxd4 { Score: -0.38 } ) 7... Nf6 ( 7... Nxb3 8. axb3 c5
-9. O-O d5 10. exd5 Bxd5 { Score: -0.41 } ) 8. e5 Nd5 ( 8... Nxb3 9. Nxb3 Ne4
-10. O-O Be7 11. c3 O-O 12. Be3 d5 { Score: -0.19 } ) 9. O-O d6 ( 9... Nf4 {
-Score: -0.09 } ) 10. a4 ( 10. Bxd5 Bxd5 11. a4 dxe5 12. axb5 c5 13. bxa6 exd4 {
-Score: 0.09 } ) 10... b4 ( 10... dxe5 11. Bxd5 Qxd5 12. dxe5 c5 13. axb5 axb5
-14. b3 { Score: 0.06 } ) 11. Nc4 ( 11. Bxd5 Bxd5 12. c3 dxe5 13. Nxe5 Bd6
-14. cxb4 Bxb4 15. Ndf3 { Score: 0.03 } ) 11... Nxb3 12. cxb3 a5 ( 12... Rb8
-13. Qc2 Be7 14. Na5 c5 15. exd6 Qxd6 16. Nxb7 Rxb7 { Score: -0.34 } ) 13. Qe2 (
-13. Bg5 Be7 14. Bxe7 Qxe7 15. Re1 dxe5 { Score: -0.56 } ) 13... f6 ( 13... Be7
-14. Rd1 O-O 15. Be3 dxe5 16. dxe5 { Score: -0.63 } ) 14. exd6 ( 14. exf6 Bc8
-15. f7 Kxf7 16. Ng5 Ke7 17. Ne4 Qd7 18. Bg5 { Score: 0.47 } ) 14... cxd6 (
-14... Bxd6 15. Qxe6 Be7 16. Bd2 Ra6 17. Qf5 c5 18. dxc5 Bxc5 { Score: 0.03 } )
-15. Qxe6+ Qe7 ( 15... Be7 16. Re1 Ra6 17. Nh4 Nc7 18. Qxe7 Qxe7 19. Rxe7 Kxe7 {
-Score: 0.72 } ) 16. Qh3 ( 16. Nxd6 Kd8 17. Qxe7 Bxe7 18. Nxb7 Kc8 19. Nc5 Re8
-20. Re1 { Score: 4.66 } ) 16... Qf7 ( 16... Qc7 17. Re1 Be7 18. Qe6 Ra6 19. Bd2
-Qc8 20. Qxc8 Bxc8 { Score: 0.97 } ) 17. Re1+ Kd8 18. Bd2 Qg6 ( 18... g6 {
-Score: 0.97 } ) 19. Re2 ( 19. Rac1 Ra6 20. Ne3 Nxe3 21. Bxe3 d5 22. Bf4 Bd6 {
-Score: 0.88 } ) 19... Be7 ( 19... Ra6 20. Rae1 Be7 21. Qe6 Re8 22. Ne3 Nxe3
-23. Bxe3 Bxf3 { Score: 0.88 } ) 20. Rae1 ( 20. Nh4 Qh5 21. Rae1 Bc8 22. Qg3 Qg4
-23. Bf4 Nxf4 24. Qxg4 { Score: 1.06 } ) 20... Re8 ( 20... Bc8 21. Qh4 Bb7
-22. Bf4 Ba6 23. Qg3 { Score: 0.91 } ) 21. Nh4 ( 21. Nxd6 Bc8 22. Nh4 Qh5
-23. Qg3 Rg8 24. Nf3 Bg4 { Score: 2.06 } ) 21... Qh5 22. Nf5 ( 22. Nxd6 Ba6
-23. Re6 Bc8 24. g4 Bxe6 25. Rxe6 Nf4 26. Bxf4 { Score: 3.06 } ) 22... Qxh3
-23. gxh3 g6 ( 23... Bc6 24. Nxg7 Rg8 25. Bh6 Bd7 26. Nb6 { Score: 1.53 } )
-24. Ncxd6 ( 24. Nfxd6 Bc6 25. Nxe8 Kxe8 26. Re6 Bd7 27. Nd6 Kd8 28. Nf7 {
-Score: 3.41 } ) 24... gxf5 25. Nxe8 ( 25. Nxb7 Kd7 26. Nc5 Bxc5 27. dxc5 Rxe2 {
-Score: 1.66 } ) 25... Kxe8 26. Bh6 ( 26. f3 Kd7 27. Kf2 Rg8 28. Rd1 Bd6 29. Kf1
-Bc6 { Score: -0.16 } ) 26... Kf7 ( 26... Kd7 27. f3 Rg8 28. Kf2 Bd6 29. Rg1 Rg6
-30. Rxg6 hxg6 { Score: -0.47 } ) 27. Bf4 ( 27. f3 Rg8 28. Kf2 Bd6 29. Rg1 Rg6
-30. Rxg6 hxg6 31. Ke1 { Score: -0.41 } ) 27... Rg8+ 28. Kf1 Ba6 29. Bd2 Bd6
-30. f3 ( 30. Rc1 Bxh2 31. f3 Bg1 32. Rc4 Bxc4 33. bxc4 Bxd4 34. Rg2 { Score:
--3.00 } ) 30... Bxh2 31. Kf2 ( 31. Rc1 Bg1 32. Rc4 Bxc4 33. bxc4 Bxd4 34. Re1
-Ne7 { Score: -3.13 } ) 31... Bg3+ 32. Kf1 Bxe1 33. Bxe1 ( 33. Kxe1 Rg1 34. Kf2
-Rb1 35. Re1 Rxb2 36. Rd1 Nc3 37. Ke1 { Score: -4.84 } ) 33... Ne3+ ( 33... Re8
-34. Bg3 Rxe2 35. Kg1 Rxb2 36. Bd6 Rxb3 { Score: -8.31 } ) 34. Kf2 f4 (
-34... Nd1 35. Kf1 Re8 36. Kg1 Bxe2 37. f4 Rd8 38. Kg2 Rxd4 { Score: -7.81 } )
-35. Rxe3 fxe3+ 36. Kxe3 Re8+ 37. Kd2 Re2+ 38. Kd1 Rxb2 39. d5 ( 39. f4 Rxb3
-40. h4 Rd3 41. Kc1 Rxd4 42. Bg3 Rd3 43. Bf2 { Score: -6.09 } ) 39... Rxb3 0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.01.??"]
-[Round "12"]
-[White "Gill, Andy"]
-[Black "Easton, Brian"]
-[Result "1-0"]
-
-1. e4 Nf6 2. Nc3 e6 3. d4 d5 4. e5 Ne4 5. Nxe4 dxe4 6. Bc4 Nc6 7. Be3 
-Bb4+ 8. c3 Be7 9. Ne2 Bg5 10. Qd2 Na5 11. Bxg5 Nxc4 12. Qf4 Qd5 13. b3 
-Nb2 14. O-O b6 15. Ng3 Ba6 16. c4 Nd3 17. Qxe4 Qxe4 18. Nxe4 Bb7 19. f3 
-O-O 20. Nf2 f6 21. exf6 gxf6 22. Bh6 Rf7 23. Nxd3 Rd8 24. Nf4 Re7 25. 
-Rfe1 Kf7 26. Rad1 e5 27. dxe5 Rxd1 28. Rxd1 fxe5 29. Nd5 Rd7 30. f4 e4 
-31. f5 c6 32. Nc3 c5 33. Rxd7+ Kf6 34. Rxb7 Kxf5 35. Rxh7 Kg6 36. Rh8
-1-0
-
-[Site "Wester-Hailes Congress"]
-[Date "1994.01.??"]
-[Round "13"]
-[White "Plant, George"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. d4 b5 6. Bb3 d6 7. Ng5 Qd7 
-8. Bxf7+ Kd8 9. d5 Nb4 10. c3 Nxe4 11. Be6 Qe8 12. cxb4 Nxg5 13. Bxg5+ 
-Be7 14. Bxe7+ Qxe7 15. Bxc8 Rxc8 16. O-O c6 17. dxc6 Rxc6 18. Re1 h5 
-19. Nc3 Rc4 20. a3 g5 21. Nd5 Qg7 22. Ne3 Rc7 23. Nf5 Qf6 24. Qxd6+ 
-Qxd6 25. Nxd6 Re7 26. Rxe5 Rxe5 27. Nf7+ Ke7 28. Nxe5 Rc8 29. Nd3 Kd6 
-30. Kf1 h4 31. h3 Kd5 32. Ne1 Ke4 33. Nf3 Kf4 34. Nd4 Re8 35. Re1 Rxe1+ 
-36. Kxe1 Ke5 37. Nc2 Ke4 38. Ke2 Kf4 39. Kd3 Ke5 40. Ne3 Kf4 41. Nd5+ 
-Kf5 42. Nc7 1-0
-
-[Site "Wester-Hailes Congress"]
-[Date "1994.01.??"]
-[Round "14"]
-[White "Gill, Andy"]
-[Black "McIntee, C."]
-[Result "1-0"]
-
-1. e4 c5 2. Nf3 Nc6 3. Be2 Nf6 4. Nc3 e6 5. O-O d5 6. exd5 Nxd5 7. Nxd5 
-Qxd5 8. c4 Qd8 9. Re1 h5 10. b3 f6 11. Bb2 h4 12. h3 Qc7 13. d4 Qf4 
-14. d5 exd5 15. cxd5 Nd8 16. Bb5+ Kf7 17. Qc1 Qd6 18. Qe3 Be7 19. Qe4 
-g5 20. Bd3 Ke8 21. Qg6+ Kd7 22. Bb5+ Kc7 23. Ne5 Qxd5 24. Rad1 Qg8 25. 
-Bc4 Ne6 26. Qxg8 Rxg8 27. Bxe6 Bxe6 28. Nf3 Rad8 29. Rxd8 Rxd8 30. Rxe6 
-Rd1+ 31. Kh2 Bd6+ 32. g3 f5 33. Be5 hxg3+ 34. fxg3 Bxe5 35. Rxe5 Ra1 
-36. Rxc5+ Kb6 37. Rc2 g4 38. hxg4 fxg4 39. Ne5 Kb5 40. Nxg4 a5 41. Ne3 
-Re1 42. Nc4 Re6 43. g4 Rh6+ 44. Kg3 Rg6 45. Rg2 a4 46. Ne5 Rg5 47. 
-bxa4+ Kxa4 48. Kf4 Rg7 49. g5 b5 50. g6 b4 51. Kf5 Ka3 52. Kf6 Rg8 53. 
-g7 1-0
-
-[Site "Wester-Hailes Congress"]
-[Date "1994.01.??"]
-[Round "15"]
-[White "Robertson, F."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-
-1. d4 d5 2. Nf3 e6 3. Bf4 Be7 4. e3 Nf6 5. Bd3 b6 6. O-O O-O 7. Re1 Bb7 
-8. Nbd2 c5 9. c3 Nc6 10. Ne5 Rc8 11. Ndf3 c4 12. Bc2 b5 13. b3 Qa5 14. 
-b4 Qd8 15. a4 a6 16. axb5 axb5 17. Nxc6 Bxc6 18. Ne5 Bb7 19. Ra5 Qe8 
-20. Ra7 Ba8 21. Ng4 Bc6 22. Be5 Qd8 23. Qf3 Ra8 24. Rxa8 Bxa8 25. Nxf6+ 
-Bxf6 26. e4 Bxe5 27. dxe5 dxe4 28. Bxe4 Bxe4 29. Qxe4 Qd3 30. Qxd3 cxd3 
-31. Rd1 Rd8 32. f4 f5 33. Kf2 Kf8 34. Ke3 Ke7 35. Rxd3 Rxd3+ 36. Kxd3 
-Kd7 37. h3 g6 38. Kd4 Kc6 39. g3 Kb6 40. g4 Kc6 41. c4 Kb6 42. c5+ Kc6 
-43. Ke3 Kc7 44. Ke2 Kc6 45. Kf3 Kd5 46. gxf5 gxf5 47. h4 Kc4 1-0
-
-[Site "Wester-Hailes Congress"]
-[Date "1994.01.??"]
-[Round "16"]
-[White "Gill, Andy"]
-[Black "McKerrow, A."]
-[Result "0-1"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Nc3 b5 7. Bb3 
-O-O 8. a3 d6 9. Re1 Rb8 10. d3 Bg4 11. h3 Bh5 12. Nd5 Nxd5 13. exd5 Nd4 
-14. g4 Nxf3+ 15. Qxf3 Bg6 16. a4 b4 17. a5 Qc8 18. Ba4 f5 19. gxf5 Rxf5 
-20. Qg4 Bh5 21. Qc4 Rf6 22. Bg5 Rg6 23. f4 h6 24. Rxe5 dxe5 25. d6+ Qe6 
-26. Qxe6+ Rxe6 27. Bb3 hxg5 28. dxe7 Bf7 29. fxg5 Rg6 30. Rf1 Bxb3 31. 
-cxb3 Rxg5+ 32. Kh2 Re8 33. h4 Rg4 34. Kh3 Rf4 35. Rxf4 exf4 36. Kg4 
-Rxe7 37. Kxf4 Rd7 38. Ke4 Rd6 0-1
-
-[Site "Wester-Hailes Congress"]
-[Date "1994.01.??"]
-[Round "17"]
-[White "McCluskey, S."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. d3 Bd6 6. O-O Bg4 7. h3 
-Bh5 8. Be3 Qe7 9. Nc3 Nf6 10. Re1 O-O-O 11. Nb1 Bb4 12. c3 Ba5 13. b4 
-Bb6 14. a3 Nxe4 15. Bxb6 Bxf3 16. Qxf3 Ng5 17. Qe3 cxb6 18. d4 Rhe8 
-19. h4 Ne6 20. g3 exd4 21. cxd4 Rxd4 22. Nc3 c5 23. Rac1 Red8 24. bxc5 
-bxc5 25. Ne4 R8d7 26. Nxc5 Rc7 27. Nxe6 Qxe6 28. Qxd4 Rxc1 29. Rxc1+ 
-Kb8 30. Qxg7 1-0
-
-[Site "Dunferline Club Knockout"]
-[Date "1994.01.??"]
-[Round "18"]
-[White "Gill, Andy"]
-[Black "Brown, Rab"]
-[Result "1-0"]
-
-1. e4 e5 2. Nf3 d6 3. d4 Nc6 4. dxe5 Nxe5 5. Nxe5 dxe5 6. Qxd8+ Kxd8 
-7. Bc4 Bb4+ 8. Nc3 Bxc3+ 9. bxc3 Be6 10. Bxe6 fxe6 11. O-O Nf6 12. Bb2 
-Nxe4 13. c4 Nd2 14. Rfd1 Ke7 15. Rxd2 c5 16. Bxe5 Rhg8 17. Rad1 g5 18. 
-Rd7+ Ke8 19. Rxb7 g4 20. Rxh7 Rd8 21. Rxd8+ Kxd8 22. Rh8 Rxh8 23. Bxh8 
-Kd7 24. f3 gxf3 25. gxf3 Ke7 26. Be5 Kd7 27. Kg2 Ke7 28. Kg3 Kf7 29. 
-Bd6 Kf6 30. Bxc5 a5 31. Kf4 e5+ 32. Ke4 Ke6 33. f4 a4 34. fxe5 a3 35. 
-Bxa3 Kd7 36. Kd5 Ke8 37. Ke6 Kd8 38. Kf7 Kd7 39. e6+ Kc6 40. e7 Kc7 
-41. e8=Q Kb7 42. Qe6 Kc7 43. Qd6+ Kb7 44. Ke7 Ka7 45. Qb4 Ka8 46. Kd7 
-Ka7 47. Kc7 Ka6 48. Qb6# 1-0
-
-[Site "Dunfermline C vs Grangemouth B"]
-[Date "1994.01.??"]
-[Round "19"]
-[White "Gill, Andy"]
-[Black "Patterson, Dick"]
-[Result "0-1"]
-
-1. e4 c5 2. Nf3 Nc6 3. Be2 e6 4. b3 a6 5. O-O b5 6. Bb2 Nf6 7. e5 Nd5 
-8. d4 Bb7 9. c4 Nf4 10. cxb5 Nxe2+ 11. Qxe2 axb5 12. Re1 cxd4 13. Nxd4 
-Nxd4 14. Bxd4 Qg5 15. g3 Rc8 16. f4 Qg6 17. Qxb5 Bc6 18. Qe2 Be7 19. a4 
-O-O 20. a5 f6 21. exf6 Bxf6 22. Bxf6 Rxf6 23. b4 Rxf4 24. Qd2 Rf3 25. 
-Rf1 Rxf1+ 26. Kxf1 Qf5+ 27. Qf4 Qd3+ 28. Ke1 Rf8 29. Qxf8+ Kxf8 30. a6 
-Qd4 31. Ke2 Qxa1 32. Nd2 Qxa6+ 33. Ke3 Qa3+ 0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.01.??"]
-[Round "20"]
-[White "Mitchell, Ian"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[WhiteElo "1660"]
-
-1. e4 e5 2. f4 exf4 3. Nf3 Nc6 4. d4 Nf6 5. Bd3 d5 6. e5 Ne4 7. O-O g5 
-8. c3 Qe7 9. Nfd2 Bf5 10. Qe2 Nxd2 11. Nxd2 Bxd3 12. Qxd3 O-O-O 13. a4 
-Rg8 14. a5 a6 15. b4 h6 16. b5 Nb8 17. Nb3 axb5 18. Qxb5 Qd7 19. Qd3 f6 
-20. exf6 Bd6 21. Bd2 Qg4 22. a6 Nxa6 23. Rxa6 bxa6 24. Qxa6+ Kd7 25. 
-Qb5+ Ke6 26. c4 f3 27. Rxf3 Rb8 28. Qxd5+ Kd7 29. Nc5+ Kd8 30. Qxg8+
-1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.02.??"]
-[Round "21"]
-[White "Gill, Andy"]
-[Black "Burtwistle, Paul"]
-[Result "0-1"]
-
-1. e4 c5 2. Nf3 e6 3. Be2 Nc6 4. O-O Nf6 5. Nc3 d5 6. e5 Nd7 7. Re1 
-Ndxe5 8. Nxe5 Nxe5 9. Bb5+ Nc6 10. d4 a6 11. Bxc6+ bxc6 12. Be3 cxd4 
-13. Bxd4 c5 14. Be5 Bb7 15. Qd2 f6 16. Bc7 Qxc7 17. Rxe6+ Kf7 18. Rae1 
-d4 19. Nd1 Bd6 20. f4 Rhe8 21. f5 Bd5 22. Rxe8 Rxe8 23. c3 Rxe1+ 24. 
-Qxe1 Bxh2+ 25. Kh1 Be5 26. cxd4 cxd4 27. Qe2 Qc4 28. Qh5+ Kf8 29. Kg1 
-Qc2 0-1
-
-[Site "Dunfermline Club Knockout"]
-[Date "1994.02.??"]
-[Round "22"]
-[White "Gill, Andy"]
-[Black "O'Neill, Jim"]
-[Result "0-1"]
-[BlackElo "1875"]
-
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Bd3 a6 6. O-O e5 7. Nf3 
-Bg4 8. Nc3 Nbd7 9. Re1 Rc8 10. Be3 b5 11. Nd5 Nxd5 12. exd5 Nf6 13. Bg5 
-Be7 14. Bxf6 Bxf6 15. Be4 O-O 16. c3 Bh4 17. Qc2 f5 18. Nxh4 Qxh4 19. 
-g3 Qh5 20. Bg2 Rf6 21. f3 Bxf3 22. Bxf3 Qxf3 23. Rad1 f4 24. gxf4 Rg6+
-0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.02.??"]
-[Round "23"]
-[White "Gill, Andy"]
-[Black "Bell, Bill"]
-[Result "1-0"]
-
-1. e4 e6 2. d4 d5 3. Nf3 dxe4 4. Nfd2 Qxd4 5. c3 Qd5 6. Be2 e3 7. Nf3 
-Qxd1+ 8. Bxd1 exf2+ 9. Kxf2 Nc6 10. Be3 Bd7 11. Re1 h6 12. Nbd2 O-O-O 
-13. Ba4 Kb8 14. Rad1 Bd6 15. b4 a6 16. Nc4 Be7 17. Nfe5 Be8 18. Rxd8+ 
-Bxd8 19. Bxc6 Bxc6 20. Nxf7 Rh7 21. Nxd8 Bd5 22. Nd2 g5 23. Rd1 Kc8 
-24. Nb3 Rd7 25. Nxb7 Bxb7 26. Rxd7 Kxd7 27. Nc5+ Kc6 28. Nxe6 Nf6 29. 
-Nd8+ Kd7 30. Nxb7 Ne4+ 31. Kf3 Nxc3 32. Nc5+ Kc6 33. Nxa6 Nxa2 34. Bd2 
-Kb6 35. Nc5 Kc6 36. Nd3 Kb5 37. Ke4 Kc4 38. g3 Kb3 39. h4 gxh4 40. gxh4 
-Nc3+ 41. Bxc3 Kxc3 42. h5 Kc4 43. Ne5+ Kxb4 44. Kd5 c5 45. Nd3+ Kb5 
-46. Nxc5 Kb6 47. Ne6 Kb7 48. Nf8 Kc7 49. Ke6 Kd8 50. Kf7 Kc8 51. Kg6 
-Kd8 52. Kxh6 Ke8 53. Kg7 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.02.??"]
-[Round "24"]
-[White "MacArthur, John"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[WhiteElo "1725"]
-
-1. d4 e6 2. Nf3 Nf6 3. c4 d5 4. Nc3 Nc6 5. e3 Be7 6. Be2 O-O 7. O-O Qd6 
-8. c5 Qd7 9. Ne5 Nxe5 10. dxe5 Ne4 11. Nxe4 dxe4 12. Qc2 Qc6 13. b4 Rd8 
-14. Bb2 a5 15. a3 axb4 16. axb4 Rxa1 17. Rxa1 b6 18. Bd4 bxc5 19. bxc5 
-Bb7 20. Ra5 Ra8 21. Bb5 Qd5 22. Qa4 Rxa5 23. Qxa5 Bxc5 24. Qxc7 Bf8 
-25. Be8 h6 26. Qxf7+ Kh7 27. Qxf8 Bc6 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.02.??"]
-[Round "25"]
-[White "Sneddon, Ian"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[WhiteElo "1685"]
-
-1. c4 e5 2. Nc3 Nf6 3. Nf3 Nc6 4. g3 d5 5. cxd5 Nxd5 6. Bg2 Be6 7. O-O 
-Bb4 8. Ne4 Qd7 9. d4 exd4 10. Nxd4 O-O-O 11. Nxe6 Qxe6 12. Qc2 h6 13. 
-Rd1 f5 14. Nc5 Bxc5 15. Qxc5 Nde7 16. Be3 Rxd1+ 17. Rxd1 Rd8 18. Rxd8+ 
-Kxd8 19. b3 a6 20. Qc3 Qe5 21. Qxe5 Nxe5 22. Bxb7 N7c6 23. Bf4 Na5 24. 
-Bxe5 Nxb7 25. Bxg7 h5 26. Kg2 Nd6 27. f3 Ne8 28. Be5 c6 29. Kh3 Ke7 
-30. Kh4 Nf6 31. Bxf6+ Kxf6 32. Kxh5 c5 33. g4 f4 34. g5+ Kg7 35. Kg4
-1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.03.??"]
-[Round "26"]
-[White "Gill, Andy"]
-[Black "Connally, Paul"]
-[Result "0-1"]
-[ECO "B70"]
-
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 g6 5. Nc3 Nf6 6. Bd3 Bg7 7. O-O 
-O-O 8. f4 Nc6 9. Nxc6 bxc6 10. Kh1 Rb8 11. Qe1 Ng4 12. h3 Nf6 13. b3 e5 
-14. fxe5 Nh5 15. Bb2 dxe5 16. Rf3 a5 17. g4 Nf4 18. Rd1 Qg5 19. Bc1 
-Bxg4 20. Bxf4 Bxf3+ 0-1
-
-[Site "Glenrothes Congress"]
-[Date "1994.03.??"]
-[Round "27"]
-[White "Hunt, Tom"]
-[Black "Gill, Andy"]
-[Result "1/2-1/2"]
-
-1. Nf3 Nc6 2. g3 e5 3. Nc3 d5 4. d3 Be6 5. Bg2 Qd7 6. Ng5 d4 7. Nce4 
-Bf5 8. a3 Be7 9. O-O Bxg5 10. Nxg5 f6 11. Ne4 Bh3 12. Nc5 Qc8 13. Bxh3 
-Qxh3 14. Nxb7 Rb8 15. Nc5 h5 16. e4 g5 17. Qf3 g4 18. Qf5 Kf7 19. Bg5 
-Nce7 20. Qe6+ Kg6 21. f4 exf4 22. Rxf4 Kxg5 23. Raf1 h4 24. Qf7 hxg3 
-25. Ne6+ Kh4 26. hxg3+ Qxg3+ 1/2-1/2
-
-[Site "Glenrothes Congress"]
-[Date "1994.03.??"]
-[Round "28"]
-[White "Gill, Andy"]
-[Black "Husband, Dan"]
-[Result "1-0"]
-
-1. e4 c5 2. Nf3 Nc6 3. d4 Nxd4 4. Nxd4 cxd4 5. Qxd4 e6 6. Nc3 Qb6 7. 
-Qxb6 axb6 8. Bb5 Bc5 9. O-O Nf6 10. Be3 O-O 11. Rfe1 d6 12. a4 Bd7 13. 
-Bg5 Bc6 14. Bxf6 gxf6 15. Rad1 Kh8 16. Rd3 Rad8 17. Rh3 Rg8 18. Bd3 Rg7 
-19. Nb5 Bxb5 20. axb5 Rdg8 21. Rg3 Rxg3 22. hxg3 h6 23. Kf1 Kg7 24. c3 
-d5 25. exd5 exd5 26. Ra1 d4 27. Ra7 dxc3 28. bxc3 Rd8 29. Be4 Rd1+ 30. 
-Ke2 Rc1 31. Rxb7 Rxc3 32. Kf1 Rb3 33. Rxf7+ Kh8 34. Rxf6 Rxb5 35. Rxh6+ 
-Kg7 36. Rg6+ Kh7 37. Rxb6+ 1-0
-
-[Site "Glenrothes Congress"]
-[Date "1994.03.??"]
-[Round "29"]
-[White "Chance, Keith"]
-[Black "Gill, Andy"]
-[Result "1/2-1/2"]
-
-1. Nf3 Nc6 2. e4 e5 3. d4 exd4 4. Nxd4 d6 5. Nxc6 bxc6 6. Bd3 Bb7 7. 
-O-O Nf6 8. Re1 Be7 9. e5 dxe5 10. Rxe5 O-O 11. h3 Re8 12. Re1 Qd7 13. 
-Bg5 Rad8 14. Bxf6 Bxf6 15. Rxe8+ Qxe8 16. Nc3 Ba6 17. Qe1 Qxe1+ 18. 
-Rxe1 Bxd3 19. cxd3 g6 20. Rd1 Rb8 21. Ne4 Bxb2 22. Rb1 a5 23. Nc3 Rb4 
-24. Nd1 Ba3 25. Rxb4 Bxb4 26. Kf1 f5 27. Nb2 Kf7 28. Nc4 Ke6 29. Ke2 
-Kd5 30. a3 Bc5 31. Nxa5 Bxa3 32. Nc4 Bc5 33. f3 h5 34. g4 hxg4 35. hxg4 
-fxg4 36. fxg4 Ke6 37. Kf3 Bd6 38. Ke4 g5 39. Na5 c5 40. Nc4 Bf4 41. Na5 
-Bd2 42. Nc4 Bb4 43. Ne5 Bd2 44. Nf3 Bc1 45. Ne5 Bf4 46. Ng6 Bg3 47. 
-Nf8+ Kd6 48. Nh7 Bf4 49. Kf5 Kd5 50. Nxg5 Bxg5 51. Kxg5 Kd4 52. Kf5 
-Kxd3 53. g5 c4 54. g6 c3 55. g7 c2 56. g8=Q c1=Q 57. Qd5+ Ke2 58. Qg2+ 
-Kd1 59. Qg1+ 1/2-1/2
-
-[Site "Glenrothes Congress"]
-[Date "1994.03.??"]
-[Round "30"]
-[White "Gill, Andy"]
-[Black "King, Jim"]
-[Result "1/2-1/2"]
-
-1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 d6 5. Bb5 Qc7 6. O-O a6 7. Ba4 
-b5 8. Bb3 Nf6 9. Re1 e6 10. Bg5 Be7 11. c3 O-O 12. Nd2 Bb7 13. Qe2 Rfe8 
-14. Rac1 d5 15. Bc2 Rac8 16. e5 Nd7 17. Bxe7 Rxe7 18. N2f3 h6 19. Qd3 
-g6 20. Qe3 Kg7 21. Nh4 Ncxe5 22. b3 Qxc3 23. Qxc3 Rxc3 24. Bb1 b4 25. 
-Rxc3 bxc3 26. Rc1 g5 27. Nhf3 Nxf3+ 28. Nxf3 g4 29. Nd4 e5 30. Nf5+ Kf6 
-31. Nxe7 Kxe7 32. Rxc3 Kd6 33. h3 Nf6 34. hxg4 Nxg4 35. Bf5 Nf6 36. Bc8 
-d4 37. Rc4 Bd5 38. Rc2 a5 39. f3 Nh5 40. Ba6 Nf4 41. Rd2 f6 42. Bd3 Bc6 
-43. Kf2 h5 44. g3 Ne6 45. a4 Be8 46. Bb5 Bg6 1/2-1/2
-
-[Site "Glenrothes Congress"]
-[Date "1994.03.??"]
-[Round "31"]
-[White "Gourley, R."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-
-1. Nf3 Nc6 2. d4 e6 3. c4 d5 4. Nc3 Bb4 5. e3 Nf6 6. Bd2 O-O 7. Ne5 
-Nxe5 8. dxe5 Ne4 9. Nxe4 dxe4 10. Bxb4 c5 11. Bxc5 Qa5+ 12. b4 Rd8 13. 
-bxa5 Rxd1+ 14. Rxd1 h6 15. Rd8+ Kh7 16. Be7 b6 17. axb6 axb6 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.03.??"]
-[Round "32"]
-[White "Gill, Andy"]
-[Black "Glynis, Grant"]
-[Result "1-0"]
-
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 Nc6 7. Nxc6 
-bxc6 8. Be3 e6 9. O-O Be7 10. Bb3 O-O 11. Qe2 Bb7 12. Rad1 Qc7 13. f4 
-e5 14. Kh1 Rfd8 15. Qf3 Qc8 16. fxe5 dxe5 17. Qg3 Rxd1 18. Nxd1 Qg4 
-19. Qxe5 Qxe4 20. Qxe4 Nxe4 21. Rxf7 Nd6 22. Rxe7+ Kh8 23. Re5 Rf8 24. 
-Kg1 h6 25. Bc5 Rf6 26. c3 a5 27. g3 Ba6 28. Bc2 g5 29. Bd4 Kg8 30. Rxa5 
-Rf1+ 31. Kg2 Rf8 32. Rxa6 Nc4 33. Rxc6 Na5 34. Rxh6 Rf7 35. Rh8# 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.03.??"]
-[Round "33"]
-[White "Welshman, Alistair"]
-[Black "Gill, Andy"]
-[Result "0-1"]
-[ECO "B20"]
-
-1. e4 c5 2. Bc4 d6 3. Nc3 Nf6 4. Nf3 e6 5. O-O Be7 6. d3 O-O 7. Bg5 Nc6 
-8. Bxf6 Bxf6 9. Bb5 Bd7 10. Bxc6 Bxc6 11. Qe2 Re8 12. Rae1 Bxc3 13. 
-bxc3 Qa5 14. e5 d5 15. d4 Bb5 16. Qe3 Bxf1 17. Rxf1 cxd4 18. Qxd4 Rac8 
-19. Qb4 Qxb4 20. cxb4 Rxc2 21. Ra1 Rec8 22. Kf1 Rc1+ 23. Rxc1 Rxc1+ 
-24. Ke2 Rc2+ 25. Nd2 Rxa2 26. g4 Rb2 0-1
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.03.??"]
-[Round "34"]
-[White "Taylor, Robin"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "C02"]
-[WhiteElo "1610"]
-
-1. d4 e6 2. e4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 Bd7 6. Bf4 cxd4 7. cxd4 
-Bb4+ 8. Bd2 Bxd2+ 9. Qxd2 Nge7 10. Nc3 a6 11. a3 Qc7 12. Bd3 O-O-O 13. 
-O-O Rdf8 14. b4 f6 15. b5 Nxd4 16. Nxd4 Qxe5 17. bxa6 Qxd4 18. axb7+ 
-Kb8 19. Ne2 Qa7 20. Qb4 Nf5 21. Bxf5 exf5 22. Qd6+ Kxb7 23. Rab1+ Kc8 
-24. Rfc1+ Kd8 25. Rb8+ Qxb8 26. Qxb8+ Ke7 27. Qb4+ Kf7 28. f4 Rc8 29. 
-Rxc8 Rxc8 30. Qd6 Be6 31. Nd4 Rc1+ 32. Kf2 Rd1 33. Qxe6+ Kf8 34. Nxf5 
-Rd2+ 35. Ke3 1-0
-
-[Site "Dunfermline C vs Stirling A"]
-[Date "1994.03.??"]
-[Round "35"]
-[White "Smith, Steve"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "B92"]
-[WhiteElo "1745"]
-
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be2 e5 7. Nb3 
-Be7 8. O-O O-O 9. a4 Be6 10. f4 Bxb3 11. cxb3 Nc6 12. Be3 Qd7 13. Bc4 
-Rad8 14. f5 Kh8 15. Qf3 Nb4 16. Rfd1 Nc2 17. Rac1 Nxe3 18. Qxe3 Qc6 
-19. Nd5 Nxd5 20. Bxd5 Qd7 21. Qb6 Rb8 22. Rc7 Bd8 23. Rxd7 Bxb6+ 24. 
-Kf1 f6 25. Bxb7 Bd4 26. Rc1 Bxb2 27. Rcc7 Rg8 28. Bxa6 h5 29. Bc4 Rgc8 
-30. Rxg7 Rxc7 31. Rxc7 Bd4 32. Rf7 Rg8 33. Rxf6 Rg4 34. Bd5 Rf4+ 35. 
-Ke1 Bc3+ 36. Ke2 Bd4 37. Rh6+ Kg7 38. Rxh5 Rf2+ 39. Kd3 Rxg2 40. Kc4 
-Bg1 41. h4 Rc2+ 42. Kd3 Rg2 43. Rg5+ Rxg5 44. hxg5 Bb6 45. Kc4 Bd8 46. 
-f6+ Kg6 47. f7 Be7 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.04.??"]
-[Round "36"]
-[White "Gill, Andy"]
-[Black "Bill, Phillips"]
-[Result "0-1"]
-[ECO "C10"]
-
-1. e4 e6 2. d4 d5 3. Nc3 c5 4. e5 Nc6 5. Nf3 Qb6 6. Bb5 Bd7 7. Bxc6 
-Bxc6 8. O-O Ne7 9. dxc5 Qxc5 10. Be3 Qa5 11. Qd3 Nf5 12. Nd4 Nxe3 13. 
-Nxc6 bxc6 14. Qxe3 Bc5 15. Qd3 O-O 16. a3 Qc7 17. b4 Bb6 18. Rfe1 a6 
-19. Na4 Rfb8 20. Nxb6 Rxb6 21. c4 dxc4 22. Qxc4 Rb5 23. Qe4 Rd5 24. 
-Rad1 Rad8 25. Rxd5 cxd5 26. Qd4 Rc8 27. f4 g6 28. Re3 h5 29. Kf2 Qc2+ 
-30. Kf3 Rc4 31. Qd3 Qc1 32. Qe2 d4 33. Rd3 Rc3 34. Ke4 Rxa3 35. Rxa3 
-Qxa3 36. Qc4 Qe3# 0-1
-
-[Site "Edinburgh Congress"]
-[Date "1994.04.??"]
-[Round "37"]
-[White "Gill, Andy"]
-[Black "Watt, Andrew"]
-[Result "0-1"]
-[ECO "C97"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 
-8. c3 O-O 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. b4 cxb4 13. cxb4 Nc4 14. 
-Nbd2 Bb7 15. Nxc4 Qxc4 16. dxe5 dxe5 17. a3 Rac8 18. Bd3 Qc3 19. Bg5 
-Rfd8 20. Re3 Bxe4 21. Rc1 Qxc1 22. Qxc1 Rxc1+ 23. Re1 Rxe1+ 24. Nxe1 
-Bxd3 25. Nf3 Be4 26. Nxe5 Rd1+ 27. Kh2 Bd6 28. f4 h6 29. Bh4 g5 30. Bg3 
-Bxe5 31. fxe5 Nh5 32. e6 Nxg3 33. e7 Nf1+ 34. Kg1 Bc6 35. Kf2 f6 36. 
-Ke2 Ra1 37. Kd3 Kf7 0-1
-
-[Site "Edinburgh Congress"]
-[Date "1994.04.??"]
-[Round "38"]
-[White "Milne, Jake"]
-[Black "Gill, Andy"]
-[Result "0-1"]
-[ECO "B50"]
-
-1. e4 c5 2. Nf3 d6 3. Bc4 e6 4. d3 Nf6 5. a3 Nc6 6. Nc3 Be7 7. O-O O-O 
-8. Be3 b6 9. h3 Bb7 10. Ne2 d5 11. exd5 exd5 12. Ba2 Re8 13. c3 Qc7 
-14. Bf4 Bd6 15. Bxd6 Qxd6 16. d4 cxd4 17. Nexd4 Nxd4 18. Nxd4 Rad8 19. 
-Qd2 Ba6 20. Qg5 Re5 21. Nf5 Rxf5 22. Qxf5 Bxf1 23. Rxf1 g6 24. Qf3 Kg7 
-25. Rd1 Qe5 26. g3 a5 27. Kg2 h5 28. h4 Rd6 29. Bb1 d4 30. Qd3 Qd5+ 
-31. Qf3 Qb3 32. Qe2 Qd5+ 33. f3 Qe6 34. Qxe6 Rxe6 35. Be4 dxc3 36. bxc3 
-Nxe4 37. fxe4 Rxe4 38. Rd6 Re2+ 39. Kf3 Rb2 40. Rd3 a4 41. Ke4 f5+ 42. 
-Kd5 Re2 43. c4 Re8 44. Kc6 Rc8+ 45. Kxb6 Rxc4 46. Kb5 Rg4 47. Rd7+ Kf6 
-48. Ra7 f4 49. gxf4 Rxf4 50. Rxa4 Rxa4 51. Kxa4 g5 52. hxg5+ Kxg5 53. 
-Kb5 h4 54. a4 h3 55. a5 h2 56. a6 h1=Q 57. Kb6 Qb1+ 58. Ka7 Kf5 59. Ka8 
-Qe4+ 60. Kb8 Qe8+ 61. Kb7 Qd7+ 62. Kb6 Qd8+ 63. Kb7 Qd5+ 64. Kb6 Qa8 
-65. Ka5 Ke5 66. Kb6 Kd5 67. Ka5 Kc5 68. Ka4 Qxa6+ 69. Kb3 Qc4+ 70. Ka3 
-Qb5 71. Ka2 Kc4 72. Ka1 Kc3 0-1
-
-[Site "Edinburgh Congress"]
-[Date "1994.04.??"]
-[Round "39"]
-[White "Gill, Andy"]
-[Black "Bourke, John"]
-[Result "0-1"]
-[ECO "C54"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Bd2 
-Nxe4 8. Bxb4 Nxb4 9. Bxf7+ Kxf7 10. Qb3+ d5 11. Qxb4 Re8 12. O-O Kg8 
-13. Nc3 b6 14. Rfe1 Bf5 15. Qb3 c6 16. Rac1 Qd6 17. Re3 Nxc3 18. Qxc3 
-Rxe3 19. Qxe3 Rc8 20. Re1 h6 21. Qe7 Qxe7 22. Rxe7 a5 23. Rb7 b5 24. 
-Ne5 c5 25. Rxb5 cxd4 26. f4 Be4 27. Rxa5 Rc1+ 28. Kf2 Rc2+ 29. Kg3 
-Rxg2+ 30. Kh3 Rxb2 31. Ra3 Rd2 32. Kg3 Rg2+ 33. Kh3 Rd2 34. Kg3 d3 35. 
-Nf3 Rb2 36. h4 d2 37. Nxd2 Rxd2 38. Kg4 Rd3 39. Rxd3 Bxd3 40. Kf3 Bc4 
-41. a4 Kf7 42. Ke3 Ke6 43. Kd4 Kf5 44. a5 Kxf4 45. a6 Bxa6 46. Kxd5 Kg4 
-47. Ke6 Kxh4 48. Kf7 g5 0-1
-
-[Site "Edinburgh Congress"]
-[Date "1994.04.??"]
-[Round "40"]
-[White "Gill, Andy"]
-[Black "King, David"]
-[Result "1-0"]
-[ECO "C70"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 5. Bb3 Bc5 6. O-O Nge7 7. c3 d6 
-8. d4 exd4 9. cxd4 Ba7 10. Be3 Na5 11. Bc2 O-O 12. Nbd2 f5 13. Bg5 Qe8 
-14. Re1 h6 15. Bxe7 Qxe7 16. exf5 Qf6 17. Be4 Bb7 18. Bxb7 Nxb7 19. 
-Qb3+ Kh8 20. Qd5 Rab8 21. Rac1 Bb6 22. g4 Nd8 23. Ne4 Qf7 24. Qxf7 Rxf7 
-25. h3 {At this point the score sheet goes wrong. Black eventually
-looses on time!} 1-0
-
-[Site "Edinburgh Congress"]
-[Date "1994.04.??"]
-[Round "41"]
-[White "Tait, C."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "D20"]
-
-1. d4 d5 2. c4 dxc4 3. e4 c6 4. Bxc4 e6 ( 4... Nf6 5. Nc3 e5 6. Be3 exd4
-7. Bxd4 Bd6 8. f3 { Score: 0.22 } ) 5. Nf3 Bb4+ ( 5... Nf6 6. Qe2 Bb4 7. Bd2
-Qb6 8. Nc3 O-O 9. O-O Nbd7 { Score: 0.25 } ) 6. Bd2 Bxd2+ 7. Qxd2 ( 7. Nbxd2
-Nf6 8. O-O O-O 9. Rc1 Nbd7 10. Qe2 c5 11. Bd3 { Score: 0.41 } ) 7... Nf6 8. Nc3
-O-O ( 8... Nbd7 9. O-O O-O 10. Rad1 Qe7 11. Rfe1 e5 { Score: 0.38 } ) 9. O-O b6
-10. e5 ( 10. Rac1 Bb7 11. Rfd1 c5 12. dxc5 Qxd2 13. Rxd2 bxc5 { Score: 0.28 } )
-10... Nfd7 ( 10... Nd5 11. Rfd1 Ba6 12. Bxa6 Nxa6 13. Rac1 Nac7 14. Nxd5 cxd5 {
-Score: 0.28 } ) 11. Rfd1 Ba6 ( 11... Bb7 12. Ne4 c5 13. d5 b5 14. Bxb5 Bxd5
-15. Qe3 Qe7 { Score: 0.34 } ) 12. Bb3 ( 12. Bxa6 Nxa6 13. Rac1 Qe7 14. Ne4 c5
-15. Qe2 Nb4 16. dxc5 { Score: 0.34 } ) 12... Re8 ( 12... h6 13. Rac1 Qe7
-14. Ne4 Rd8 15. Nd6 Nf6 16. Qe3 { Score: 0.31 } ) 13. Ne4 c5 ( 13... h6 14. Nd6
-Re7 15. Rac1 c5 16. Bc2 Nc6 17. Be4 Qc7 { Score: 0.44 } ) 14. Nd6 ( 14. dxc5
-Bb7 15. Qe3 Re7 16. Nd6 Bc6 17. Ne4 bxc5 18. Nxc5 { Score: 1.25 } ) 14... Rf8 (
-14... Re7 15. Nxf7 Rxf7 16. Bxe6 cxd4 17. Bd5 Nc6 18. Bxc6 { Score: 0.44 } )
-15. d5 b5 ( 15... Qe7 16. Nxf7 c4 17. dxe6 Nxe5 18. N3xe5 cxb3 19. Qd5 { Score:
-1.06 } ) 16. dxe6 fxe6 ( 16... c4 17. Nxf7 Qb6 18. exd7 Nxd7 19. Qxd7 Rxf7
-20. Qd5 { Score: 3.75 } ) 17. Bxe6+ Kh8 18. Nf7+ ( 18. Qd5 Qe7 19. Nf7 Rxf7
-20. Bxf7 h6 { Score: 4.56 } ) 18... Rxf7 19. Bxf7 Nc6 ( 19... Bb7 20. Ng5 h6
-21. Bd5 { Score: 3.03 } ) 20. e6 ( 20. Qxd7 Nd4 21. Qg4 Qe7 22. Nxd4 Qxf7
-23. e6 Qf6 { Score: 5.84 } ) 20... Qe7 ( 20... Nf6 21. Rac1 c4 22. b3 Qxd2
-23. Rxd2 Rd8 24. Rxd8 Nxd8 { Score: 3.06 } ) 21. Qxd7 Bc8 ( 21... Bb7 22. Qxe7
-Nxe7 23. Rd7 Bxf3 24. gxf3 Nc6 25. e7 Nxe7 { Score: 7.41 } ) 22. Qxc6 (
-22. Qxe7 Bxe6 23. Qxe6 Nd4 24. Nxd4 cxd4 25. Rxd4 a6 { Score: 17.72 } )
-22... Rb8 ( 22... Bb7 23. Qd7 Qxd7 24. exd7 Rd8 25. Re1 g6 26. Re8 Kg7 { Score:
-10.66 } ) 23. Qe8+ ( 23. Qxc5 Bxe6 24. Qxe7 Bxf7 25. Qxa7 Rf8 26. Qxf7 Rc8 {
-Score: 18.22 } ) 23... Qxe8 24. Bxe8 Bb7 ( 24... Bxe6 25. Bd7 Bg8 26. Ne5 g6
-27. Rac1 c4 28. a4 bxa4 { Score: 7.88 } ) 25. Bf7 ( 25. Bxb5 Bxf3 26. gxf3 Kg8
-27. e7 Kf7 28. Rd8 Kxe7 29. Rxb8 { Score: 12.03 } ) 25... Bc6 ( 25... g5 26. e7
-Kg7 27. Rd8 Bc6 28. Rxb8 Kxf7 29. Ne5 Kxe7 { Score: 12.03 } ) 26. Rd2 ( 26. Ne5
-Bxg2 27. e7 g6 28. Kxg2 { Score: 15.75 } ) 1-0
-
-[Site "Dunfermline C vs Alloa"]
-[Date "1994.04.??"]
-[Round "42"]
-[White "Comrie, J."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "B50"]
-
-1. e4 c5 2. Nf3 d6 3. Bc4 e6 4. Nc3 Be7 5. d4 cxd4 6. Qxd4 Nf6 7. e5 
-dxe5 8. Qxd8+ Bxd8 9. Nxe5 O-O 10. O-O Nbd7 11. Nxd7 Bxd7 12. Be3 a6 
-13. a4 Ba5 14. Ne2 Bc6 15. Nd4 Nd5 16. Nxc6 bxc6 17. Bxd5 cxd5 18. c3 
-Rab8 19. b4 Bc7 20. Rfd1 Rfd8 21. Rac1 Bb6 22. Kf1 Bxe3 23. fxe3 f5 
-24. Rc2 g5 25. Kf2 Kf7 26. Kf3 Rdc8 27. g4 Rxb4 28. gxf5 Kf6 29. fxe6 
-Kxe6 30. Rd4 Rxd4 31. exd4 Rf8+ 32. Kg4 h6 33. Re2+ Kd6 34. Rb2 Rc8 
-35. Kh5 Rxc3 36. Rb6+ Rc6 37. Rxc6+ Kxc6 38. Kxh6 g4 39. Kg5 Kd6 40. 
-Kxg4 Ke6 41. Kg5 Ke7 42. h4 Kf7 43. h5 Kg7 44. Kf5 1-0
-
-[Site "Dunfermline Club Championship"]
-[Date "1994.04.??"]
-[Round "43"]
-[White "Gill, Andy"]
-[Black "Hunter, Scott"]
-[Result "1-0"]
-[ECO "C65"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. O-O O-O 6. Re1 d5 7. Be3 
-Bxe3 8. exd5 Qxd5 9. Bxc6 Qxc6 10. Rxe3 e4 11. dxe4 Nxe4 12. Nc3 Nxc3 
-13. Rxc3 Qd6 14. Qxd6 cxd6 15. Rd1 Re8 16. Rxd6 g5 17. g4 Bxg4 18. Nxg5 
-Re1+ 19. Kg2 Rae8 20. Rg3 f5 21. h3 Be2 22. Nf3+ Kf7 23. Nxe1 f4 24. 
-Rf3 Bxf3+ 25. Nxf3 Re2 26. Rd7+ Kf8 27. Rxb7 Rxc2 28. Rxa7 Rxb2 29. Ra4 
-Kf7 30. Rxf4+ Kg6 31. a4 h5 32. h4 Ra2 33. Kg3 Ra3 34. Rc4 Rd3 35. Kf4 
-Rd5 36. Ne5+ Kf6 37. Re4 Ra5 38. Nd7+ Kg6 39. f3 Rf5+ 40. Ke3 1-0
-
-[Site "Under 1500 Final"]
-[Date "1994.05.??"]
-[Round "44"]
-[White "Hepburn, James"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "B20"]
-
-1. e4 c5 2. Bc4 d6 3. d3 e6 4. Nc3 Nf6 5. Nf3 a6 6. Bd2 Nc6 7. O-O Be7 
-8. Re1 O-O 9. a3 e5 10. h3 b5 11. Bb3 Bb7 12. Nd5 Nxd5 13. Bxd5 Qd7 
-14. c3 Na5 15. b4 Bxd5 16. exd5 Nb7 17. Re4 f5 18. Re2 cxb4 19. axb4 
-Bf6 20. Qb3 a5 21. Rae1 axb4 22. cxb4 Rfe8 23. Bg5 Bxg5 24. Nxg5 Nd8 
-25. f4 Nf7 26. Nxf7 Qxf7 27. fxe5 dxe5 28. Rxe5 Rxe5 29. Rxe5 Ra1+ 30. 
-Kh2 g5 31. d4 Kg7 32. Qd3 Qd7 33. Rxf5 Qd6+ 34. Re5 Qxb4 35. Rxg5+ Kf7 
-36. Qxh7+ Kf6 37. Qh6+ Ke7 38. Rg7+ Kd8 39. Qh8+ 1-0
-
-
-[Site "East of Scotland Championship"]
-[Date "1994.05.??"]
-[Round "45"]
-[White "Heron, D."]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "D02"]
-[WhiteElo "1790"]
-
-1. Nf3 Nc6 2. d4 d5 3. Bf4 Bf5 4. e3 a6 5. c4 e6 6. Nc3 Nf6 7. a3 Qd7 
-8. b4 Bd6 9. Bxd6 Qxd6 10. Be2 O-O 11. O-O Ne4 12. Nxe4 Bxe4 13. Nd2 
-Bg6 14. Qb3 Ne7 15. c5 Qd7 16. a4 c6 17. b5 Nf5 18. Ra3 Rfe8 19. Qb2 
-Kh8 20. Rb3 Nh6 21. bxc6 bxc6 22. Rb7 Qc8 23. Nf3 Rb8 24. Bxa6 Rxb7 
-25. Qxb7 Qxb7 26. Bxb7 f6 27. Bxc6 Rb8 28. Bb5 Bc2 29. Rc1 Be4 30. Nd2 
-Bg6 31. Nb1 Ng8 32. Nc3 Ne7 33. a5 Nc8 34. Bd7 Bf5 35. Nxd5 exd5 36. 
-Bxf5 Ne7 37. Bd3 Nc6 38. Rb1 Rxb1+ 39. Bxb1 Nxa5 40. Ba2 1-0
-
-[Site "East of Scotland Chalengers"]
-[Date "1994.05.??"]
-[Round "46"]
-[White "Gill, Andy"]
-[Black "Falconer, W."]
-[Result "1/2-1/2"]
-[ECO "A15"]
-
-1. c4 Nf6 2. d3 e6 3. Nf3 d5 4. cxd5 Nxd5 5. a3 Bd6 6. e3 Nc6 7. Nbd2 
-O-O 8. Nc4 Bd7 9. Be2 b5 10. Nxd6 cxd6 11. O-O Rc8 12. Bd2 Qb6 13. Qb3 
-Ne5 14. Rac1 a6 15. Rc2 Rxc2 16. Qxc2 Rc8 17. Qb1 Nxf3+ 18. Bxf3 Bc6 
-19. Rc1 Qd8 20. Bxd5 Bxd5 21. Ba5 Qd7 22. Rxc8+ Qxc8 23. Bb4 Qc6 24. f3 
-Bb3 25. Qe1 Qc2 26. Qc3 Qxc3 27. Bxc3 d5 28. Kf2 f6 29. d4 1/2-1/2
-
-
-
-[Site "East of Scotland Chalengers"]
-[Date "1994.05.??"]
-[Round "47"]
-[White "Gill, Andy"]
-[Black "Pearson, Walter"]
-[Result "0-1"]
-[ECO "A20"]
-[BlackElo "1650"]
-
-1. c4 e5 2. d3 Ne7 3. Nf3 d6 4. e3 g6 5. Be2 Bg7 6. O-O O-O 7. Nbd2 Nd7 
-8. Nb3 b6 9. d4 exd4 10. Nfxd4 Bb7 0-1
-
-[Site "East of Scotland Chalengers"]
-[Date "1994.05.??"]
-[Round "48"]
-[White "Heatlie, Douglas"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "D61"]
-[WhiteElo "1650"]
-
-1. d4 e6 2. c4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e3 Nbd7 6. Qc2 O-O 7. Nf3 
-Re8 8. h4 Nb6 9. b3 dxc4 10. bxc4 Bd7 11. Bd3 g6 12. Bxf6 Bxf6 13. h5 
-Bxd4 14. exd4 Qf6 15. hxg6 fxg6 16. Ne4 Qg7 17. Nc5 Bc6 18. Ne5 Nd5 
-19. cxd5 exd5 20. O-O-O Rxe5 21. dxe5 Qxe5 22. g3 Qg5+ 23. Qd2 Qe5 24. 
-Nb3 Ba4 25. Qh6 Qc3+ 26. Bc2 Bxb3 27. Qxh7+ Kf8 28. Qh8+ 1-0
-
-[Site "Scottish Chess Minor"]
-[Date "1994.07.??"]
-[Round "49"]
-[White "Mill, Graham"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "B50"]
-
-1. e4 c5 2. Nf3 d6 3. Bc4 { This is an unusual way of opening, but is common at
-the Minor level. } 3... e6 4. Nc3 Nf6 5. d3 ( 5. O-O ) 5... Nc6 ( 5... d5
-6. Bb3 dxe4 7. Nxe4 Nxe4 8. dxe4 Qxd1+ 9. Kxd1 { = } ) 6. Bf4 ( 6. O-O Be7 )
-6... a6 7. O-O Be7 ( 7... Na5 8. Bb3 Nxb3 9. axb3 Be7 10. Re1 O-O 11. Qd2 {
-<sab> } ) 8. Re1 O-O { \ 4 I often find this sort of position when playing the
-sicilian, where white has the e file, pushes his pawn, and gains a winning
-advantage. } 9. e5 dxe5 10. Nxe5 Bd7 ( 10... Nxe5 ) 11. Ne4 ( 11. Bb3 { <saw> }
-) 11... Nxe5 12. Bxe5 Bc6 { \ 4 } ( 12... Nxe4 13. dxe4 b5 14. Bb3 Bc6 15. Qh5
-Re8 { = } ) 13. Bxf6 ( 13. Qf3 Nxe4 14. dxe4 b6 15. Rad1 Qe8 { <saw> } )
-13... Bxe4 $4 ( 13... Bxf6 14. Nxf6+ Qxf6 15. c3 b6 16. Qe2 { <sab> } )
-14. Bxe7 Qxe7 15. Rxe4 Rac8 16. f4 ( 16. a4 Qf6 17. c3 Rfd8 18. Qe2 h6 19. Re1
-{ <waw> } ) 16... b5 17. Bb3 Rc6 ( 17... a5 { and I might be able to stir up a
-queenside pawn charge. } ) 18. c4 ( 18. a4 { striking at the ambushing pawns. }
-) 18... Rd8 ( 18... Rd6 19. cxb5 axb5 20. a4 c4 ) 19. Qe2 ( 19. cxb5 axb5
-20. a4 bxa4 21. Raxa4 Rcd6 22. d4 cxd4 23. Rexd4 ) 19... Rd4 ( 19... b4 )
-20. Rxd4 ( 20. cxb5 axb5 21. a4 bxa4 22. Rxa4 Rd8 23. d4 cxd4 24. Rexd4 { All
-variations just win for white. } ) 20... cxd4 21. Re1 ( 21. cxb5 ) 21... Rc5
-22. Qe4 ( 22. Qf2 bxc4 23. Bxc4 Qd6 { Blacks score is rapidly going down. } )
-22... Rh5 ( 22... Qd7 23. Qa8+ Qc8 24. Qxc8+ Rxc8 25. g3 bxc4 26. dxc4 { a
-passed pawn for white! Blacks passed pawn will not live long. } ) 23. g4 (
-23. f5 Rh6 24. cxb5 axb5 { Totally won for white. } ) 23... Rh4 24. Qa8+ Qf8
-25. Qxf8+ Kxf8 { \ 4 } 26. h3 $2 ( 26. Bd1 Rh3 27. Be2 Ke7 28. Kg2 Re3 29. h3 Kd6
-{ Just a piece up. } ) 26... Rxh3 27. Bc2 Rg3+ 28. Kf2 Rxg4 29. Kf3 h5 (
-29... Rh4 30. Kg3 Rh6 31. Re4 Rg6+ 32. Kh3 Rh6+ 33. Kg2 { And black has drawing
-chances. } ) 30. Re4 ( 30. Re5 g6 31. Re4 Rh4 32. Rxd4 g5 { Black is only a
-pawn or so down. } ) 30... Ke7 31. Rxd4 ( 31. cxb5 axb5 32. Re5 g6 33. Rxb5 Kd6
-34. Ke4 ) 31... e5 ( 31... g5 32. cxb5 axb5 33. a4 e5 34. Re4 Rxf4+ 35. Rxf4
-exf4 { Blacks is a `pawn` down, with 3 connected passed pawns. Not so bad, but
-still winning for white. } ) 32. Re4 Rxf4+ 33. Rxf4 exf4 34. Kxf4 Kf6 35. c5
-Ke7 36. b4 f6 37. d4 g5+ 38. Kg3 h4+ 39. Kg4 Ke6 40. c6 Kd6 41. d5 Kc7 42. Be4
-Kd6 43. Bg2 Kc7 44. Bh3 Kd6 45. Kf5 Kc7 46. Kxf6 Kb6 47. Kxg5 { I finally
-resigned here. } 1-0
-
-[Site "Scottish Chess Minor"]
-[Date "1994.07.??"]
-[Round "50"]
-[White "Gill, Andy"]
-[Black "McMonigle, A."]
-[Result "1-0"]
-[ECO "C67"]
-
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 { \ 4 } 5. Re1 ( 5. d4 Be7 6. dxe5 O-O
-7. Be3 a6 { and white has the edge. } ) 5... d5 ( 5... Nd6 6. Bxc6 dxc6 7. Nxe5
-Be6 8. Nc3 Be7 9. Kh1 { <saw> } ) 6. Nxe5 ( 6. d3 { is a killer move. } )
-6... Qf6 7. Nf3 ( 7. Nxc6 bxc6 8. Qf3 Qg6 9. Bd3 Bf5 10. Bxe4 { <saw> } )
-7... Be7 8. d3 $1 Nd6 { \ 4 } ( 8... Nxf2 9. Kxf2 Bg4 10. Nbd2 O-O 11. Bxc6 bxc6
-{ <aw> } ) 9. Bxc6+ ( 9. Bg5 Qxb2 10. Bxc6+ bxc6 11. Rxe7+ Kf8 12. Nbd2 h6 {
-White is a couple of pawns up, but the tactices are hairy! } ) 9... bxc6 10. c3
-O-O { \ 4 } ( 10... h6 11. Be3 Nf5 12. Bf4 Rb8 13. Be5 Qg6 { <saw> } ) 11. Bg5
-Qg6 ( 11... Qxf3 12. Qxf3 Bxg5 13. b3 Bb7 14. Qg3 Bf6 { Is blacks best line. }
-) 12. Bxe7 Re8 13. Bxd6 Rxe1+ 14. Qxe1 Qxd6 15. Qe8+ Qf8 16. Qxf8+ ( 16. Qxc6
-Rb8 17. Qxc7 Rxb2 18. Qxa7 Bf5 19. Qd4 Qb8 20. Nfd2 { <waw> The proper
-continuation, and well winning for white. } ) 16... Kxf8 17. Ne5 ( 17. h3 {
-Still a <waw> } ) 17... Bf5 ( 17... c5 18. h3 f6 19. Nf3 { and white moving the
-knight was a waste of two tempi. } 19... Rb8 20. b3 Bf5 { <waw> } ) 18. d4 (
-18. Nd2 Re8 19. Ndf3 c5 20. g4 f6 21. Kg2 fxe5 22. gxf5 { <waw> } ) 18... Re8
-19. Nd2 Re6 { \ 4 } 20. Re1 ( 20. g4 Bxg4 21. Nxg4 Rg6 22. h3 h5 23. f3 hxg4
-24. hxg4 { <waw> what a cou. } ) 20... f6 21. Nd7+ Ke7 22. Rxe6+ Bxe6 23. Nc5
-Bf5 24. f3 ( 24. h3 h6 25. Kh2 Kd6 26. Nb7+ Ke7 27. g4 Bd3 { <waw> } )
-24... Bc8 25. g4 ( 25. Kf2 Kd6 26. f4 g6 27. Kf3 h6 28. g3 f5 ) 25... Kf7
-26. Kg2 ( 26. Kf2 Ke7 27. Ke3 Kd6 28. Kd3 h6 29. c4 dxc4+ 30. Nxc4+ { <waw>
-with a plan } ) 26... f5 27. Kg3 Kg6 28. Nd3 ( 28. gxf5+ Bxf5 29. Na6 Kf6
-30. h3 h6 31. Nxc7 { Attacking the weak backwards pawn. } ) 28... fxg4 { \ 4 } (
-28... Kf6 29. gxf5 Kxf5 30. Ne5 Bb7 { Score: 3.19 } ) 29. Ne5+ Kf6 30. Nxc6 a6
-31. fxg4 g5 32. h4 ( 32. Nb3 Bb7 33. Nb8 h6 34. Nc5 Bc8 35. b4 Kg6 36. Nbxa6 {
-Successfully ganing up on the `a` pawn. } ) 32... gxh4+ 33. Kxh4 Bd7 34. g5+ (
-34. Nb4 c6 35. Nxa6 h6 36. Kh5 Kg7 { Totally won. } ) 34... Kg7 35. Ne5 (
-35. Nb4 c6 36. Nxa6 h6 37. Nc5 Bf5 38. a4 Kg6 39. gxh6 { And either the 'a' or
-'b' pawn will queen. } ) 35... Be8 36. Nb3 Bg6 { At this point black resigned.
-} 1-0
-
-[Site "Scottish Chess Minor"]
-[Date "1994.07.??"]
-[Round "51"]
-[White "Swanson, Brian"]
-[Black "Gill, Andy"]
-[Result "1-0"]
-[ECO "B86"]
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 e6 ( 6... e5 7. Nf3
-Qc7 8. Bd5 Bg4 9. O-O Nxd5 10. Nxd5 { Is another line of the Sicilian. } )
-7. Bg5 ( 7. O-O Qc7 8. Qd3 e5 9. Nf3 Bg4 10. Bg5 { <saw>,0.25 } ) 7... Be7
-8. f4 b5 { \ 4 } ( 8... d5 9. Bxf6 Bxf6 10. exd5 Qc7 11. Be2 Qxf4 { <ab> } )
-9. Bd3 $2 ( 9. Bb3 h6 10. Bxf6 Bxf6 11. O-O Bxd4+ 12. Qxd4 { <sab> } ) 9... Bb7
-10. b4 ( 10. Qf3 Qb6 11. Nde2 d5 { = } ) 10... Nc6 11. Nf3 $2 ( 11. Nxc6 Bxc6
-12. O-O d5 13. exd5 Nxd5 14. Bxe7 Qxe7 { <sab> } ) 11... Nxb4 12. Qe2 O-O
-13. O-O ( 13. a3 Qc7 14. Qd2 { <ab>,by a pawn or so. } ) 13... Rc8 ( 13... Qc7
-14. Qd2 d5 15. Bxf6 Bxf6 { <ab> } ) 14. Nd1 d5 15. exd5 ( 15. e5 Ne4 16. Bxe7
-Qxe7 17. Bxe4 dxe4 18. Nd4 ) 15... Bxd5 16. Ne3 { \ 4 } 16... Bc5 ( 16... Bxa2
-17. Rad1 Nxd3 18. cxd3 Nd5 { <wab>,2+ pawns up, but getting a bit tactical. } )
-17. Kh1 Bxe3 18. Qxe3 Nxc2 19. Bxc2 Rxc2 20. a4 Ra2 ( 20... h6 { <wab>, just
-winning. } ) 21. Rxa2 Bxa2 22. axb5 ( 22. Ra1 Bd5 23. axb5 axb5 24. Rb1 Ng4 {
-<wab>, to or so pawns up. } ) 22... Bc4 ( 22... axb5 23. Ra1 Bd5 24. Ra7 h6 {
-<ab>, even with the rook on blacks 2nd. This rook should be able to get to 'b'
-pawn, though. } ) 23. Rc1 Bxb5 24. Ne5 { \ 4 } 24... Nd5 $2 { A bit wild. } (
-24... h6 25. Bxf6 Qxf6 26. Rc7 a5 27. Qc5 Be2 28. Qxa5 Qxf4 { <wab>, almost
-three pawns up, and threating the forced queen exchage on f1. } ) 25. Qg3 {
-Alarms bells !!!, the bishop is going to h6. Remember. } 25... f6 { I though I
-was going to win a piece for a pawn. } 26. Bh6 g6 $4 ( 26... Qe7 27. Nc6 Qc7
-28. Rc2 Ba4 29. Rc4 Nb6 { Black still leads (two pawns up), but the tactics are
-hairy. } ) 27. Bxf8 $2 ( 27. Nxg6 Kf7 28. Nxf8 Ke8 29. Nxe6 Qd7 30. Re1 {
-<waw>,5.47 } ) 27... fxe5 ( 27... Kxf8 28. Qh4 a5 29. g3 a4 { <sab>, but
-critically depending on the weak a pawn. } ) 28. Bh6 exf4 29. Qe1 { \ 4 } (
-29. Bxf4 Nxf4 30. Qxf4 a5 31. h3 g5 32. Qe5 { <aw> } ) 29... g5 $4 { My major
-blunder. } ( 29... Kf7 30. g3 f3 31. Qf2 Qf6 { <ab>, but tricky. } ) 30. Qxe6+
-Kh8 31. Rc8 { Mate is in a couple of moves. } 1-0
-
-[Site "Scottish Chess Minor"]
-[Date "1994.07.??"]
-[Round "52"]
-[White "Gill, Andy"]
-[Black "Thomson, Brian"]
-[Result "1-0"]
-[ECO "B54"]
-
-1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nc6 5. Bb5 Bd7 6. Nc3 ( 6. Nxc6 { Score:
-0.06 } ) 6... Nf6 ( 6... Nxd4 7. Qxd4 Bxb5 8. Nxb5 Qa5 9. Nc3 e5 10. Qd5 Qc7 {
-Score: -0.03 } ) 7. Bg5 h6 ( 7... Nxd4 8. Bxd7 Nxd7 9. Qxd4 e5 10. Qd2 Be7
-11. Be3 { Score: -0.03 } ) 8. Bh4 ( 8. Bxf6 exf6 9. f4 Nxd4 10. Bxd7 Qxd7
-11. Qxd4 Be7 { Score: 0.16 } ) 8... Qb6 ( 8... g5 9. Bg3 Nxd4 10. Qxd4 Bg7
-11. O-O O-O { Score: -0.22 } ) 9. Nxc6 ( 9. Bxf6 gxf6 10. Bxc6 bxc6 11. Na4 Qa5
-12. c3 Bg7 { Score: 0.06 } ) 9... bxc6 10. Bxf6 ( 10. Bd3 Qxb2 11. Bxf6 exf6
-12. Na4 Qd4 13. c3 { Score: -1.03 } ) 10... exf6 11. Ba4 ( 11. Bd3 Qxb2 12. Na4
-Qa3 13. c3 Be6 14. Qc2 O-O-O { Score: -1.31 } ) 11... Qc7 ( 11... Qxb2 12. Kd2
-Qb6 13. Qf3 Be6 14. e5 Qd4 { Score: -1.44 } ) 12. O-O Be7 13. Re1 ( 13. Rb1 O-O
-14. Qd3 Be6 15. f4 f5 { Score: -0.09 } ) 13... O-O 14. Qd4 ( 14. Bb3 { Score:
--0.09 } ) 14... Be6 ( 14... Rab8 15. b3 Be6 16. Rad1 Rb6 17. f4 Re8 { Score:
--0.16 } ) 15. Nd1 ( 15. f4 Rab8 16. Bb3 f5 17. e5 Bxb3 18. axb3 { Score: -0.16
-} ) 15... Qa5 ( 15... Rab8 16. Qc3 Rb6 17. Ne3 Qb7 18. f4 { Score: -0.09 } )
-16. Nc3 Qc7 ( 16... Rab8 17. b3 Qc7 18. Rad1 Rfe8 19. f4 Rb6 { Score: -0.13 } )
-17. Ne2 ( 17. Nd1 { Score: 0.00 } ) 17... Rab8 ( 17... Rfb8 18. Nf4 Rb6
-19. Nxe6 fxe6 20. Bb3 d5 21. exd5 cxd5 { Score: -0.06 } ) 18. b3 ( 18. Nf4 {
-Score: -0.13 } ) 18... a5 ( 18... f5 19. Rad1 fxe4 20. Qxe4 Bd5 21. Qd4 {
-Score: -0.41 } ) 19. Nf4 ( 19. Qc3 c5 20. Nd4 Rb7 21. Nc6 Ra8 22. Rad1 { Score:
-0.06 } ) 19... Bd7 ( 19... Rfc8 20. c4 Rd8 21. f3 Rd7 { Score: 0.00 } ) 20. Qd2
-( 20. Qc3 Rb7 21. a3 Re8 22. Nd3 Reb8 23. f4 { Score: -0.09 } ) 20... g5 (
-20... Rfe8 { Score: -0.09 } ) 21. Nh5 ( 21. Ne2 Rb7 22. Nd4 Re8 23. Qc3 c5
-24. Bxd7 Qxd7 { Score: 0.13 } ) 21... Qb6 ( 21... Bg4 22. Ng3 Rfe8 23. c4 Bf8
-24. f3 Be6 { Score: 0.13 } ) 22. Qc3 Qd8 23. Rad1 ( 23. a3 Rc8 24. Ng3 Re8
-25. Rad1 Bg4 26. Bxc6 Bxd1 27. Rxd1 { Score: 0.31 } ) 23... Bg4 24. Ng3 Bxd1
-25. Rxd1 c5 26. Nh5 ( 26. Nf5 h5 27. a3 Rb7 28. Qd3 Rb6 29. Qd2 { Score: -0.06
-} ) 26... Kh8 ( 26... Rb4 27. Ng3 Qa8 28. a3 Rb6 { Score: -0.75 } ) 27. Rd3 (
-27. Ng3 Rg8 28. Nf5 Bf8 29. Qd2 Qc7 { Score: -0.34 } ) 27... Rg8 ( 27... Rb4
-28. Ng3 c4 29. Rd5 cxb3 30. cxb3 Qb6 31. Bc6 { Score: -0.88 } ) 28. Rf3 (
-28. Ng3 Rg6 29. Nf5 Rb4 30. Bc6 Qc7 31. a3 Rb6 { Score: -0.81 } ) 28... Rg6 (
-28... d5 29. exd5 Qxd5 30. Re3 Qd1 31. Re1 Qd8 32. Ng3 { Score: -1.00 } )
-29. Bc6 ( 29. Rd3 Rb4 30. f3 c4 31. Re3 cxb3 32. cxb3 { Score: -0.97 } )
-29... Kg8 30. Bd5 ( 30. Ng3 Qc7 31. Nf5 Bf8 32. Bd5 Bg7 33. Rd3 Bh8 { Score:
--1.00 } ) 30... a4 31. Qc4 Qe8 32. Qd3 ( 32. Qc3 axb3 33. cxb3 Qd8 34. a4 Rb6
-35. Rd3 { Score: -0.78 } ) 32... Rb4 ( 32... Qb5 33. Ng3 axb3 34. Nf5 Bf8 {
-Score: -0.97 } ) 33. e5 ( 33. c3 Rb6 34. e5 Kf8 35. Nxf6 { Score: -0.25 } )
-33... dxe5 ( 33... Kh8 34. c3 Rh4 35. exf6 Bd8 36. Re3 Qd7 { Score: -0.22 } )
-34. Qxg6+ 1-0
-
-[Site "Scottish Chess Minor"]
-[Date "1994.07.??"]
-[Round "53"]
-[White "Navmann, M."]
-[Black "Gill, Andy"]
-[Result "1/2-1/2"]
-[ECO "B50"]
-
-1. e4 c5 2. Nf3 d6 3. Bc4 e6 ( 3... Nc6 { Score: 0.00 } ) 4. Nc3 a6 ( 4... Nf6
-5. d3 d5 6. Bb3 dxe4 7. Nxe4 Nxe4 8. dxe4 Qxd1 { Score: 0.00 } ) 5. a4 ( 5. d3
-Nc6 6. Bf4 Na5 7. e5 d5 8. Bg5 Ne7 { Score: 0.09 } ) 5... Nf6 6. d3 ( 6. d4 {
-Score: 0.06 } ) 6... Be7 ( 6... d5 7. Ba2 dxe4 8. Nxe4 Nxe4 9. dxe4 Qxd1
-10. Kxd1 { Score: 0.09 } ) 7. b3 ( 7. Bg5 h6 8. Bh4 d5 9. exd5 Nxd5 10. Nxd5
-exd5 { Score: 0.16 } ) 7... O-O ( 7... d5 8. exd5 exd5 9. Nxd5 Nxd5 10. O-O O-O
-{ Score: -1.59 } ) 8. d4 ( 8. Qe2 Nc6 9. O-O d5 10. exd5 exd5 { Score: 0.06 } )
-8... cxd4 ( 8... d5 9. exd5 exd5 10. Bd3 b6 11. O-O Nc6 { Score: -0.09 } )
-9. Nxd4 ( 9. Qxd4 { Score: -0.09 } ) 9... d5 ( 9... Qa5 10. Qd2 b5 11. Bd3 e5
-12. Nf3 Bg4 { Score: -0.16 } ) 10. exd5 exd5 11. Bd3 Re8 ( 11... Nc6 12. Nce2
-Nxd4 13. Nxd4 Bb4 14. Bd2 Qa5 15. Ne2 Bxd2 { Score: -0.22 } ) 12. O-O Bb4 (
-12... Nc6 13. Nce2 Bg4 14. f3 Bc5 15. c3 { Score: -0.03 } ) 13. Bd2 ( 13. Nce2
-Nc6 14. Bb2 Bg4 15. f3 Nxd4 16. Nxd4 { Score: 0.00 } ) 13... Qa5 ( 13... b6 {
-Score: -0.09 } ) 14. Nb1 Kh8 ( 14... Nc6 15. Bxb4 Nxb4 16. Re1 Bg4 17. Be2 Rad8
-{ Score: -0.09 } ) 15. Bxb4 Qxb4 16. c3 Qe7 ( 16... Qc5 17. Re1 Rxe1 18. Qxe1
-Nc6 19. Nf5 b6 { Score: 0.09 } ) 17. Nd2 ( 17. Ra2 Qc7 18. Re2 Rxe2 19. Qxe2
-Nc6 20. Rd1 Nxd4 21. cxd4 { Score: 0.09 } ) 17... Bg4 ( 17... Qc5 18. Qc2 Nc6
-19. N2f3 Nxd4 20. Nxd4 Ne4 { Score: 0.00 } ) 18. Qc1 ( 18. N2f3 Qc7 19. Qd2 Nc6
-20. Rfe1 Rad8 21. Rxe8 Rxe8 { Score: 0.00 } ) 18... Nc6 19. Nxc6 ( 19. Re1 Ne5
-20. Qc2 Qc7 21. c4 Nxd3 22. Qxd3 { Score: 0.03 } ) 19... bxc6 20. Re1 Qd7 (
-20... Qb7 21. Qc2 Rad8 22. h3 Bh5 23. c4 Rxe1 24. Rxe1 { Score: 0.03 } )
-21. Rxe8+ Qxe8 22. Qe1 ( 22. Qc2 c5 23. h3 Bh5 24. b4 c4 25. Bf5 { Score: 0.03
-} ) 22... a5 ( 22... Qd7 { Score: 0.09 } ) 23. h3 Bd7 ( 23... Bh5 24. g4 Bg6
-25. Bxg6 hxg6 26. Rd1 Rd8 27. Qxe8 Nxe8 { Score: 0.19 } ) 24. Nf3 ( 24. Rd1 Rb8
-25. c4 h6 26. Qxe8 Rxe8 27. cxd5 cxd5 { Score: 0.16 } ) 24... Qxe1+ ( 24... Rb8
-25. Bc2 c5 26. c4 Qxe1 27. Rxe1 d4 { Score: 0.16 } ) 25. Rxe1 Re8 ( 25... Rb8
-26. Bc2 g6 27. Re7 Kg7 28. Ne5 Be8 { Score: 0.44 } ) 26. Rxe8+ ( 26. Ne5 {
-Score: 0.53 } ) 26... Bxe8 27. c4 ( 27. g3 { Score: 0.28 } ) 27... h6 (
-27... g6 28. g3 Kg7 29. Kg2 h6 30. Ne5 d4 31. f4 c5 { Score: 0.13 } ) 28. Kf1 (
-28. g3 g6 29. Ne5 Kg7 30. Kg2 d4 31. Kf3 c5 { Score: 0.25 } ) 28... g6 29. Ke2
-( 29. cxd5 { Score: 0.31 } ) 29... Kg7 30. Ke3 ( 30. Ne5 { Score: 0.31 } )
-30... Nd7 ( 30... c5 31. Ne5 d4 32. Kd2 Bd7 33. Nxd7 Nxd7 34. Be4 Ne5 { Score:
-0.09 } ) 31. Kd4 ( 31. cxd5 cxd5 32. Kd4 Nf6 33. Ne5 Kf8 34. g3 Kg7 35. f4 {
-Score: 0.59 } ) 31... dxc4 32. Bxc4 ( 32. Kxc4 f5 33. Kc3 Bf7 34. g3 Nc5
-35. Bc2 Bd5 { Score: 0.16 } ) 32... Kf6 ( 32... f5 33. Ke3 Bf7 34. Bxf7 Kxf7
-35. Kf4 Ke6 36. Nd4 Kd5 { Score: -0.03 } ) 33. Bd3 ( 33. Nd2 Nb6 34. Ne4 Ke7
-35. Bd3 f5 36. Nc5 Bf7 { Score: 0.22 } ) 33... Ke6 34. Kc4 ( 34. Ke3 Nb6
-35. Nd4 Kd6 36. Kf3 Ke5 37. Ne2 f5 { Score: 0.09 } ) 34... f6 ( 34... f5 35. g4
-fxg4 36. hxg4 Ne5 37. Nxe5 Kxe5 38. Kc3 { Score: -0.13 } ) 1/2-1/2
-
-[Site "Grangemouth Congress"]
-[Date "1994.09.??"]
-[Round "54"]
-[White "Gill, Andy"]
-[Black "McKay, Stewart"]
-[Result "1-0"]
-[ECO "B01"]
-1. e4 d5 2. exd5 Nf6 3. Bb5+ Bd7 4. Bxd7+ Qxd7 5. Nf3 Nxd5
-6. O-O Nc6 7. Re1 e6 8. d3 g6 9. Bg5 Bg7 10. c3 Nf6 11. d4 h6 12. Bxf6 Bxf6
-13. d5 Rd8 14. Qd2 Qxd5 15. Qf4 Bg7 16. Qxc7 O-O 17. Qf4 g5 18. Qd2 Qf5 19. Qe3
-Rd3 20. Qe4 Qxe4 21. Rxe4 Rd1+ 22. Re1 Rfd8 23. h3 Ne5 24. Na3 Nxf3+ 25. gxf3
-R1d3 26. Kg2 a6 27. Rac1 b5 28. Re2 Bf8 29. Nc2 Bc5 30. Ne1 Rd2 31. Rxd2 Rxd2
-32. Rc2 Rd1 33. Kf1 Be7 34. a3 Bf6 35. Ke2 Rd5 36. Nd3 Rd8 37. Kd2 Rc8 38. Ke3
-Bg7 39. f4 Bf6 40. Ne5 Rc5 41. Nd7 gxf4+ 42. Kxf4 Bg5+ 43. Ke4 f5+ 44. Kf3 Rd5
-45. Nb8 Rd6 46. c4 bxc4 47. Rxc4 Rb6 48. Rb4 Rd6 49. Ra4 Rb6 50. Nxa6 Rxb2
-51. Nc7 Rb3+ 52. Kg2 Be7 53. Nxe6 Rxa3 54. Rxa3 Bxa3 55. Kg3 Kf7 56. Nd4 Kg6
-57. Kf4 Kh5 58. Nxf5 { And White won by queening the f pawn. } 1-0
-
-[Site "Grangemouth Minor Congress"]
-[Date "1994.09.??"]
-[Round "55"]
-[White "Shaughan, Harward"]
-[Black "Gill, Andy"]
-[Result "0-1"]
-[ECO "D02"]
-1. d4 e6 2. Bf4 d5 3. Nf3 Nf6 4. Nbd2 c5 5. e3 a6 6. c4 Nc6 7. Ne5 cxd4 8. Nxc6
-bxc6 9. exd4 Qb6 10. cxd5 cxd5 11. Qc2 Bd7 12. Be3 Bb4 13. a3 Bxd2+ 14. Qxd2
-O-O 15. Bd3 Rfc8 16. O-O Bb5 17. b3 Rc6 18. f3 Rac8 19. Rfc1 Bxd3 20. Rxc6 Rxc6
-21. Qxd3 Qc7 22. Bd2 h6 23. Rb1 Nh5 24. b4 Nf4 25. Bxf4 Qxf4 26. b5 Rc1+
-27. Rxc1 Qxc1+ 28. Kf2 Qb2+ 29. Kg3 Qxb5 30. Qxb5 axb5 31. Kf2 Kf8 32. Ke3 Ke7
-33. Kd3 Kd6 34. f4 f6 35. h4 e5 36. dxe5+ fxe5 37. f5 e4+ 38. Kd4 Ke7 39. g4
-Kf6 40. Ke3 g6 41. g5+ hxg5 42. hxg5+ Kxf5 0-1
-
-[Site "Grangemouth Minor Congress"]
-[Date "1994.09.??"]
-[Round "56"]
-[White "Gill, Andy"]
-[Black "Ridland, Lindsay"]
-[Result "1-0"]
-[ECO "C65"]
-1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Bc5 5. Re1 a6 (5... Ng4 6. Re2 O-O 
-7. d3 Nd4 8. Nxd4 Bxd4 9. Nd2 {<saw>,0.13 but a bit messy for white.}) 
-6. Ba4 (6. Bxc6 dxc6 7. h3 Qe7 8. d3 O-O 9. Bg5 h6 10. Bh4 {=, taking the
-exchange way out.}) 6... b5 7. Bb3 d6 {\ 4 We have now reached a main line
-of the Ruy Lopez.} 8. c3 (8. a4 Ng4 9. Re2 Bb7 10. axb5 axb5 {=, and very
-like Game 7 of the Short-Kasparov WC, where Kasparov as white scored a
-decisive victory.}) 8... Bg4 9. d3 h6 10. Be3 O-O (10... Bxe3 11. Rxe3 
-O-O 12. a4 b4 13. h3 Bh5 14. Nbd2 Rb8 {=}) 11. Bxc5 dxc5 12. Bc2 Qd7 
-13. Nbd2 (13. h3 Bh5 14. Nbd2 Rfd8 15. Nb3 Qd6 16. Qe2 Rab8 17. Red1 {
-Fritz is deperate to put h3, but I dont see why.}) 13... Nh5 {\ 4} (13... 
-Rad8 {is an idea.}) 14. Nb3 (14. h3 {<saw>,0.33 I now agree with this,
-because the knight block the h5 retreat square.}) 14... Nf4 {?} (14... 
-Qd6 15. h3 Be6 16. Ng5 Bxb3 17. axb3 Nf4 18. Nf3 {<sab>}) 15. Nxc5 Qc8 (
-15... Qe7 16. Nb3 Rfd8 17. h3 Be6 18. d4 Qf6 19. Rc1 exd4 {=}) 16. Re3 (
-16. b4 {White is just a pawn up.}) 16... Rd8 17. Qd2 Rd6 (17... Bxf3 {!} 
-18. Rxf3 Qg4 19. Rxf4 exf4 20. h3 Qh4 21. d4 {and black has equalised!}) 
-18. Bd1 {\ 4} 18... Nxg2 {?? Throws away a piece for a very temp.
-inititive.} (18... Rb8 19. d4 exd4 20. cxd4 Ne6 21. Nxe6 Qxe6 {and white
-is starting to push home his advantage.}) 19. Kxg2 Bh3+ 20. Kh1 Qg4 (
-20... Rg6 {is another idea, but the whole plan is conceptually flawed.}) 
-21. Ne1 Qg5 22. Qe2 Be6 23. Rg3 Qf6 24. Nxe6 {\ 4} (24. Nf3 Ne7 25. Nxe6 
-Qxe6 26. Bb3 Qf6 27. Rag1 {<waw>}) 24... Rxe6 (24... Qxe6 25. Bb3 Qe7 
-26. Bd5 Rad8 27. Nf3 R8d7 28. Rd1) 25. Qf3 {Crude plan of exchanging
-queens to avoid `acidents`.} (25. Bb3) 25... Qe7 26. Bb3 Rf6 27. Qe3 (27. 
-Qg2) 27... Rd8 28. Nc2 Kh7 29. Rag1 g6 30. Rf3 {\ 4} 30... Rxf3 (30... Rfd6 {
-??} 31. Rxf7+ {Trying to avoid the exchance, but black loses his Queen!
-Black actually moved his rook to d6, but before letting it go, spotted
-the danger, and then took the exchange. Shame...}) 31. Qxf3 Rd7 32. Ne3 
-h5 {?} 33. Nd5 {! At least winning the exchange. Black resigned here.}
-1-0
-
diff --git a/ghc/tests/programs/areid_pass/Main.hs b/ghc/tests/programs/areid_pass/Main.hs
deleted file mode 100644 (file)
index 43fc314..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-module Main ( main ) where
-
-main = do_actions [
-        sleep 5,
-        wrapup (_ccall_ printf ``"%d\n"'' (pass (14::Int)))
-       ]
-
-do_actions :: [IO ()] -> IO ()
-do_actions = foldr thenIO_ (returnIO ())
-
-class Wrapper a where
- wrapup :: IO_Int# -> IO a
-
-instance Wrapper () where
-  wrapup a = a `thenIO_Int#` \ _ -> returnIO ()
-
-instance Wrapper Int where
-  wrapup a = a `thenIO_Int#` \ x# -> returnIO (I# x#)
-
-instance Wrapper Char where
-  wrapup a = a `thenIO_Int#` \ x# -> returnIO (toEnum (I# x#))
-
-instance Wrapper Bool where
-  wrapup a = a `thenIO_Int#` \ x# -> returnIO (x# /=# 0#)
-
-class Pass a where
-  pass :: a -> Int#
-
-instance Pass Int where
-  pass (I# i#) = i#
-
-instance Pass Char where
-  pass c = pass (fromEnum c)
-
-instance Pass Bool where
-  pass True = 0#
-  pass False = 1#
-
-sleep :: Int -> IO ()
-usleep :: Int -> IO ()
-
-sleep t = wrapup (ccall sleep (pass t))
-usleep t = wrapup (ccall usleep (pass t))
-
diff --git a/ghc/tests/programs/areid_pass/Makefile b/ghc/tests/programs/areid_pass/Makefile
deleted file mode 100644 (file)
index c85f52d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/areid_pass/areid_pass.stdout b/ghc/tests/programs/areid_pass/areid_pass.stdout
deleted file mode 100644 (file)
index 8351c19..0000000
+++ /dev/null
@@ -1 +0,0 @@
-14
diff --git a/ghc/tests/programs/barton-mangler-bug/Basic.hs b/ghc/tests/programs/barton-mangler-bug/Basic.hs
deleted file mode 100644 (file)
index d376aff..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-{-# OPTIONS -H12m -package lang #-}
-
-module Basic where
-import TypesettingTricks
-import Int( Num(fromInt) )
-import Physical
---import GHC( (->) )
-infixr 7 |>
-class Signal s where
-  mapSignal:: (Physical a, Physical b) => (s a b) -> a -> b
-  mapSigList:: (Physical a, Physical b) => (s a b) -> [a] -> [b]
-  toSig:: (Physical a, Physical b) => (s a b) -> SignalRep a b
-  mapSignal = mapSignal . toSig
-  mapSigList = map . mapSignal
-  toSig = FunctionRep . mapSignal
-instance Signal (->) where
-  mapSignal f = f
-  toSig = FunctionRep
-data {- (Physical a, Physical b) => -} SignalRep a b =
-   FunctionRep (a -> b) |
-   PieceContRep (PieceCont a b)
-
-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
-  mapSigList (FunctionRep f) = mapSigList f
-  mapSigList (PieceContRep f) = mapSigList f
-  toSig = id
-instance (Physical a, Physical b) => Eq (a -> b) where
-  a == b = error "Attempt to apply equality to functions"
-binop:: (Physical a, Physical b) => (Float -> Float -> Float) -> 
-                                    (a -> b) -> (a -> b) -> a -> b
-binop op f g t = toPhysical ((fromPhysical (f t)) `op` (fromPhysical (g t)))
-unop:: (Physical a, Physical b ) => (Float -> Float) -> 
-                                    (a -> b) -> a -> b
-unop op f t = toPhysical (op (fromPhysical (f t)))
-instance (Physical a, Physical b) => Num (SignalRep a b) where
-  f + g = FunctionRep (binop (+) (mapSignal f) (mapSignal g))
-  f * g = FunctionRep (binop (*) (mapSignal f) (mapSignal g))
-  negate f = FunctionRep (unop negate (mapSignal f))
-  abs f = FunctionRep (unop abs (mapSignal f))
-  signum f = FunctionRep (unop abs (mapSignal f))
-  fromInteger i = FunctionRep (\t -> toPhysical (fromInteger i))
-  fromInt i = FunctionRep (\t -> toPhysical (fromInt i))
-instance (Physical a, Physical b) => 
-         Fractional (SignalRep a b) where
-  f / g = FunctionRep (binop (/) (mapSignal f) (mapSignal g))
-  fromRational r = FunctionRep (\t -> (toPhysical (fromRational r)))
-instance (Physical a, Physical b) => 
-          Floating (SignalRep a b) where
-  pi = FunctionRep (\t -> (toPhysical pi))
-  exp   f = FunctionRep (unop exp (mapSignal f))
-  log   f = FunctionRep (unop log (mapSignal f))
-  sin   f = FunctionRep (unop sin (mapSignal f))
-  cos   f = FunctionRep (unop cos (mapSignal f))
-  asin  f = FunctionRep (unop asin (mapSignal f))
-  acos  f = FunctionRep (unop acos (mapSignal f))
-  atan  f = FunctionRep (unop atan (mapSignal f))
-  sinh  f = FunctionRep (unop sinh (mapSignal f))
-  cosh  f = FunctionRep (unop cosh (mapSignal f))
-  asinh f = FunctionRep (unop asinh (mapSignal f))
-  acosh f = FunctionRep (unop acosh (mapSignal f))
-  atanh f = FunctionRep (unop atanh (mapSignal f))
-data Event =
-  TimeEvent Float | 
-  FunctionEvent (Float -> Bool) |
-  BurstEvent Int Event
-
-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)
-eventOccurs:: Event -> Float -> Float
-eventOccurs (TimeEvent t) x = if x < t then x else t
-eventOccurs (FunctionEvent f) x = stepEval f x
-eventOccurs (BurstEvent i e) x = 
-          if i == 1 then
-            eventOccurs e x
-          else
-            eventOccurs (BurstEvent (i-1) e) ((eventOccurs e x) + eventEps x)
-stepEval:: (Float -> Bool) -> Float -> Float
-stepEval f x = if f x then x else stepEval f (x + eventEps x)
-data ZeroIndicator = LocalZero | GlobalZero deriving (Eq, Show)
-data {- (Physical a, Physical b) => -} FunctionWindow a b = 
-     Window ZeroIndicator Event (SignalRep a b)
-     deriving (Eq, Show)
-data PieceCont a b = Windows [FunctionWindow a b]
-     deriving (Eq, Show)
-instance Signal PieceCont where
-  mapSignal (Windows []) t = toPhysical 0.0
-  mapSignal (Windows wl) t = (mapSignal s) (toPhysical t')
-      where (t', (Window z e s), wl') = getWindow 0.0 (fromPhysical t) wl
-  toSig = PieceContRep
-getWindow:: (Physical a, Physical b) => 
-            Float -> Float -> [ FunctionWindow a b ] -> 
-            (Float, FunctionWindow a b, [ FunctionWindow a b ])
-getWindow st t [] = (t, Window LocalZero e f, [])
-                    where e = TimeEvent (realmul 2 t)
-                          f = FunctionRep (\t -> toPhysical 0.0)
-getWindow st t (w:wl) = if t' <= wt then (t',w,w:wl) 
-                        else getWindow (st+wt) t wl
-    where wt = eventOccurs e t'
-          (Window z e s) = w
-          t' = if z == LocalZero then t-st else t
-(|>) :: (Physical a, Physical b) => FunctionWindow a b -> 
-        PieceCont a b -> PieceCont a b
-w |> (Windows wl) = Windows (w:wl)
-nullWindow = Windows []
-cycleWindows:: (Physical a, Physical b) => 
-                PieceCont a b -> PieceCont a b
-cycleWindows (Windows wl) = Windows (cycle wl)
-constant:: (Physical a, Physical b) => b -> SignalRep a b
-constant x = FunctionRep (\t -> x)
-linear:: (Physical a, Physical b) => Float -> b -> SignalRep a b
-linear m b  = FunctionRep (\x -> toPhysical (realmul m (fromPhysical x) + (fromPhysical b)))
-sine:: (Physical a, Physical b) => 
-       b -> Frequency -> Float -> SignalRep a b
-sine mag omeg phase = FunctionRep (\x -> toPhysical (realmul (fromPhysical mag) (sin (realmul (realmul (realmul 2 pi) (fromPhysical omeg)) (fromPhysical x) + phase))))
-waveform:: (Physical a, Physical b) => a -> [b] -> SignalRep a b
-waveform samp ampls =
-  let stepSlope y y' = realdiv ((fromPhysical y') - (fromPhysical y)) (fromPhysical samp)
-      makeWin (v,v') = Window LocalZero (TimeEvent (fromPhysical samp)) 
-                       (linear (stepSlope v v') v)
-      points = cycle ampls
-  in PieceContRep (Windows (map makeWin (zip points (tail points))))
-random:: (Physical a, Physical b) => 
-         Integer -> a -> SignalRep a b
-random i s = waveform s (map toPhysical (rand i))
-ramp:: (Physical a, Physical b) => a -> b -> SignalRep a b
-ramp per v = 
-  let sig = linear (realdiv (fromPhysical v) (fromPhysical per)) (toPhysical 0.0)
-  in PieceContRep (Windows (cycle ([Window LocalZero (TimeEvent (fromPhysical per)) sig ])))
-triangle:: (Physical a, Physical b) => a -> b -> SignalRep a b
-triangle per v =
-  let sl = realmul 2.0 (realdiv (fromPhysical v) (fromPhysical per))
-      qper = realdiv (fromPhysical v) 4.0
-      wins =  (Window LocalZero (TimeEvent qper) (linear sl (toPhysical 0.0))) |>
-              (Window LocalZero (TimeEvent (realmul 2.0 qper)) (linear (- sl) v)) |>
-              (Window LocalZero (TimeEvent qper) (linear sl (toPhysical (- (fromPhysical v))))) |>
-               nullWindow
-  in PieceContRep (cycleWindows wins)
-step:: (Physical a, Physical b) => a -> b -> SignalRep a b
-step tr lvl = FunctionRep (\t -> if (fromPhysical t) < (fromPhysical tr) then (toPhysical 0.0) else lvl)
-square:: (Physical a, Physical b) => a -> b -> SignalRep a b
-square per lvl =
-  let trans = realdiv (fromPhysical per) 2.0
-      nlvl = asTypeOf (toPhysical (- (fromPhysical lvl))) lvl
-      f t = if (fromPhysical t) < trans then lvl else nlvl
-      wins = Windows [Window LocalZero (TimeEvent (fromPhysical per)) (FunctionRep f)]
-  in PieceContRep (cycleWindows wins)
-pulse:: (Physical a, Physical b) => a -> a -> b -> SignalRep a b
-pulse st wid lvl =
-  let tr = (fromPhysical st) + (fromPhysical wid)
-      f t = if (fromPhysical t) < (fromPhysical st) then (toPhysical 0.0)
-            else if (fromPhysical t) < tr then lvl else (toPhysical 0.0)
-  in FunctionRep f
-trap:: (Physical a, Physical b) => a -> a -> a -> a -> b -> 
-                                   SignalRep a b
-trap st r wid f lvl =
-  let stepSlope y y' t = realdiv (y' -  y) (fromPhysical t)
-      bigwin = realmul 10000000 ((fromPhysical st) + (fromPhysical wid))
-      wins = Window LocalZero (TimeEvent (fromPhysical st)) (constant (toPhysical 0.0)) |>
-             Window LocalZero (TimeEvent (fromPhysical r)) (linear (stepSlope 0.0 (fromPhysical lvl) r) (toPhysical 0.0)) |>
-             Window LocalZero (TimeEvent (fromPhysical wid)) (constant lvl) |>
-             Window LocalZero (TimeEvent (fromPhysical f)) (linear (stepSlope (fromPhysical lvl) 0.0 f) lvl) |>
-             Window LocalZero (TimeEvent bigwin) (constant (toPhysical 0.0)) |>
-             nullWindow
-  in PieceContRep wins
-expc:: (Physical a, Physical b) => Float -> SignalRep a b
-expc damp = FunctionRep (\t -> toPhysical (exp (- (realmul (fromPhysical t) damp))))
-data {- (Physical indep, Physical dep) => -} BasicSignal indep dep =
-    Overshoot {start_delay::indep,
-               pulse_width::indep,
-               ringing::dep,
-               oscillation::Frequency,
-               damp_fac::Float}
-  | Pulse_dc {start_delay::indep,
-              pulse_width::indep,
-              rise_time::indep,
-              fall_time::indep,
-              period::indep,
-              dc_offset::dep,
-              amplitude::dep,
-              over::BasicSignal indep dep,
-              under::BasicSignal indep dep}
-  | Pulse_ac {start_delay::indep,
-              pulse_width::indep,
-              period::indep,
-              dc_offset::dep,
-              amplitude::dep,
-              frequency::Frequency,
-              phase::Float}
-  deriving (Eq, Show)
-
-data {- (Eq a, Eq b) => -} Foo a b = Foo { x :: a, y :: b}
-
-foo :: (Eq a, Eq b) => Foo a b
-foo = Foo{}
-
-{-
-overshoot:: (Physical a, Physical b) => BasicSignal a b
-overshoot = Overshoot{}
-pulse_dc:: (Physical a, Physical b) => BasicSignal a b
-pulse_dc = Pulse_dc {over = Overshoot{start_delay=toPhysical 0.0,
-                                            ringing=(toPhysical 0.0),
-                                            oscillation=toPhysical 1.0,
-                                            damp_fac=1.0},
-                     under = Overshoot{start_delay=toPhysical 0.0,
-                                             ringing=(toPhysical 0.0),
-                                             oscillation=toPhysical 1.0,
-                                             damp_fac=1.0},
-                     start_delay = toPhysical 0.0,
-                     dc_offset = toPhysical 0.0}
-
-pulse_ac:: (Physical a, Physical b) => BasicSignal a b
-pulse_ac = Pulse_ac {dc_offset = toPhysical 0.0,
-                     amplitude = toPhysical 0.0}
--}
-
-makeWin:: (Physical a, Physical b) => a -> a -> 
-           SignalRep a b -> SignalRep a b
-makeWin st wid sig =
-  let wins = Window LocalZero (TimeEvent (fromPhysical st)) (constant (toPhysical 0.0)) |>
-             Window LocalZero (TimeEvent (fromPhysical wid)) sig |>
-             nullWindow
-  in PieceContRep wins
-instance Signal BasicSignal where
-  toSig (Overshoot start_delay pulse_width ringing oscillation damp_fac) =
-    let ring = sine ringing oscillation 0.0
-        cond = asTypeOf (expc damp_fac) ring
-        sig = temp ring cond
-        temp:: (Physical a, Physical b) => SignalRep a b -> 
-                SignalRep a b -> SignalRep a b
-        temp f g = FunctionRep (binop (*) (mapSignal f) (mapSignal g))
---        temp f g = f * g
---        temp f g = asTypeOf (f * g) ring
-        wins = Window LocalZero (TimeEvent (fromPhysical start_delay)) (constant (toPhysical 0.0)) |>
-               Window LocalZero (TimeEvent (fromPhysical pulse_width)) sig |>
-               nullWindow
-    in PieceContRep wins
-  toSig Pulse_dc{ start_delay = start_delay
-                , rise_time   = rise_time
-               , pulse_width = pulse_width
-               , fall_time   = fall_time
-               , dc_offset   = dc_offset
-               , period      = period
-               , amplitude   = amplitude
-               , over        = over
-               , under       = under
-               } =
-    let pul = trap start_delay rise_time pulse_width fall_time amplitude
-        so = toPhysical ((fromPhysical start_delay) + (fromPhysical rise_time))
-        su = toPhysical ((fromPhysical so) + (fromPhysical pulse_width) + (fromPhysical fall_time))
-        oversh = toSig over{start_delay=so}
-        undersh = toSig under{start_delay=su}
-        off = constant dc_offset
-        temp:: (Physical a, Physical b) => SignalRep a b -> 
-                SignalRep a b -> SignalRep a b
-        temp f g = FunctionRep (binop (+) (mapSignal f) (mapSignal g))
-        sig = temp (temp (temp pul oversh) undersh) off
-        wins = (Window LocalZero (TimeEvent (fromPhysical period)) sig) |>
-                nullWindow
-    in PieceContRep (cycleWindows wins)
-sumSig:: (Physical a, Physical b, Signal s, Signal s') =>
-         (s a b) -> (s' a b) -> SignalRep a b
-sumSig f f' = 
-   let s1 t = fromPhysical (mapSignal f t)
-       s2 t = fromPhysical (mapSignal f' t)
-   in FunctionRep (\t -> toPhysical ((s1 t) + (s2 t)))
-mulSig:: (Physical a, Physical b, Signal s, Signal s') =>
-         (s a b) -> (s' a b) -> SignalRep a b
-mulSig f f' = 
-   let f1 t = fromPhysical (mapSignal f t)
-       f2 t = fromPhysical (mapSignal f' t)
-   in FunctionRep (\t -> toPhysical ((f1 t) * (f2 t)))
-
-eventEps:: Float -> Float
-eventEps x = let eps = realdiv x 1000 in if 0.01 < eps then 0.01 else eps
diff --git a/ghc/tests/programs/barton-mangler-bug/Bug.hs b/ghc/tests/programs/barton-mangler-bug/Bug.hs
deleted file mode 100644 (file)
index 0f75dff..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Bug where
-
-data Eq a => Foo a = Foo { x :: a }
-
-foo :: Foo Int
-foo = Foo{}
diff --git a/ghc/tests/programs/barton-mangler-bug/Main.hs b/ghc/tests/programs/barton-mangler-bug/Main.hs
deleted file mode 100644 (file)
index a97f289..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-module Main where
-import Physical
-import Basic
-import TypesettingTricks
-import PlotExample
-sinExample:: SignalRep Time Voltage
-sinExample = sine (V 2.0) (Hz 10) 0.0
-sinPlot = plotExample "sine" sinExample 0.0 1.0
-pieceExample = toSig Pulse_dc
-  { start_delay=(Sec 1.0),
-    rise_time=(Sec 0.2),
-    pulse_width=(Sec 3.0),
-    fall_time=(Sec 0.3),
-    dc_offset=(V (- 1.0)),
-    period=(Sec 10.0),
-    amplitude=(V 5.0),
-    over=Overshoot{ringing=(V 0.2),
-                   pulse_width=(Sec 3.0),
-                   oscillation=(Hz 2.0),
-                   damp_fac=1.0},
-    under=Overshoot{ringing=(V (- 0.25)),
-                    pulse_width=(Sec 3.0),
-                    oscillation=(Hz 2.10),
-                    damp_fac=1.10} }
-piecePlot = plotExample "piece" pieceExample 0.0 20.0
-main = sinPlot >>
-       piecePlot
diff --git a/ghc/tests/programs/barton-mangler-bug/Makefile b/ghc/tests/programs/barton-mangler-bug/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/barton-mangler-bug/Physical.hs b/ghc/tests/programs/barton-mangler-bug/Physical.hs
deleted file mode 100644 (file)
index 91981e0..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-module Physical where
-import TypesettingTricks
-class (Eq a, Show a) => Physical a where
-  fromPhysical:: a -> Float
-  toPhysical:: Float -> a
-instance Physical Float where
-  fromPhysical x = x
-  toPhysical x = x
-data PlaneAngle =
-     Rad Float                 |
-     Mrad Float                |
-     Urad Float                |
-     Deg Float                 |
-     Rev Float
-     deriving (Eq, Show)
-instance Physical PlaneAngle where
-    fromPhysical (Rad x) = x
-    fromPhysical (Mrad x) = realdiv x 1000
-    fromPhysical (Urad x) = realdiv x 1000000
-    fromPhysical (Deg x) = realdiv (realmul x pi) 180
-    fromPhysical (Rev x) = realdiv x (realmul 2.0 pi)
-    toPhysical x = Rad x
-data SolidAngle =
-     Sr Float            |
-     Msr Float
-     deriving (Eq, Show)
-instance Physical SolidAngle where
-    fromPhysical (Sr x) = x
-    fromPhysical (Msr x) = realdiv x 1000
-    toPhysical x = Sr x
-data BurstLength =
-     Cycle Float          |
-     Pulse Float
-     deriving (Eq, Show)
-instance Physical BurstLength where
-    fromPhysical (Cycle x) = x
-    fromPhysical (Pulse x) = x
-    toPhysical x = Cycle x
-data Capacitance =
-     Fd Float            |
-     Ufd Float           |
-     Nfd Float           |
-     Pfd Float
-     deriving (Eq, Show)
-instance Physical Capacitance where
-     fromPhysical (Fd x) = x
-     fromPhysical (Ufd x) = realdiv x 1000000
-     fromPhysical (Nfd x) = realdiv x 1000000000
-     fromPhysical (Pfd x) = realdiv x 1000000000000
-     toPhysical x = Fd x
-data Charge =
-     C Float              |
-     Kc Float             |
-     Uc Float             |
-     Nc Float
-     deriving (Eq, Show)
-instance Physical Charge where
-    fromPhysical (C x) = x
-    fromPhysical (Kc x) = realmul 1000 x
-    fromPhysical (Uc x) = realdiv x 1000000
-    fromPhysical (Nc x) = realdiv x 1000000000
-    toPhysical x = C x
-data Current =
-     A Float             |
-     Ka Float            |
-     Ma Float            |
-     Ua Float            |
-     Na Float
-     deriving (Eq, Show)
-instance Physical Current where
-    fromPhysical (A x) = x
-    fromPhysical (Ka x) = realmul 1000 x
-    fromPhysical (Ma x) = realdiv x 1000
-    fromPhysical (Ua x) = realdiv x 1000000
-    fromPhysical (Na x) = realdiv x 1000000000
-    toPhysical x = A x
-data Distance =
-     M Float              |
-     Km Float             |
-     Mm Float             |
-     Um Float             |
-     Nm Float             |
-     In Float             |
-     Ft Float             |
-     SMi Float            |
-     NMi Float
-     deriving (Eq, Show)
-instance Physical Distance where
-    fromPhysical (M x) = x
-    fromPhysical (Km x) = realmul 1000 x
-    fromPhysical (Mm x) = realdiv x 1000
-    fromPhysical (Um x) = realdiv x 1000000
-    fromPhysical (Nm x) = realdiv x 1000000000
-    fromPhysical (In x) = realmul 25.4 x
-    fromPhysical (Ft x) = realmul 2.12 x
-    fromPhysical (SMi x) = realdiv x 2490.57
-    fromPhysical (NMi x) = realdiv x 1825
-    toPhysical x = M x
-data Energy =
-     J Float              |
-     Kj Float             |
-     Mj Float             |
-     Ev Float             |
-     Kev Float            |
-     Mev Float
-     deriving (Eq, Show)
-instance Physical Energy where
-    fromPhysical (J x) = x
-    fromPhysical (Kj x) = realmul 1000 x
-    fromPhysical (Mj x) = realdiv x 1000
-    fromPhysical (Ev x) = realmul 1.6E-19 x
-    fromPhysical (Kev x) = realmul 1.6E-16 x
-    fromPhysical (Mev x) = realmul 1.6E-13 x
-    toPhysical x = J x
-data MagFlux =
-     Wb Float             |
-     Mwb Float
-     deriving (Eq, Show)
-instance Physical MagFlux where
-    fromPhysical (Wb x) = x
-    fromPhysical (Mwb x) = realdiv x 1000
-    toPhysical x = Wb x
-data FluxDensity =
-     T Float              |
-     Mt Float             |
-     Ut Float             |
-     Gam Float
-     deriving (Eq, Show)
-instance Physical FluxDensity where
-    fromPhysical (T x) = x
-    fromPhysical (Mt x) = realdiv x 1000
-    fromPhysical (Ut x) = realdiv x 1000000
-    fromPhysical (Gam x) = realdiv x 1000000000
-    toPhysical x = T x
-data Force =
-     N Float              |
-     Kn Float             |
-     Mn Float             |
-     Un Float
-     deriving (Eq, Show)
-instance Physical Force where
-    fromPhysical (N x) = x
-    fromPhysical (Kn x) = realmul 1000 x
-    fromPhysical (Mn x) = realdiv x 1000
-    fromPhysical (Un x) = realdiv x 1000000
-    toPhysical x = N x
-data Frequency =
-     Hz Float  |
-     Khz Float |
-     Mhz Float |
-     Ghz Float
-     deriving (Eq, Show)
-instance Physical Frequency where
-    fromPhysical (Hz x) = x
-    fromPhysical (Khz x) = realmul 1000 x
-    fromPhysical (Mhz x) = realmul 1000000 x
-    fromPhysical (Ghz x) = realmul 1000000000 x
-    toPhysical x = Hz x
-data Illuminance =
-     Lx Float
-     deriving (Eq, Show)
-instance Physical Illuminance where
-    fromPhysical (Lx x) = x
-    toPhysical x = Lx x
-data Inductance =
-    H  Float              |
-    Mh Float              |
-    Uh Float              |
-    Nh Float              |
-    Ph Float
-    deriving (Eq, Show)
-instance Physical Inductance where
-    fromPhysical (H x) = x
-    fromPhysical (Mh x) = realdiv x 1000
-    fromPhysical (Uh x) = realdiv x 1000000
-    fromPhysical (Nh x) = realdiv x 1000000000
-    fromPhysical (Ph x) = realdiv x 1000000000000
-    toPhysical x = H x
-data Luminance =
-     Nt Float
-     deriving (Eq, Show)
-instance Physical Luminance where
-    fromPhysical (Nt x) = x
-    toPhysical x = Nt x
-data LuminFlux =
-     Lm Float
-     deriving (Eq, Read, Show)
-instance Physical LuminFlux where
-    fromPhysical (Lm x) = x
-    toPhysical x = Lm x
-data LuminInten =
-     Cd Float
-     deriving (Eq, Read, Show)
-instance Physical LuminInten where
-    fromPhysical (Cd x) = x
-    toPhysical x = Cd x
-data Mass =
-     Kg Float             |
-     G Float              |
-     Mg Float             |
-     Ug Float
-     deriving (Eq, Show)
-instance Physical Mass where
-    fromPhysical (Kg x) = x
-    fromPhysical (G x) = realdiv x 1000
-    fromPhysical (Mg x) = realdiv x 1000000
-    fromPhysical (Ug x) = realdiv x 1000000000
-    toPhysical x = Kg x
-data Power =
-     W Float              |
-     Kw Float             |
-     Mw Float             |
-     Uw Float
-     deriving (Eq, Show)
-instance Physical Power where
-    fromPhysical (W x) = x
-    fromPhysical (Kw x) = realmul 1000 x
-    fromPhysical (Mw x) = realdiv x 1000
-    fromPhysical (Uw x) = realdiv x 1000000
-    toPhysical x = W x
-data Pressure =
-     Pa Float             |
-     Kpa Float            |
-     Mpa Float            |
-     Upa Float            |
-     Mb Float
-     deriving (Eq, Show)
-instance Physical Pressure where
-    fromPhysical (Pa x) = x
-    fromPhysical (Kpa x) = realmul 1000 x
-    fromPhysical (Mpa x) = realdiv x 1000
-    fromPhysical (Upa x) = realdiv x 1000000
-    fromPhysical (Mb x) = realmul 100 x
-    toPhysical x = Pa x
-data Pulse =
-     Pulses Float
-     deriving (Eq, Show)
-instance Physical Pulse where
-    fromPhysical (Pulses x) = x
-    toPhysical x = Pulses x
-data RatioInOut =
-     Db Float
-     deriving (Eq, Show)
-instance Physical RatioInOut where
-    fromPhysical (Db x) = x
-    toPhysical x = Db x
-data Resistance =
-     Ohm Float            |
-     Kohm Float           |
-     Mohm Float
-     deriving (Eq, Show)
-instance Physical Resistance where
-    fromPhysical (Ohm x) = x
-    fromPhysical (Kohm x) = realmul 1000 x
-    fromPhysical (Mohm x) = realmul 1000000 x
-    toPhysical x = Ohm x
-data Temperature =
-     Degk Float           |
-     Degc Float           |
-     Degf Float
-     deriving (Eq, Show)
-instance Physical Temperature where
-    fromPhysical (Degk x) = x
-    fromPhysical (Degc x) = x + 273
-    fromPhysical (Degf x) = (realdiv (realmul 5 (x-32)) 9) + 273
-    toPhysical x = Degk x
-data Time =
-     Sec Float            |
-     Msec Float           |
-     Usec Float           |
-     Nsec Float           |
-     Min Float            |
-     Hr Float
-     deriving (Eq, Show)
-instance Physical Time where
-    fromPhysical (Sec x) = x
-    fromPhysical (Msec x) = realdiv x 1000
-    fromPhysical (Usec x) = realdiv x 1000000
-    fromPhysical (Nsec x) = realdiv x 1000000000
-    fromPhysical (Min x) = realmul 60 x
-    fromPhysical (Hr x) = realmul 3600 x
-    toPhysical x = Sec x
-data Voltage =
-     V Float |
-     Kv Float |
-     Mv Float |
-     Uv Float
-     deriving (Eq, Show)
-instance Physical Voltage where
-    fromPhysical (V x) = x
-    fromPhysical (Kv x) = realmul 1000 x
-    fromPhysical (Mv x) = realdiv x 1000
-    fromPhysical (Uv x) = realdiv x 1000000
-    toPhysical x = V x
-data Volume =
-     L Float            |
-     Ml Float
-     deriving (Eq, Show)
-instance Physical Volume where
-    fromPhysical (L x) = x
-    fromPhysical (Ml x) = realdiv x 1000
-    toPhysical x = L x
diff --git a/ghc/tests/programs/barton-mangler-bug/Plot.lhs b/ghc/tests/programs/barton-mangler-bug/Plot.lhs
deleted file mode 100644 (file)
index f197eeb..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-The functions in this file (well, the single function) will allow the
-user to plot different functions using the Gnuplot program.  In fact,
-all it really does is output a number of points on the list and allow
-the user to activate Gnuplot and use the plotting program to get the
-appropriate output.
-
-The first line just gives the module name.  For the moment, I don't
-anticipate using any modules (although this may change).
-
-> module Plot where
-> import IO
-
-Now we give the type of the function.  This consists of a file name, a
-list of values, and a function that goes from the appropriate types.
-
-> plot2d:: (Show a, Show b) => String -> [a] -> (a -> b) -> IO()
-> plot2d fl inp f = openFile fl WriteMode      >>= \flh ->
->                   plot2d' flh inp f         >>
->                   hClose flh
-
-> plot2d':: (Show a, Show b) => Handle -> [a] -> (a -> b) -> IO()
-> plot2d' fl [] f     = return ()
-> plot2d' fl (x:xs) f = hPutStr fl  (show x)        >>
->                       hPutStr fl  "  "            >>
->                       hPutStr fl  (show (f x))    >>
->                       hPutStr fl  "\n"            >>
->                       plot2d' fl xs f
-
-> plot3d:: (Show a, Show b, Show c) => String -> [a] -> [b] -> 
->                                      (a -> b -> c) -> IO()
-> plot3d fl inp1 inp2 f = openFile fl WriteMode      >>= \flh ->
->                         plot3d' flh inp1 inp2 f    >>
->                         hClose flh
-
-> plot3d':: (Show a, Show b, Show c) => Handle -> [a] -> [b] -> 
->                                       (a -> b -> c) -> IO()
-> plot3d' fl []     inp f = return ()
-> plot3d' fl (x:xs) inp f = plot3d'' fl x inp f           >>
->                           hPutStr fl "\n"               >>
->                           plot3d' fl xs inp f
-
-> plot3d'':: (Show a, Show b, Show c) => Handle -> a -> [b] -> 
->                                        (a -> b -> c) -> IO()
-> plot3d'' fl inp [] f        = return ()
-> plot3d'' fl x (y:ys) f = hPutStr fl  (show x)        >>
->                          hPutStr fl  "  "            >>
->                          hPutStr fl  (show y)        >>
->                          hPutStr fl  "  "            >>
->                          hPutStr fl  (show (f x y))  >>
->                          hPutStr fl  "\n"            >>
->                          plot3d'' fl x ys f
-
-
-And now, let's create a function to make a range out of a triple of a
-start point, an end point, and an increment.
-
-> createRange:: (Num a, Ord a) => a -> a -> a -> [a]
-> createRange s e i = if s > e then []
->                     else s : createRange (s+i) e i
-
-We now settle down to a couple of more specific functions that do
-things that are more unique to gnuplot.  First, we have something that
-creates the appropriate gnuplot command file.
-
-> createGnuPlot:: Show a => String -> a -> a -> IO()
-> createGnuPlot fl s e = openFile (fl ++ ".gnp") WriteMode   >>= \flh ->
->                        hPutStr flh "set terminal latex\n"  >>
->                        hPutStr flh "set output \""         >>
->                        hPutStr flh (fl ++ ".tex\"\n")      >>
->                        hPutStr flh "set nokey\n"           >>
->                        hPutStr flh "plot ["                >>
->                        hPutStr flh (show s)                >>
->                        hPutStr flh ":"                     >>
->                        hPutStr flh (show e)                >>
->                        hPutStr flh "] \""                  >>
->                        hPutStr flh (fl ++ ".plt\"")        >>
->                        hPutStr flh " with lines\n"         >>
->                        hClose  flh
-
-And now we create a fairly specific plotExam function that takes a
-string, a function, and two floats and produces the correct files
-
-> plotExam:: String -> Float -> Float -> (Float -> Float) -> IO()
-> plotExam fl s e f = plot2d (fl++".plt") r f                >>
->                     createGnuPlot fl s e
->               where r = createRange s e ((e - s) / 2500)
diff --git a/ghc/tests/programs/barton-mangler-bug/PlotExample.lhs b/ghc/tests/programs/barton-mangler-bug/PlotExample.lhs
deleted file mode 100644 (file)
index cc7a993..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-This file contains code that is explicitly designed to plot examples
-from the signal modeling language.
-
-> module PlotExample where
-
-> import Plot
-> import Physical
-> import Basic
-
-Our main task is to take a signal and a begin and start point (both
-reals) and convert it into something that plotExam can take in the
-Plot module.
-
-> plotExample:: (Signal s, Physical a, Physical b) =>
->               String -> s a b -> Float -> Float -> IO()
-> plotExample fl sig s e = plotExam fl s e f
->                    where f  = toFloatFunc f'
->                          f' = mapSignal sig
-
-> toFloatFunc:: (Physical a, Physical b) => (a -> b) -> Float -> Float
-> toFloatFunc f x = fromPhysical (f (toPhysical x))
diff --git a/ghc/tests/programs/barton-mangler-bug/TypesettingTricks.hs b/ghc/tests/programs/barton-mangler-bug/TypesettingTricks.hs
deleted file mode 100644 (file)
index 446e4e8..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
--- The functions in this file are expressly for the purpose of aiding
--- the typesetting of some functions with Smugweb.  To this end, in
--- some cases I will use named, prefix functions rather than operators
--- (since under Smugweb operators cannot accept arguments).  This file
--- will define those infix functions.
-
-module TypesettingTricks where
-
-realdiv:: Floating a => a -> a -> a
-realdiv = (/)
-
-realmul:: Num a => a -> a -> a
-realmul = (*)
-
-dotmul:: Num a => a -> a -> a
-dotmul = (*)
-
-rand:: Integer -> [ Float ]
-rand i = r : rand i'
-   where i' = ( (3146757 * i) + 1731) `mod` 4194304
-         r = (fromInteger i') / 4194304.0
diff --git a/ghc/tests/programs/callback/Main.hs b/ghc/tests/programs/callback/Main.hs
deleted file mode 100644 (file)
index f86af7c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
--- !!! Testing callbacks
-module Main(main) where
-
-import IOExts
-import Addr
-
-count :: IORef Int -> IO Int
-count ref = do
-  x <- readIORef ref
-  writeIORef ref (x+1)
-  return x
-
-createCounter :: IO Addr
-createCounter = do
-  ref <- newIORef 0
-  mkCounter (count ref)
-
-foreign export dynamic mkCounter :: (IO Int) -> IO Addr
-
-main :: IO ()
-main = do
-  x  <- createCounter
-  v1 <- _casm_GC_ `` do { typedef int (*f)(); %r=(int)((f)%0)();} while (0); '' x
-  print (v1::Int)
-  v2 <- _casm_GC_ `` do { typedef int (*f)(); %r=(int)((f)%0)();} while (0); '' x
-  print (v2::Int)
-
diff --git a/ghc/tests/programs/callback/Makefile b/ghc/tests/programs/callback/Makefile
deleted file mode 100644 (file)
index 911b383..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#-----------------------------------------------------------------------------
-# $Id
-
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts -fvia-C -package lang
-SRC_LD_OPTS += Main_stub.o
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/programs/callback/callback.stdout b/ghc/tests/programs/callback/callback.stdout
deleted file mode 100644 (file)
index 0d66ea1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-0
-1
diff --git a/ghc/tests/programs/cholewo-eval/Arr.lhs b/ghc/tests/programs/cholewo-eval/Arr.lhs
deleted file mode 100644 (file)
index b1f4d80..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-
-\begin{code}
-module Arr (
-  module Array,
-
-  safezipWith, safezip,
-  row,
-  sum1, map2, map3,
-  mapat, mapat2, mapat3,
-  mapindexed, mapindexed2, mapindexed3,
---  zipArr, sumArr, scaleArr,
-  arraySize,
-
-  matvec, inner, 
-  outerVector,
-  
-  Vector (Vector), toVector, fromVector, listVector, vectorList, vector, 
-  zipVector, scaleVector, sumVector, vectorNorm2, vectorSize,
-  
-  Matrix (Matrix), toMatrix, fromMatrix, listMatrix, matrixList, matrix, 
-  zipMatrix, scaleMatrix, sumMatrix,
-
-  augment,
-  trMatrix,
-
---   showsVector,
---   showsMatrix,
--- showsVecList, showsMatList
---  spy,
-) where
-import Array
-import Numeric
---import Trace
---import IOExtensions(unsafePerformIO)
-\end{code}
-
-@Vector@ and @Matrix@ are 1-based arrays with read/show in form of Lists.
-
-\begin{code}
-data Vector a = Vector (Array Int a) deriving (Eq) --, Show)
-
-toVector :: Array Int a -> Vector a
-toVector x = Vector x
-
-fromVector :: Vector a -> Array Int a
-fromVector (Vector x) = x
-
-instance Functor (Vector) where
-  fmap fn x = toVector (fmap fn (fromVector x))    
-
-{-instance Eq a => Eq (Vector a) where
---  (Vector x) == (Vector y) = x == y
--}
-
-instance Show a => Show (Vector a) where
-  showsPrec p x = showsPrec p (elems (fromVector x))
-
-instance Read a => Read (Vector a) where
-  readsPrec p = readParen False 
-                  (\r -> [(listVector s, t) | (s, t) <- reads r])
-
-instance Num b => Num (Vector b) where
-  (+) = zipVector "+" (+)
-  (-) = zipVector "-" (-)
-  negate = fmap negate
-  abs = fmap abs
-  signum = fmap signum
---   (*) = matMult -- works only for matrices!
---  fromInteger = fmap fromInteger
-\end{code}
-
-
-Convert a list to 1-based vector.
-
-\begin{code}
-listVector :: [a] -> Vector a
-listVector x = toVector (listArray (1,length x) x)
-
-vectorList :: Vector a -> [a]
-vectorList = elems . fromVector
-
-vector (l,u) x | l == 1 = toVector (array (l,u) x)
-               | otherwise = error "vector: l != 1"
-               
-zipVector :: String -> (b -> c -> d) -> Vector b -> Vector c -> Vector d
-zipVector s f (Vector a) (Vector b) 
-  | bounds a == bounds b = vector (bounds a) [(i, f (a!i) (b!i)) | i <- indices a]
-  | otherwise            = error ("zipVector: " ++ s ++ ": unconformable arrays")
-
-scaleVector :: Num a => a -> Vector a -> Vector a
-scaleVector a = fmap (* a)
-
-sumVector :: Num a => Vector a -> a
-sumVector = sum . elems . fromVector
-
-vectorNorm2 :: Num a => Vector a -> a
-vectorNorm2 x = inner x x
-
-vectorSize :: Vector a -> Int
-vectorSize (Vector x) = rangeSize (bounds x)
-
-\end{code}
-
-==============
-
-\begin{code}
-data Matrix a = Matrix (Array (Int, Int) a) deriving Eq
-
-toMatrix :: Array (Int, Int) a -> Matrix a
-toMatrix x = Matrix x
-
-fromMatrix :: Matrix a -> Array (Int, Int) a
-fromMatrix (Matrix x) = x
-
-instance Functor (Matrix) where
-  fmap fn x = toMatrix (fmap fn (fromMatrix x))    
-
---instance Eq a => Eq (Matrix a) where
---  (Matrix x) == (Matrix y) = x == y
-
-instance Show a => Show (Matrix a) where
-  showsPrec p x = vertl (matrixList x)
-  
-vertl [] = showString "[]"
-vertl (x:xs) = showChar '[' . shows x . showl xs 
-    where showl [] = showChar ']'
-          showl (x:xs) = showString ",\n" . shows x . showl xs
-
-instance Read a => Read (Matrix a) where
-    readsPrec p = readParen False
-                  (\r -> [(listMatrix s, t) | (s, t) <- reads r])
-
-instance Num b => Num (Matrix b) where
-  (+) = zipMatrix "+" (+)
-  (-) = zipMatrix "-" (-)
-  negate = fmap negate
-  abs = fmap abs
-  signum = fmap signum
-  x * y = toMatrix (matMult (fromMatrix x) (fromMatrix y)) -- works only for matrices!
---  fromInteger = fmap fromInteger
-\end{code}
-
-Convert a nested list to a matrix.
-
-\begin{code}
-listMatrix :: [[a]] -> Matrix a
-listMatrix x = Matrix (listArray ((1, 1), (length x, length (x!!0))) (concat x))
-
-matrixList :: Matrix a -> [[a]]
-matrixList (Matrix x) = [ [x!(i,j) | j <- range (l',u')] | i <- range (l,u)]
-         where ((l,l'),(u,u')) = bounds x
-
-matrix ((l,l'),(u,u')) x | l == 1 && l' == 1 = toMatrix (array ((l,l'),(u,u')) x)
-                         | otherwise = error "matrix: l != 1"
-
-zipMatrix :: String -> (b -> c -> d) -> Matrix b -> Matrix c -> Matrix d
-zipMatrix s f (Matrix a) (Matrix b) 
-  | bounds a == bounds b = matrix (bounds a) [(i, f (a!i) (b!i)) | i <- indices a]
-  | otherwise            = error ("zipMatrix: " ++ s ++ ": unconformable arrays")
-
-scaleMatrix :: Num a => a -> Matrix a -> Matrix a
-scaleMatrix a = fmap (* a)
-
-sumMatrix :: Num a => Matrix a -> a
-sumMatrix = sum . elems . fromMatrix
-
-\end{code}
-
-
-============
-
-\begin{code}
-safezipWith :: String -> (a -> b -> c) -> [a] -> [b] -> [c]
-safezipWith _ _ [] [] = []
-safezipWith s f (x:xs) (y:ys) = f x y : safezipWith s f xs ys
-safezipWith s _ _ _ = error ("safezipWith: " ++ s ++ ": unconformable vectors")
-
-safezip :: [a] -> [b] -> [(a,b)]
-safezip = safezipWith "(,)" (,)
-
-trMatrix :: Matrix a -> Matrix a
-trMatrix (Matrix x) = matrix ((l,l'),(u',u)) [((j,i), x!(i,j)) | j <- range (l',u'), i <- range (l,u)]
-         where ((l,l'),(u,u')) = bounds x
-
-row :: (Ix a, Ix b) => a -> Array (a,b) c -> Array b c
-row i x = ixmap (l',u') (\j->(i,j)) x where ((l,l'),(u,u')) = bounds x
-
-zipArr :: (Ix a) => String -> (b -> c -> d) -> Array a b -> Array a c -> Array a d
-zipArr s f a b | bounds a == bounds b = array (bounds a) [(i, f (a!i) (b!i)) | i <- indices a]
-               | otherwise            = error ("zipArr: " ++ s ++ ": unconformable arrays")
-\end{code}
-
-Valid only for b -> c -> b functions.
-
-\begin{code}
-zipArr' :: (Ix a) => String -> (b -> c -> b) -> Array a b -> Array a c -> Array a b
-zipArr' s f a b | bounds a == bounds b = accum f a (assocs b)
-                | otherwise            = error ("zipArr': " ++ s ++ ": unconformable arrays")
-\end{code}
-
-Overload arithmetical operators to work on lists.
-
-\begin{code}
-instance Num a => Num [a] where
-  (+) = safezipWith "+" (+)
-  (-) = safezipWith "-" (-)
-  negate = fmap negate
-  abs = fmap abs
-  signum = fmap signum
---   (*) = undefined
---   fromInteger = undefined
-\end{code}
-
-\begin{code}
-sum1 :: (Num a) => [a] -> a
-sum1 = foldl1 (+)
-
---main = print (sum1 [[4,1,1], [5,1,2], [6,1,3,4]])
-\end{code}
-
-\begin{code}
-map2 f = fmap (fmap f) 
-map3 f = fmap (map2 f) 
-\end{code}
-
-Map function f at position n only.  Out of range indices are silently
-ignored.
-
-\begin{code}
-mapat n f x = mapat1 0 f x where
-    mapat1 _ _ [] = []
-    mapat1 i f (x:xs) = (if i == n then f x else x) : mapat1 (i + 1) f xs
-
-mapat2 (i,j) = mapat i . mapat j
-mapat3 (i,j,k) = mapat i . mapat j . mapat k
-
--- main = print (mapat 2 (10+) [1,2,3,4])
--- main = print (mapat2 (1,0) (1000+) ginp)
--- main = print (mapat3 (1,0,1) (1000+) gw)
-\end{code}
-
-\begin{code}
-mapindexed f x = mapindexed1 f 0 x where
-    mapindexed1 _ _ [] = []
-    mapindexed1 f n (x:xs) = f n x : mapindexed1 f (n + 1) xs
-
-mapindexed2 f = mapindexed (\i -> mapindexed (\j -> f (i, j))) 
-mapindexed3 f = mapindexed (\i -> mapindexed (\j -> mapindexed (\k -> f (i, j, k))))
-
--- main = print (mapindexed (\x y -> mapat (10+) [1,2,3,4] y) [1,2,3,4])
--- main = print (mapindexed2 (\(i,j) x -> 100*i + 10*j + x) ginp)
--- main = print (mapindexed3 (\(i,j,k) x -> 1000*i + 100*j + 10*k + x) gw)
-\end{code}
-
-
-
-Overload arithmetical operators to work on arrays.
-
-\begin{code}
-instance (Ix a, Show a, Num b) => Num (Array a b) where
-  (+) = zipArr "+" (+)
-  (-) = zipArr "-" (-)
-  negate = fmap negate
-  abs = fmap abs
-  signum = fmap signum
---   (*) = matMult -- works only for matrices!
---   fromInteger = map fromInteger
-\end{code}
-
-\begin{xcode}
-scaleArr :: (Ix i, Num a) => a -> Array i a -> Array i a
-scaleArr a = fmap (*a)
-
-sumArr :: (Ix i, Num a) => Array i a -> a
-sumArr = sum . elems
-\end{xcode}
-
-\begin{code}
-arraySize :: (Ix i) => Array i a -> Int
-arraySize = rangeSize . bounds
-\end{code}
-
-\begin{code}
-matMult         :: (Ix a, Ix b, Ix c, Num d) =>
-                   Array (a,b) d -> Array (b,c) d -> Array (a,c) d
-matMult x y     =  array resultBounds
-                         [((i,j), sum [x!(i,k) * y!(k,j) | k <- range (lj,uj)])
-                                       | i <- range (li,ui),
-                                         j <- range (lj',uj') ]
-        where ((li,lj),(ui,uj))         =  bounds x
-              ((li',lj'),(ui',uj'))     =  bounds y
-              resultBounds
-                | (lj,uj)==(li',ui')    =  ((li,lj'),(ui,uj'))
-                | otherwise             = error "matMult: incompatible bounds"
-\end{code}
-
-
-Inner product of two vectors.
-
-\begin{code}
-inner :: Num a => Vector a -> Vector a -> a
-inner (Vector v) (Vector w) = if b == bounds w
-               then sum [v!i * w!i | i <- range b]
-               else error "nn.inner: inconformable vectors"
-            where b = bounds v
-\end{code}
-
-Outer product of two vectors $v \dot w^\mathrm{T}$.
-
-\begin{code}
-outerVector :: Num b => Vector b -> Vector b -> Matrix b
-outerVector (Vector v) (Vector w) = if (l,u) == (l',u')
-               then matrix ((l,l'),(u,u')) [((i,j), v!i * w!j) | i <- range (l,u), j <- range (l',u')]
-               else error "nn.outer: inconformable vectors"
-            where ((l,u),(l',u')) = (bounds v, bounds w)
-\end{code}
-
-\begin{code}
-outerArr :: (Ix a, Num b) => Array a b -> Array a b -> Array (a,a) b
-outerArr v w = if (l,u) == (l',u')
-               then array ((l,l'),(u,u')) [((i,j), v!i * w!j) | i <- range (l,u), j <- range (l',u')]
-               else error "nn.outer: inconformable vectors"
-            where ((l,u),(l',u')) = (bounds v, bounds w)
-\end{code}
-
-Inner product of a matrix and a vector.
-
-\begin{code}
-matvec :: (Ix a, Num b) => Array (a,a) b -> Array a b -> Array a b
-matvec w x | bounds x == (l',u') =
-                array (l,u) [(i, sum [w!(i,j) * x!j | j <- range (l',u')]) 
-                                | i <- range (l,u)]
-           | otherwise           = error "nn.matvec: inconformable arrays"
-         where ((l,l'),(u,u')) = bounds w
-\end{code}
-
-Append to a vector.
-
-\begin{code}
-augment :: (Num a) => Vector a -> a -> Vector a
-augment (Vector x) y = Vector (array (a,b') ((b',y) : assocs x))
-            where (a,b) = bounds x
-                  b' = b + 1
-\end{code}
-
-Older approach (x!!i!!j fails in ghc-2.03).
-
-\begin{code}
-toMatrix' :: [[a]] -> Matrix a
-toMatrix' x = Matrix (array ((1,1),(u,u')) [((i,j), (x!!(i-1))!!(j-1)) 
-                             | i <- range (1,u), j <- range (1,u')])
-          where (u,u') = (length x,length (x!!0))
-\end{code}
-
-Matrix 2D printout.
-
-\begin{code}
-padleft :: Int -> String -> String
-padleft n x | n <= length x = x
-            | otherwise = replicate (n - length x) ' ' ++ x
-\end{code}
-
-\begin{code}
-padMatrix :: RealFloat a => Int -> Matrix a -> Matrix String
-padMatrix n x = let ss = fmap (\a -> showFFloat (Just n) a "") x 
-                    maxw = maximum (fmap length (elems (fromMatrix ss)))
-              in fmap (padleft maxw) ss
-\end{code}
-
-\begin{xcode}
-showsVector :: (RealFloat a) => Int -> Vector a -> ShowS
-showsVector n x z1 = let x' = padArr n x
-                         (l,u) = bounds x' in
-                  concat (fmap (\ (i, s) -> if i == u then s ++ "\n" else s ++ " ") (assocs x')) ++ z1
-\end{xcode}
-
-\begin{xcode}
-showsMatrix :: RealFloat a => Int -> Matrix a -> ShowS
-showsMatrix n x z1 = let x' = padMatrix n x
-                         ((l,l'),(u,u')) = bounds x' in
-                   concat (fmap (\ ((i,j), s) -> if j == u' then s ++ "\n" else s ++ " ") (assocs x')) ++ z1
-\end{xcode}
-
-{-
-showsVecList n x s = foldr (showsVector n) s x
-showsMatList n x s = foldr (showsMatrix n) s x
--}
-
-
-\begin{code}
---spy :: Show a => String -> a -> a
---spy msg x = trace ('<' : msg ++ ": " ++ shows x ">\n") x
---spy x  = seq (unsafePerformIO (putStr ('<' : shows x ">\n"))) x
---spy x  = traceShow "z" x
-\end{code}
diff --git a/ghc/tests/programs/cholewo-eval/Main.lhs b/ghc/tests/programs/cholewo-eval/Main.lhs
deleted file mode 100644 (file)
index a730211..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-\begin{code}
-module Main(main) where
-import Arr
-\end{code}
-
-\begin{code}
-type F a = Vector a -> a
-type DF a = Vector a -> Vector a
-\end{code}
-
-\begin{code}
-data {-(Eval a) =>-} ScgData a = ScgData {k :: !Int, err :: !a,
-                          w, p, r :: !(Vector a),
-                          delta, pnorm2, lambda, lambdabar :: !a,
-                          success :: !Bool}
-\end{code}
-
-\begin{code}
-calculate2order :: Floating a => ScgData a -> a -> DF a -> ScgData a
-calculate2order d sigma1 df = 
-  let pnorm2' = vectorNorm2 (p d)
-      sigma = sigma1 / (sqrt pnorm2')
-      s = scaleVector (1/sigma) (df ((w d) + (scaleVector sigma (p d))) - df (w d)) 
-  in d {pnorm2 = pnorm2', delta = inner (p d) s}
-\end{code}
-
-\begin{code}
-hessPosDef :: (Floating a, Ord a) => ScgData a -> ScgData a
-hessPosDef d =
-  let delta' = delta d + (lambda d - lambdabar d) * pnorm2 d {- step 3 -}
-  in if delta' <= 0                             {- step 4 -}
-     then let lambdabar' = 2.0 * (lambda d - delta' / pnorm2 d)
-          in d {delta = -delta' + lambda d * pnorm2 d, lambda = lambdabar', lambdabar = lambdabar'}
-     else d {delta = delta'}
-\end{code}
-
-\begin{code}
-reduceError :: (Floating a, Ord a) => ScgData a -> DF a -> Bool -> a -> a -> ScgData a
-reduceError d df restart bdelta mu = 
-  let r' = negate (df (w d))
-      p' = if restart
-           then r'
-           else let beta = (vectorNorm2 r' - inner r' (r d)) / mu
-                in r' + scaleVector beta (p d)
-  in d {p = p', r = r', lambda = if bdelta >= 0.75 then lambda d / 4 else lambda d
-    }
-\end{code}
-
-\begin{code}
-data ScgInput a = ScgInput (F a) (DF a) (Vector a)
-\end{code}
-
-\begin{code}
-scgIter :: (Floating a, Ord a) => ScgInput a -> [ScgData a]
-scgIter (ScgInput f df w1) =
-    let p1 = negate (df w1)                     {- step 1 -}
-        r1 = p1
-        pnorm21 = vectorNorm2 p1
-        n = vectorSize w1
-        sigma1 = 1.0e-4
-        lambda1 = 1.0e-6
-        err1 = f w1
-    in iterate (\d ->
-           let d1 = if success d                {- step 2 -}
-                    then calculate2order d sigma1 df
-                    else d
-               d2 = hessPosDef d1
-               mu = inner (p d2) (r d2)         {- step 5 -}
-               alpha = mu / (delta d2)
-               w' = (w d2) + scaleVector alpha (p d2)
-               err' = f w'
-               bdelta = 2 * (delta d2) * ((err d2) - err') / (mu^2) {- step 6 -}
-               success' = (bdelta >= 0)         {- step 7 -}
-               restart = ((k d) `mod` n == 0)
-               d3 = if success' 
-                    then (reduceError (d2 {w = w'}) df restart bdelta mu) 
-                            {err = err', lambdabar = 0}
-                    else d2 {lambdabar = lambda d2}
-               d4 = if bdelta < 0.25          {- step 8 -}
-                    then d3 {lambda = (lambda d3) + (delta d3) * (1 - bdelta) / (pnorm2 d3)}
-                    else d3
-           in d4 {k = k d4 + 1, success = success'}
-       )
-       (ScgData 1 err1 w1 p1 r1 0.0 pnorm21 lambda1 0.0 True)
-\end{code}
-
-\begin{code}
-rosenbrock = ScgInput
-  (\ (Vector x) -> 100 * (x!2 - x!1^2)^2 + (1 - x!1)^2)
-  (\ (Vector x) -> listVector [-2 * (1 - x!1) - 400 * x!1 * (x!2 - x!1^2), 
-                              200 * (x!2 -x!1^2)])
-  (listVector [-1,-1.0])
-\end{code}
-
-
-\begin{code}
-main = print (w ((scgIter rosenbrock)!!1))
-\end{code}
diff --git a/ghc/tests/programs/cholewo-eval/Makefile b/ghc/tests/programs/cholewo-eval/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/cholewo-eval/cholewo-eval.stdout b/ghc/tests/programs/cholewo-eval/cholewo-eval.stdout
deleted file mode 100644 (file)
index 22d4567..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[-0.5105811455265337,-0.7565080326002654]
diff --git a/ghc/tests/programs/cvh_unboxing/Append.lhs b/ghc/tests/programs/cvh_unboxing/Append.lhs
deleted file mode 100644 (file)
index a78e57f..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-\section{Versions of {\tt append}}
-
-\begin{code}
-module Append where
-
-import PrelBase
-import Types
-\end{code}
-
-\begin{code}
-append_ :: [a] -> [a] -> [a]
-append_ (x:xs) ys = x : (append_ xs ys)
-append_ [] ys = ys
-
-append_L_S_S :: String -> S Char -> S Char
-append_L_S_S (a: b: c: d: e: a1: b1: c1: d1: e1: xs) ys  
- = S5 a b c d e (S5 a1 b1 c1 d1 e1 (append_L_S_S xs ys))
-append_L_S_S (a: b: c: d: e: xs) ys  
- = S5 a b c d e (append_L_S_S xs ys)
-append_L_S_S (a: b: c: d: _) ys
- = S4 a b c d ys
-append_L_S_S (a: b: c: _) ys
- = S3 a b c ys
-append_L_S_S (a: b: _) ys
- = S2 a b ys
-append_L_S_S [a] ys
- = S1 a ys
-append_L_S_S [] ys = ys
-
-append_F_S_S :: F Char -> S Char -> S Char
-append_F_S_S (F5 a b c d e (F5 a1 b1 c1 d1 e1 xs)) ys  
- = S5 a b c d e (S5 a1 b1 c1 d1 e1 (append_F_S_S xs ys))
-append_F_S_S (F5 a b c d e xs) ys  
- = S5 a b c d e (append_F_S_S xs ys)
-append_F_S_S (F4 a b c d) ys
- = S4 a b c d ys
-append_F_S_S (F3 a b c) ys
- = S3 a b c ys
-append_F_S_S (F2 a b) ys
- = S2 a b ys
-append_F_S_S (F1 a) ys
- = S1 a ys
-append_F_S_S FN ys = ys
-
-
-append_L_SC_SC :: String -> SC -> SC
-append_L_SC_SC (C# a: C# b: C# c: C# d: 
-                C# e: C# a1: C# b1: C# c1: 
-                C# d1: C# e1: xs) ys  
- = SC5 a b c d e (SC5 a1 b1 c1 d1 e1 (append_L_SC_SC xs ys))
-append_L_SC_SC (C# a: C# b: C# c: C# d: 
-                C# e: xs) ys  
- = SC5 a b c d e (append_L_SC_SC xs ys)
-append_L_SC_SC (C# a: C# b: C# c: C# d: _) ys
- = SC4 a b c d ys
-append_L_SC_SC (C# a: C# b: C# c: _) ys
- = SC3 a b c ys
-append_L_SC_SC (C# a: C# b: _) ys
- = SC2 a b ys
-append_L_SC_SC [C# a] ys
- = SC1 a ys
-append_L_SC_SC [] ys = ys
-
-
-append_FC_SC_SC :: FC -> SC -> SC
-append_FC_SC_SC (FC5 a b c d e (FC5 a1 b1 c1 d1 e1 xs)) ys  
- = SC5 a b c d e (SC5 a1 b1 c1 d1 e1 (append_FC_SC_SC xs ys))
-append_FC_SC_SC (FC5 a b c d e xs) ys  
- = SC5 a b c d e (append_FC_SC_SC xs ys)
-append_FC_SC_SC (FC4 a b c d) ys
- = SC4 a b c d ys
-append_FC_SC_SC (FC3 a b c) ys
- = SC3 a b c ys
-append_FC_SC_SC (FC2 a b) ys
- = SC2 a b ys
-append_FC_SC_SC (FC1 a) ys
- = SC1 a ys
-append_FC_SC_SC FCN ys = ys
-
-append_F_L_L :: F a -> [a] -> [a]
-append_F_L_L (F5 a b c d e (F5 a1 b1 c1 d1 e1 xs)) ys  
- = a: b: c: d: e: a1: b1: c1: d1: e1: (append_F_L_L xs ys)
-append_F_L_L (F5 a b c d e xs) ys  
- = a: b: c: d: e: (append_F_L_L xs ys)
-append_F_L_L (F4 a b c d) ys  = a: b: c: d: ys
-append_F_L_L (F3 a b c) ys  = a: b: c: ys
-append_F_L_L (F2 a b) ys  = a: b: ys
-append_F_L_L (F1 a) ys  = a: ys
-append_F_L_L FN ys = ys
-
-append_S_L_L :: S Char -> String -> String
-append_S_L_L (S5 a b c d e (S5 a1 b1 c1 d1 e1 xs)) ys  
- =  a:  b:  c:  d:  e:  a1: b1:  c1:  d1:  e1: (append_S_L_L xs ys)
-append_S_L_L (S5 a b c d e xs) ys  
- =  a:  b:  c:  d: e: (append_S_L_L xs ys)
-append_S_L_L (S4 a b c d xs) ys  
- =  a:  b:  c:  d: (append_S_L_L xs ys)
-append_S_L_L (S3 a b c xs) ys  
- =  a:  b:  c: (append_S_L_L xs ys)
-append_S_L_L (S2 a b xs) ys  
- =  a:  b: (append_S_L_L xs ys)
-append_S_L_L (S1 a xs) ys  
- =  a: (append_S_L_L xs ys)
-append_S_L_L SN ys = ys
-
-
-append_FC_L_L :: FC -> String -> String
-append_FC_L_L (FC5 a b c d e (FC5 a1 b1 c1 d1 e1 xs)) ys  
- = C# a: C# b: C# c: C# d: C# e: C# a1: 
-      C# b1: C# c1: C# d1: C# e1: 
-         (append_FC_L_L xs ys)
-append_FC_L_L (FC5 a b c d e xs) ys  
- = C# a: C# b: C# c: C# d: 
-      C# e: (append_FC_L_L xs ys)
-append_FC_L_L (FC4 a b c d) ys  
- = C# a: C# b: C# c: C# d: ys
-append_FC_L_L (FC3 a b c) ys  
- = C# a: C# b: C# c: ys
-append_FC_L_L (FC2 a b) ys  = C# a: C# b: ys
-append_FC_L_L (FC1 a) ys  = C# a: ys
-append_FC_L_L FCN ys = ys
-
-append_SC_L_L :: SC -> String -> String
-append_SC_L_L (SC5 a b c d e (SC5 a1 b1 c1 d1 e1 xs)) ys  
- = C# a: C# b: C# c: C# d: C# e: C# a1: 
-      C# b1: C# c1: C# d1: C# e1: 
-          (append_SC_L_L xs ys)
-append_SC_L_L (SC5 a b c d e xs) ys  
- = C# a: C# b: C# c: C# d: 
-      C# e: (append_SC_L_L xs ys)
-append_SC_L_L (SC4 a b c d xs) ys  
- = C# a: C# b: C# c: C# d: (append_SC_L_L xs ys)
-append_SC_L_L (SC3 a b c xs) ys  
- = C# a: C# b: C# c: (append_SC_L_L xs ys)
-append_SC_L_L (SC2 a b xs) ys  
- = C# a: C# b: (append_SC_L_L xs ys)
-append_SC_L_L (SC1 a xs) ys  
- = C# a: (append_SC_L_L xs ys)
-append_SC_L_L SCN ys = ys
-\end{code}
diff --git a/ghc/tests/programs/cvh_unboxing/Main.lhs b/ghc/tests/programs/cvh_unboxing/Main.lhs
deleted file mode 100644 (file)
index 42f508c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\begin{code}
-import PrelBase
-import Types
-import Append
-
-main = putStr (show (append_FC_L_L (FC2 a_ a_) []))
-   where a_ = case 'a' of { C# x -> x }
-\end{code}
diff --git a/ghc/tests/programs/cvh_unboxing/Makefile b/ghc/tests/programs/cvh_unboxing/Makefile
deleted file mode 100644 (file)
index c85f52d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/cvh_unboxing/README b/ghc/tests/programs/cvh_unboxing/README
deleted file mode 100644 (file)
index e80b542..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-These files should typecheck and compile, but while they do
-typecheck, they don't assemble without warnings, and when executed,
-generate an illegal instruction.
diff --git a/ghc/tests/programs/cvh_unboxing/Types.lhs b/ghc/tests/programs/cvh_unboxing/Types.lhs
deleted file mode 100644 (file)
index c1e2848..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-\section{IDS types}
-
-\begin{code}
-module Types where
-import PrelBase
-
-data F a = FN | F1 a | F2 a a | F3 a a a 
-         | F4 a a a a 
-         | F5 a a a a a (F a) 
-
-data FI = FIN | FI1 Int# | FI2 Int# Int# | FI3 Int# Int# Int# 
-        | FI4 Int# Int# Int# Int# 
-        | FI5 Int# Int# Int# Int# Int# FI
-
-data FC = FCN | FC1 Char# | FC2 Char# Char# 
-        | FC3 Char# Char# Char# 
-        | FC4 Char# Char# Char# Char# 
-        | FC5 Char# Char# Char# Char# Char# FC
-\end{code}
-
-\begin{code}
-data F2 a b = F2N | F21 a b | F22 a b a b | F23 a b a b a b 
-            | F24 a b a b a b a b 
-            | F25 a b a b a b a b a b (F2 a b) 
-
-data F3 a b c = F3N | F31 a b c | F32 a b c a b c 
-              | F33 a b c a b c a b c
-              | F34 a b c a b c a b c a b c
-              | F35 a b c a b c a b c a b c a b c (F3 a b c) 
-
-data F3I = F3IN 
-         | F3I1 Int# Int# Int# 
-         | F3I2 Int# Int# Int# Int# Int# Int# 
-         | F3I3 Int# Int# Int# Int# Int# Int# Int# Int# Int#
-         | F3I4 Int# Int# Int# Int# Int# Int# Int# Int# Int# 
-                Int# Int# Int#
-         | F3I5 Int# Int# Int# Int# Int# Int# Int# Int# Int# 
-                Int# Int# Int# Int# Int# Int# F3I
-\end{code}
-
-\begin{code}
-data S a = SN | S1 a (S a) | S2 a a (S a) | S3 a a a (S a)
-         | S4 a a a a (S a)
-         | S5 a a a a a (S a) 
-
-data SI = SIN | SI1 Int# SI | SI2 Int# Int# SI 
-        | SI3 Int# Int# Int# SI
-        | SI4 Int# Int# Int# Int# SI
-        | SI5 Int# Int# Int# Int# Int# SI
-
-
-data SC = SCN | SC1 Char# SC | SC2 Char# Char# SC 
-        | SC3 Char# Char# Char# SC
-        | SC4 Char# Char# Char# Char# SC
-        | SC5 Char# Char# Char# Char# Char# SC
-\end{code}
-
-
-
-
diff --git a/ghc/tests/programs/cvh_unboxing/cvh_unboxing.stdout b/ghc/tests/programs/cvh_unboxing/cvh_unboxing.stdout
deleted file mode 100644 (file)
index 742e221..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"aa"
\ No newline at end of file
diff --git a/ghc/tests/programs/dmgob_native1/BugReport b/ghc/tests/programs/dmgob_native1/BugReport
deleted file mode 100644 (file)
index e055d39..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-Hi,
-
--- The Good News --
-
-I was able to compile my suite of programs for training phonetic
-hidden Markov models for speech recognizers using ghc.  The first
-program in the suite produced the same output as hbc, but with a
-reduction in run time of 35%.  Yeah!!
-
-
--- The Bad News --
-
-The second program in the suite, the one that runs for 21 hours on an
-unloaded Sparc 10 (compiled with hbc -O) doesn't work.
-
-There appears to be a bug somewhere in your code for reading "Native"
-binary data.  I don't know what the source of the error is, but here
-is a simpler program that shows the problem.  I am sending you a C
-program for generating a binary test data file (called "test_data")
-and a Haskell program to read it and display the contents.  Here are
-the steps:
-
-% make
-
-% generate_vectors
-
-% ReadNative test_data
-
-
-If you look at the code for generate_vectors, it will be obvious that
-the program ReadNative is NOT reading the vectors properly :-( You can
-do
-
-        % od -fv test_data
-
-to look at the vector components, and 
-
-        % od -fd test_data
-
-to see the dimensions.  If you do, you'll notice that the output of
-ReadNative makes it look like there's an offset of 8 bytes.
-
-
--- An observation --
-
-I don't know if this is the source of the error, but your definition
-of ``hasNElems'' in Native.hs has an ambiguous case:
-
-        hasNElems 0 []
-
-is assigned True by the first def and would be assigned False by the
-6th definition.  I know that the first def will be picked, but this
-overlap makes me wonder if there is a flaw in the logic that has
-something to do with the problem.
-
-
--- The Begging --
-
-Here's hoping you can find and squash this one; if I get a 35%
-reduction on this second program, my 21 hour job will finish in less
-than 14 hours!  Until this is fixed, though, I can't even run the
-second program.
-
-Thanks, and good luck!
-
-dave goblirsch
diff --git a/ghc/tests/programs/dmgob_native1/Main.lhs b/ghc/tests/programs/dmgob_native1/Main.lhs
deleted file mode 100644 (file)
index 70c36b1..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-
-Test program for reading a binary file containing a sequence of
-vectors of possibly different dimension.  The format of the file is 
-
-        Block size                              Data
-        --------------------------------        ---------------------
-
-        sizeof(int) bytes                       dimension of vector 1
-        sizeof(float) x dimension1 bytes        vector 1
-        sizeof(int) bytes                       dimension of vector 2
-        sizeof(float) x dimension2 bytes        vector 2
-        sizeof(int) bytes                       dimension of vector 3
-        sizeof(float) x dimension3 bytes        vector 3
-
-                :                                  :
-
-This program will print the dimension, then the vector, then a blank
-line, then the dimension of the next vector, the next vector, then a
-blank line, etc.
-
-----------------------------------------------------------------------
-
-> module Main where
-
-> import Native
-> import MaybeStateT
-> import System
-
-> main = getArgs           >>= \ args ->
->       case args of
->
->       [file]  -> readFile file   >>= \ bs ->
->                  let
->                    vs = readVectors bs
->                  in
->                  putStrLn (display vs)
->
->       _       -> error " need a binary file name"
-
-
-
-> type Vector           = [Float]
-
-
-> readVectors           :: Bytes -> [Vector]
-> readVectors bs =
->       case readVector bs of
->       Nothing         -> []   -- assume there are no more vectors to read
->       Just (v, bs')   -> v : readVectors bs'
-
-
-> readVector            :: MST Bytes Vector
-> readVector =
->       readBytes                               `bindMST` \dimension ->
->       listReadBytes dimension                 `bindMST` \v ->
->       returnMST v
-
-
-
-> display :: [Vector] -> String
-> display (v:vs) = displayVector v ++ display vs
-> display []     = "\n"
-
-> displayVector :: Vector -> String
-> displayVector v = shows (length v) "\n" ++
->                   shows v "\n\n"
-
diff --git a/ghc/tests/programs/dmgob_native1/Makefile b/ghc/tests/programs/dmgob_native1/Makefile
deleted file mode 100644 (file)
index 20d271f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_RUNTEST_OPTS += test_data 
-SRC_HC_OPTS += -cpp -package misc
-EXTRA_LD_OPTS += -package misc
-
-OBJS = $(HS_OBJS)
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/dmgob_native1/MaybeStateT.lhs b/ghc/tests/programs/dmgob_native1/MaybeStateT.lhs
deleted file mode 100644 (file)
index aa75bd9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-        This module implements the ``State Transformer''
-monad coupled with the ``Maybe'' monad, where the ``Maybe'' type is
-wrapped around the pair containing the return value and the state.
-        \begin{haskell}{MaybeStateT}
-
-> module MaybeStateT(
->#ifndef __GLASGOW_HASKELL__
->       Maybe..,
->#endif
->       MST(..),
->       returnMST,
->       bindMST
->       ) where
-
->#ifndef __GLASGOW_HASKELL__
-> import Maybe
->#endif
-
-> type MST s a  =  s -> Maybe (a, s)
-
-> returnMST     :: a -> MST s a
-> returnMST x   = \s -> Just (x, s)
-
-> bindMST       :: MST s a -> (a -> MST s b) -> MST s b
-> bindMST m k s =  m s >>= \(x, s') -> k x s'
-
-\end{haskell}
diff --git a/ghc/tests/programs/dmgob_native1/dmgob_native1.stdout b/ghc/tests/programs/dmgob_native1/dmgob_native1.stdout
deleted file mode 100644 (file)
index aa9b4b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-3
-[1.0,2.0,3.0]
-
-2
-[1.0,2.0]
-
-4
-[1.0,2.0,3.0,4.0]
-
-
-
diff --git a/ghc/tests/programs/dmgob_native1/generate_vectors.c b/ghc/tests/programs/dmgob_native1/generate_vectors.c
deleted file mode 100644 (file)
index f4ca8d0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <stdio.h>
-
-int main ( )
-{
-  FILE *ptr_output_file;
-
-  int dim;
-  float x[10];
-
-
-  ptr_output_file = fopen("test_data", "wb");
-  if ( ptr_output_file == (FILE *) NULL ) {
-    fprintf(stderr, "Can't open file test_data\n");
-    perror("fopen");
-    exit(1);
-  }
-
-
-  dim = 3;
-  x[0] = 1.0F;
-  x[1] = 2.0F;
-  x[2] = 3.0F;
-  fwrite( &dim, sizeof(int), 1, ptr_output_file );
-  fwrite( x, sizeof(float), dim, ptr_output_file );
-
-  dim = 2;
-  x[0] = 1.0F;
-  x[1] = 2.0F;
-  fwrite( &dim, sizeof(int), 1, ptr_output_file );
-  fwrite( x, sizeof(float), dim, ptr_output_file );
-
-  dim = 4;
-  x[0] = 1.0F;
-  x[1] = 2.0F;
-  x[2] = 3.0F;
-  x[3] = 4.0F;
-  fwrite( &dim, sizeof(int), 1, ptr_output_file );
-  fwrite( x, sizeof(float), dim, ptr_output_file );
-
-  fclose( ptr_output_file );
-  return 0;
-}
diff --git a/ghc/tests/programs/dmgob_native1/test_data b/ghc/tests/programs/dmgob_native1/test_data
deleted file mode 100644 (file)
index 7d217a5..0000000
Binary files a/ghc/tests/programs/dmgob_native1/test_data and /dev/null differ
diff --git a/ghc/tests/programs/dmgob_native2/Bug_report b/ghc/tests/programs/dmgob_native2/Bug_report
deleted file mode 100644 (file)
index 1080ed2..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-Will,
-
-There may be a subtle bug in exectuable code produced by your
-compiler. I am sending you an example program that displays wierd
-behaviour when compiled using ghc, but not when compiled using hbc.
-The results have been check by hand against a commercial C-based
-signal processing tool, and the hbc numbers agree (within numercial
-precision limitations) to the commerical package.  Most of the ghc
-numbers agree too, but some are off in a systematic way.
-
-NOTE: This program uses the Native module, so perhaps the problem lies
-there; I don't know.
-
-
-The package contains the following:
-
-1) a module LPA.lhs
-
-2) a main program  Main.lhs
-
-3) a Makefile, set up for ghc 0.19 and hbc (you can use 0.999.5 if you
-want)
-
-4) an example speech file
-
-
-To compile, edit the Makefile and comment/uncomment the definitions
-for which compiler you want to use; then type make.
-
-Run the program first for hbc:
-
-        % lpa speech speech.cep.hbc
-
-Then ``make clean'', edit the Makefile, remake and run for ghc:
-
-        % lpa speech speech.cep.ghc
-
-Now look at the first 10 lines of each ``cep'' file using od:
-
-        % od -fv speech.cep.hbc | head -10
-
-        % od -fv speech.cep.ghc | head -10
-
-Notice that the numbers pretty much agree, except for the 1st, the
-18th, the 35th, etc.
-
-You see, the program analyzes frames of speech 100 times per second.
-For each analysis frame, it dumps 17 floating point numbers.  Your
-program disagrees with the hbc program about the FIRST coordinate of
-each of these vectors.  I don't understand how this can happen.
-
-I'm writing an applications paper for JFP, but I can't include a
-comparison to your compiler if it produces bad numbers.  So... I know
-your busy, but could you look at this soon?
-
-Good luck!!
-
-dave g.
-
-
diff --git a/ghc/tests/programs/dmgob_native2/LPA.lhs b/ghc/tests/programs/dmgob_native2/LPA.lhs
deleted file mode 100644 (file)
index 359fe25..0000000
+++ /dev/null
@@ -1,755 +0,0 @@
-\begin{comment}
-
-> module LPA where
->#ifndef __GLASGOW_HASKELL__
-> import Trace
->#endif
-> import Int( Num(fromInt) )
-
-\end{comment}
-
-
-%----------------------------------------------------------------------
-\section {A Brief Review of Discrete-Time Signal Processing}
-%----------------------------------------------------------------------
-
-%%------------------------------------------------------------
-\subsection {Discrete-Time Signals}
-%%------------------------------------------------------------
-
-        This section only provides some background terminology;
-see~\cite{OppeScha75} or \cite{ProaMano92} for motivation and more
-details.
-
-
-        A {\em discrete-time signal\/} is simply a sequence of
-numbers.  That is, a discrete-time signal is a function whose domain
-is the set of integers and whose range is some set of numbers, e.g.,
-the real or complex numbers.  The elements of the sequence are called
-{\em samples}.  The $n$th sample of the signal $x$ is denoted by
-$x_n$.  For the rest of this paper, we will refer to discrete-time
-signals as ``signals'' or ``sequences'' interchangeably.
-
-
-        It is mathematically convenient to consider signals to be
-defined for all integers, with samples taking the value zero if not
-otherwise specified.  A signal $x$ is {\em finite-duration\/} if there
-are integers $n_1$ and $n_2$ such that $x_n = 0$ whenever $n<n_1$ or
-$n>n_2$.  A {\em right-sided sequence\/} $x$ is one for which there is
-an integer $n_1$ such that $x_n = 0$ for all $n < n_1$; if $n_1 \geq
-0$ then the signal is also said to be {\em causal}.  {\em
-Left-sided\/} and {\em two-sided\/} sequences are defined similarly.
-All signals in this paper are assumed to be causal with $n_1 = 0$.
-
-
-        Since signals are sequences of numbers, they are naturally
-represented in Haskell using lists, particularly since we are assuming
-causal signals indexed from zero and Haskell lists are indexed from
-zero.
-
-
-        We will often use the notation $x^n_k$ to denote the list of
-samples $[x_k,x_{k+1},\ldots,x_n]$ of the signal $x$.  If $x$ is
-potentially infinite in duration or if knowing its duration is not
-important, we will replace $n$ by $\infty$.  For a causal signal, this
-convention means that $x^\infty_0$ represents the entire signal.
-
-
-        For convenience, we introduce the following type synonym:
-        \begin{verbatim}
-
-> type Signal a = [a]
-
-\end{verbatim}
-        The element type is unspecified because signals can be
-sequences of integers, floating point numbers, or complex numbers.
-Thus, \verb~Signal Int~ represents a signal whose samples are
-finite-precision integers, \verb~Signal Float~ represents a signal
-whose samples are floating point numbers, etc.
-
-
-%%------------------------------------------------------------
-\subsection {The $Z$ Transform}
-%%------------------------------------------------------------
-
-        Given a signal $x$, the {\em Z transform\/} of $x$ is the
-complex-valued function $X(z)$ of the complex variable $z$ defined by
-        \begin{equation}
-        X(z) \isDefined \sum_{k=-\infty}^\infty x_k z^{-k}
-        \label{eq:Z-transform}
-        \end{equation}
-        for all $z$ for which the power series converges.  If the
-signal $x$ has $Z$ transform $X(z)$, we will write
-        \[
-        x \transformPair X(z)
-        \]
-        The $Z$ transform is useful because it allows us to study
-discrete-time systems (Section~\ref{sc:discrete-time-systems}) using
-algebraic manipulations.  This is because the $Z$ transform has a
-number of useful properties, only three of which are needed here.
-        \begin{enumerate}
-
-        \item {\em scaling}
-
-        If we multiply each sample of the signal $x$ by a scalar $a$
-and call the resulting sequence $y$, then
-        \[
-        y \transformPair Y(z) = aX(z) \transformPair map\ (a*)\ x
-        \]
-
-        \item {\em superposition}
-
-        Given two signals $x$ and $y$, if we add them
-sample-by-sample to get a new signal $w$, then
-        \[
-        w \transformPair W(z)  =  X(z) + Y(z)
-        \]
-
-        \item {\em shift}
-
-        Given a signal $x$ and an integer $k$, define the signal $y$
-by
-        \[
-        y_n = x_{n-k}
-        \]
-        we have
-        \[
-        y \transformPair Y(z) = z^{-k}X(z)
-        \]
-        
-
-        \end{enumerate}
-
-
-%%------------------------------------------------------------
-\subsection {Discrete-Time Systems}
-\label{sc:discrete-time-systems}
-%%------------------------------------------------------------
-
-        A {\em discrete-time system\/} is an operator that transforms
-an {\em input\/} signal into an {\em output\/} signal.  These systems
-are commonly called {\em filters\/} when their function is to suppress
-or enhance some feature of the input signal.  In Section~\ref{sc:fir}
-we will define a function for performing a particular type of
-filtering.
-        \begin{verbatim}
-
-> type Filter a = Signal a -> Signal a
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-\subsection {Finite Impulse Response Filtering}
-\label{sc:fir}
-%%------------------------------------------------------------
-
-        A (causal) {\em finite impulse response\/} (FIR) filter is
-characterized by a finite-duration signal $h$ called the {\em impulse
-response\/} of the filter.  For an arbitrary input signal $x$, the
-samples of the output signal $y$ are defined by the {\em convolution
-sum\/}
-        \begin{equation}
-        y_n = \sum^{M-1}_{k=0} h_k x_{n-k}
-        \label{eq:convolution}
-        \end{equation}
-        where $M$ is the length of $h$. We will use FIR filtering
-twice, once in the definition of the function \verb~preemph~ in
-Section~\ref{sc:preemph} and again in the definition of the function
-\verb~cepstra~ in Section~\ref{sc:cepstra}.  Hence we need to define a
-Haskell function that implements FIR filtering.  In doing so, we will
-demonstrate how it is often possible to derive an executable
-definition from a mathematical specification.
-
-
-        $Z$ transforms can be used to express the filtering operation.
-Suppose signals $x$, $h$, and $y$ are related by
-(\ref{eq:convolution}).  Denoting the $Z$ transforms of these signals
-by $X(z), Y(z)$, and $H(z)$, respectively, it is easy to show that
-        \begin{equation}
-        Y(z) = H(z)X(z)
-        \end{equation}
-        We now derive a Haskell function for performing FIR filtering.
-        \begin{eqnarray*}
-        Y(z) & = & H(z)X(z) \\
-             & = & \sum^{M-1}_{k=0} h_k z^{-k} X(z)\\
-             & = & \sum^{M-1}_{k=0} z^{-k} (h_kX(z)) \\
-             & = & \sum^{M-1}_{k=0} z^{-k} W^{(k)}(z)
-        \end{eqnarray*}
-        where we have set $W^{(k)}(z) = h_kX(z)$.  Using Horner's rule,
-        \begin{eqnarray*}
-        Y(z) & = & W^{(0)}(z)\ +\ z^{-1}(W^{(1)}(z)
-                               +\ z^{-1}(W^{(2)}(z) 
-                               +\ \ldots \nonumber \\
-             &   & \hspace{1.2in}
-                               +\ z^{-1}(W^{(M-2)}(z)
-                               +\ z^{-1} W^{(M-1)}(z)) \ldots\ ))
-        \end{eqnarray*}
-        %
-        %
-        Defining the transform relationships $w^{(k)} \transformPair
-W^{(k)}(z)$, we get
-        \begin{equation}
-        y  =  w^{(0)} \oplus (w^{(1)} \oplus (w^{(2)} \oplus \ldots
-                   \oplus (w^{(M-2)} \oplus w^{(M-1)}) \ldots\ ))
-        \label{eq:ws}
-        \end{equation}
-        where the operator $\oplus$ is such that, for two arbitrary
-signals $u$ and $v$ having $Z$ transforms $U(z)$ and $V(z)$ we have
-        \[
-        u \oplus v \ \transformPair\  U(z) + z^{-1}V(z).
-        \]
-        From the superposition and shift properties of the $Z$
-transform, it is clear that the operator $\oplus$ is implemented by
-delaying the second operand by one sample and then performing
-sample-by-sample addition.  Let's call this operation
-``\verb~delayAdd~'':
-        \begin{verbatim}
-
-> delayAdd :: (Num a) => Signal a -> Signal a -> Signal a
-> (x:rxs) `delayAdd` y  = x : combine rxs y
-> []      `delayAdd` y  = 0 : y
-
-\end{verbatim}
-        (The second equation treats the empty list as the all-zero
-signal.)  This definition uses a function \verb~combine~ which is
-similar to the Standard Prelude function \verb~zipWith~, except that
-\verb~combine~ returns a list as long as the {\em longer\/} of the two
-lists, with the ``missing'' values from the shorter list assumed to be
-zero.
-        \begin{verbatim}
-
-> combine :: (Num a) => Signal a -> Signal a -> Signal a
-> combine (x:rxs) (y:rys) = x+y : combine rxs rys
-> combine  []       ys    = ys
-> combine  xs       []    = xs
-
-\end{verbatim}
-
-
-        Now we observe that (\ref{eq:ws}) can be rewritten using
-$foldr1$:
-        \begin{eqnarray*}
-         y    & = & foldr1\ \ (\oplus)\ \ [\: w^{(0)},\ 
-                                 w^{(1)},\ \ldots,\ w^{(M-1)} \:] \\
-              & = & foldr1\ \ (\oplus)\ \ [\: map\ \ (h_k *)\ \ x \:|\:
-                                           k \leftarrow [0..M-1] \:]
-        \end{eqnarray*}
-
-
-        Thus, we can implement an FIR filter having impulse response
-\verb~hs~ on an input signal \verb~x~ as follows:\footnote{My thanks
-to Mark Jones of Yale University who first suggested this form of the
-definition.}
-        \begin{verbatim}
-
-> fir :: Signal Float -> Filter Float
-> fir hs x = foldr1 delayAdd [map (h*) x | h <- hs]
-
-\end{verbatim}
-
-
-%----------------------------------------------------------------------
-\section {Linear Predictive Analysis}
-%----------------------------------------------------------------------
-
-        The processor described here is rather conventional; we just
-implement most of the blocks described in~\cite[pp.\ 
-112--117]{RabiJuan93}.
-
-
-%--------------------------------------------------
-\subsection {Preemphasis}
-\label{sc:preemph}
-%--------------------------------------------------
-
-        The speech signal is first passed through a simple high-pass
-filter to reduce the degree of spectral tilt.  The system
-function is
-        \[
-        P(z) = 1 - a z^{-1}
-        \]
-        where $a$ is a real number less than but close to 1; a typical
-value is 0.95.  Hence, the preemphasis filter is an FIR filter with
-the impulse response $[1,\ -a\ ]$.
-        \begin{verbatim}
-
-> preemph :: Float -> Filter Float
-> preemph a =  fir [1,-a]
-
-\end{verbatim}
-
-
-%--------------------------------------------------
-\subsection {Framing}
-%--------------------------------------------------
-
-        Because of the time-varying nature of speech, the signal is
-broken into a list of equal-length {\em frames}, each offset from its
-predecessor by a fixed number of samples.  Typically, the frame length
-is about $20$ ms and the offset is about $10$ ms.  We need a function
-\verb~frames~ that takes three arguments: a frame length, an offset,
-and the signal.  We can derive the definition of \verb~frames~ as
-follows:
-        \begin{eqnarray*}
-      frames\ n\ m\ x^\infty_0
-      & = & [
-          x_0^{n-1},\;  
-          x_m^{m+n-1},\;   
-          x_{2m}^{2m+n-1},\   
-          \ldots\ ] \\
-      & = & map\ (take\ n)\ 
-          [
-          x_0^\infty,\;
-          x_m^\infty,\;
-          x_{2m}^\infty,\;
-          \ldots\ ] \\ 
-      & = & map\ (take\ n)\ (iterate\ (drop\ m)\ x_0^\infty).
-\end{eqnarray*}
-and thus
-        \begin{equation}
-        frame\ n\ m\ = map\ (take\ n)\ \circ\ iterate\ (drop\ m)
-        \end{equation}
-        But the signal may be finite, so we define and use a function
-\verb~check_for_end~ to avoid processing an infinite stream of empty
-lists.
-        \begin{verbatim}
-
-> type Frame a =  [a]
-> frames      :: Int -> Int -> Signal a -> [Frame a]
-> frames n m  =  check_for_end . map (take n) . iterate (drop m)
-
-\end{verbatim}
-        Here is the definition of \verb~check_for_end~:
-        \begin{verbatim}
-
-> check_for_end = takeWhile (not . null)
-
-\end{verbatim}
-
-
-%--------------------------------------------------
-\subsection {Windowing}
-%--------------------------------------------------
-
-        A {\em window\/} is used to smoothly attenuate samples at the
-edges of a frame prior to analysis.  A window is applied by
-sample-by-sample multiplication. It is tempting to define the
-windowing operation using the Standard Prelude function
-\verb~zipWith~, however, we don't want to analyze a frame of data that
-is too short, as would happen if the length of the entire signal
-exceeded that of an integral number of frames by only a few samples.
-Hence we define the function \verb~window~ using a utility function
-\verb~window'~ that makes sure that the segment being windowed is at
-least as long as the window itself; otherwise an empty frame is
-returned.  Note that \verb~window'~ is not a stream function; the
-output list is accumulated in the third argument so that it can be
-forgotten if the signal turns out to be shorter than the window.
-        \begin{verbatim}
-
-> type Window = [Float]
-
-> window      :: Window -> Signal Float -> Frame Float
-> window w x  =  window' w x []
-
-> window' (w:rws) (x:rxs) buf = window' rws rxs (w*x : buf)
-> window' (_:_)    []     _   = []
-> window'  []      _      buf = buf
-
-\end{verbatim}
-
-
-        A popular window is the {\em Hamming window}.  If the window
-is to have $N$ samples, the formula for the $n$th sample is:
-        \[
-        w(n) = 0.54 - 0.46 \cos( \frac{2\pi}{N-1} n )
-        \]
-        Here is the function for building a Hamming window of \verb~n~
-samples:
-        \begin{verbatim}
-
-> hamming_window :: Int -> Window
-> hamming_window npts =
->       let angle = (2*pi)/fromInt (npts-1)
->       in  [0.54 - 0.46*cos (angle*fromInt n) | n <- [0..npts-1]]
-
-\end{verbatim}
-
-
-        One advantage of lazy evaluation is that by defining the
-windowing function the way we have we can do the windowing and the
-framing simultaneously. Thus, it turns out that we don't need the
-function \verb~frames~.  Let the first argument be the window width
-and the second argument be the offset between frames.
-        \begin{verbatim}
-
-> windows :: Int -> Int -> Signal Float -> [Frame Float]
-> windows n m =
->       let
->         hw           = hamming_window n
->         apply_window = window hw
->       in 
->         check_for_end . map apply_window . iterate (drop m)
-
-\end{verbatim}
-
-
-%--------------------------------------------------
-\subsection {The Autocorrelation Sequence}
-%--------------------------------------------------
-
-        The function \verb~autocorr~ computes the autocorrelation
-sequence for the signal $x$ as a prelude to computing the coefficients
-of the optimal $p$th-order linear prediction filter
-(Section~\ref{sc:Durbin}). The $i$th sample of the autocorrelation
-sequence for an $N$-point signal is defined by the equation
-        \[
-        r_i = \left\{
-              \begin{array}{ll}
-              \sum^{N-1-i}_{n=0} x_n x_{n+i} & 0 \leq i < N \\
-               0                             & i \geq N
-              \end{array}
-              \right.
-        \]
-        The summation operation is just the familiar dot product of
-linear algebra.  The dot product can be coded in Haskell as follows:
-        \begin{verbatim}
-
-> x `dot` y = sum (zipWith (*) x y)
-
-\end{verbatim}
-        However, the operator \verb~`dot`~ is actually more general
-than the familiar dot product because the two argument lists can have
-different length; the longer list is essentially truncated to the
-length of the shorter list.  For derivation purposes, let `$\odot$'
-denote this more general operation, and let `$\cdot$' denote the
-standard dot product.  In general,
-        \[
-        x^n_0 \cdot y^n_0 = x_0^{n+k} \odot y^n_0 =
-        x^n_0 \odot y^{n+k}_0
-        \]
-        for all $k \geq 0$, whereas $x^{n+k}_0 \cdot y^n_0$ would be
-undefined.  We can now formally derive the Haskell function for
-computing the non-zero portion of the autocorrelation sequence as
-follows:
-        \begin{eqnarray*}
-        [r_0,\ r_1,\ \ldots,\ r_{N-1} ]
-        & = & [ \sum^{N-1-i}_{n=0} x_n x_{n+i} \ |\ i \leftarrow [0..N-1]\:]\\
-        & = & [ x^{N-1-i}_0 \cdot x^{N-1}_i    \ |\ i \leftarrow [0..N-1]\:]\\
-        & = & [ x^{N-1}_0 \odot x^{N-1}_i      \ |\ i \leftarrow [0..N-1]\:]\\
-        & = & map\ \ (x^{N-1}_0\ \odot)\ \ [ x^{N-1}_i \ |\ i \leftarrow
-                                                         [0..N-1]\:]\\
-        & = & map\ \ (x^{N-1}_0\ \odot)\ \ (tails\ x^{N-1}_0)
-        \end{eqnarray*}
-        where the function $tails$ is such that
-        \[
-        tails\ x^N_0 = [\ x^N_0,\ x^N_1,\ x^N_2,\ \ldots,\ x^N_N\ ]
-        \]
-        To get the complete autocorrelation sequence, we just append
-an infinite list of zeros:
-        \begin{verbatim}
-
-> autocorr x = map (x `dot`) (tails x) ++ repeat 0.0
-
-\end{verbatim}
-        The function \verb~tails~ is defined as follows:\footnote{This
-function is also provided in the Chalmer's hbc library module {tt
-ListUtil}.}
-        \begin{verbatim}
-
-> tails xs@(_:rxs) | null rxs   = [xs]
->                  | otherwise  = xs : tails rxs
-
-\end{verbatim}
-
-
-        In a conventional imperative language we would need to pass
-{\em two\/} arguments to this function, one specifying how many
-autocorrelation values are to be computed.  The function would then
-return an array containing precisely that many values.  However, in a
-lazy language the autocorrelation values will only be computed as
-needed, so we do not need to specify such a value for this function.
-
-
-        The value $r_0$ is the {\em energy} of the signal.  The
-logarithm of the energy is often included as a parameter in feature
-vectors used in recognizers.
-
-
-%--------------------------------------------------
-\subsection {The Durbin Algorithm}
-\label{sc:Durbin}
-%--------------------------------------------------
-
-        The next step is to solve for the optimum linear predictor
-filter coefficients for a given order $p$.  This can be done
-efficiently using the {\em Durbin Algorithm}.  The steps are listed in
-Figure~\ref{fg:durbin} as they appear in~\cite[p.\ 411]{RabiScha78}
-but with a few changes in notation.  Basically, we successively
-compute the optimum prediction filters for each order $i$ starting
-with $i=1$.  The optimum $i$th-order filter coefficients, $a^{(i)} =
-[a^{(i)}_1,\ldots,a^{(i)}_i]$, are calculated from the optimum
-$(i-1)$th-order filter coefficients, $a^{(i-1)} = [
-a^{(i-1)}_1,\ldots, a^{(i-1)}_{i-1}]$, the mean squared error of that
-filter, $e_{i-1}$, the autocorrelation value $r_i$, and the
-autocorrelation values $r_1, r_2,\ldots, r_{i-1}$.
-        \begin{figure}
-        \fbox{
-        \begin{tabular}{cl}
-Initialization: & $e_0 = r_0$ \\[0.10in]
-%
-%  Durbin algorithm
-%
-\shortstack{ Iteration: \\ $(i=1,2,\ldots,p)$} &
-   \begin{minipage}{2.850in}
-        \begin{eqnarray*}
-%
-      k_i & = & \left( r_i - \sum^{i-1}_{j=1} a_j^{(i-1)} r_{i-j}
-                \right) \left/ \: e_{i-1} \right. \\
-%
-      a_j^{(i)} & = & \left\{ \begin{array}{ll}
-                              a_j^{(i-1)} - k_i a_{i-j}^{(i-1)}, &
-                                    j = 1, \ldots, i-1 \\
-                              k_i, & j=i
-                             \end{array}
-                       \right.\\
-%
-      e_i   & = & (1 - k_i^2) e_{i-1}
-%
-        \end{eqnarray*}
-   \end{minipage}
-%
-\end{tabular}
-  }
-\caption[]{The Durbin Algorithm.}
-\label{fg:durbin}
-\end{figure}
-
-
-        This description can be straightforwardly realized in a
-conventional language using arrays; we will implement the algorithm in
-Haskell without using arrays.
-        \begin{verbatim}
-
-> type LPA_Filter = (Float, [Float])
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-        \subsubsection {Updating the Predictor Polynomial}
-%%------------------------------------------------------------
-
-        First, we derive a function \verb~new_as~ that takes the
-optimal $(i-1)$th-order linear prediction filter coefficients and the
-$i$th reflection coefficient and returns the optimal $i$th-order
-linear prediction filter coefficients.  From Figure~\ref{fg:durbin},
-the optimal $i$th-order linear prediction filter is given by
-        \begin{eqnarray*}
-        a^{(i)} & \isDefined &
-                      [ a^{(i)}_1,\ a^{(i)}_2,\ \ldots,\ a^{(i)}_i ] \\
-                & = & [ a^{(i-1)}_1 - k_i a^{(i-1)}_{i-1},\ \ 
-                        a^{(i-1)}_2 - k_i a^{(i-1)}_{i-2},\ \ 
-                        \ldots,\ \ 
-                        a^{(i-1)}_{i-1} - k_i a^{(i-1)}_1,\ \ 
-                        k_i ]
-        \end{eqnarray*}
-        Note that the subtraction operation involves the first and
-last coefficients, the second and second-to-last coefficients, etc.
-If we place two copies of $a^{(i-1)}$ side by side,
-        \[
-        [ a^{(i-1)}_1,\ a^{(i-1)}_2,\ \ldots,\ 
-          a^{(i-1)}_{i-2},\ a^{(i-1)}_{i-1} ]\ \ \  
-        [ a^{(i-1)}_1,\ a^{(i-1)}_2,\ \ldots,\   
-          a^{(i-1)}_{i-2},\ a^{(i-1)}_{i-1} ]
-        \]
-        it is easy to see that what is called for is some type
-of \verb~foldr~ operation that consumes the list on the right as it
-moves through the list on the left.  Indeed, if we define the binary
-operator $\oplus$ by (assuming that $k_i$ is in scope)
-        \begin{equation}
-        a \oplus (p,\ b:bs)  =  ((a-k_i*b):p,\ bs)
-        \label{eq:oplus}
-        \end{equation}
-        then we have
-        \begin{equation}
-        a^{(i)} = fst\ \ (foldr\ \ (\oplus)\ \ ([k_i], a^{(i-1)})\ \ 
-                        a^{(i-1)})
-        \label{eq:new-as}
-        \end{equation}
-        Combining (\ref{eq:oplus}) and (\ref{eq:new-as}) into a
-Haskell definition:
-        \begin{verbatim}
-
-> new_as as k = fst (foldr op ([k],as) as)
->               where  a `op` (p,b:bs) = ((a-k*b):p,bs)
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-        \subsubsection {Computing the Reflection Coefficient}
-%%------------------------------------------------------------
-
-        Next we consider the calculation of the $i$th reflection
-coefficient.  Ignoring the division by $e_{i-1}$ for the moment,
-consider just the expression
-        \begin{equation}
-        r_i - \sum^{i-1}_{j=1} a^{(i-1)}_j r_{i-j}
-        \label{eq:k-numerator}
-        \end{equation}
-        For the summation term we can use the same approach we used
-for calculating the new prediction filter coefficients: a
-\verb~foldr~ operation that consumes one list while moving through
-another.  Defining the binary operator $\otimes$ by
-        \begin{equation}
-        a \otimes (s,\ b:bs) = (s + a*b,\ bs)
-        \label{eq:otimes}
-        \end{equation}
-        the summation is the first component of the pair returned by
-the expression
-        \begin{equation}
-        foldr\ \ (\otimes)\ \ (0,rs)\ \ as
-        \label{eq:k-summation}
-        \end{equation}
-        where it is assumed that the length of $rs$ is at least as
-great as that of $as$ (it is in practice).  The second component of
-the pair returned by (\ref{eq:k-summation}) is a list having $r_i$ as
-its head, which, as we see from (\ref{eq:k-numerator}), is what we are
-subtracting the summation from.  Combining (\ref{eq:otimes}) and
-(\ref{eq:k-summation}) with the division by $e_{i-1}$ yields the
-following definition.
-        \begin{verbatim}
-
-> new_k rs (e,as) =
->       let (summation,r:_) = foldr op (0,rs) as
->                             where  a `op` (s,b:bs) = (s+a*b,bs)
->       in (r - summation)/e
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-        \subsubsection {One Step in the Durbin Algorithm}
-%%------------------------------------------------------------
-
-        We can now define the function that produces the optimal
-$i$th-order linear prediction filter from the autocorrelation sequence
-and the optimal $(i-1)$th-order filter.
-        \begin{verbatim}
-
-> durbin_step rs (e,as) = let k = new_k rs (e,as)
->                         in  ((1-k*k)*e, new_as as k)
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-        \subsubsection {The Durbin Algorithm}
-%%------------------------------------------------------------
-
-        To get the optimal $p$th-order linear predictor given the
-autocorrelation sequence, we just iteratively apply the function
-\verb~durbin_step~ to the appropriate initial condition and select the
-$p$th element of the resulting sequence.  If $(r : rrs)$ is the
-autocorrelation sequence for a frame, then the expression
-        \[
-        iterate\ \ (durbin\_step\ rrs)\ \ (r,[\ ])
-        \]
-        produces the list
-        \[
-        [\: (e_0,[\ ]),\ (e_1,a^{(1)}),\ (e_2,a^{(2)}),\ \ldots \:]
-        \]
-from which we want the element at position $p$.
-        \begin{verbatim}
-
-> durbin :: Int -> Signal Float -> LPA_Filter
-> durbin p (r:rrs) = (iterate (durbin_step rrs) (r,[]))!!p
-
-\end{verbatim}
-
-
-%%------------------------------------------------------------
-\subsection {Conversion to Cepstral Coefficients}
-\label{sc:cepstra}
-%%------------------------------------------------------------
-
-        Given a discrete-time linear system with the system function
-        \[
-        \frac{G}{1 - \sum^p_{i=1} a_i z^{-i}}
-        \]
-        the sequence of {\em cepstral coefficients\/} $c^\infty_0$ for
-this system is defined by
-        \begin{equation}
-        c_n = \left\{
-              \begin{array}{ll}
-              \ln G     & n=0 \\[0.10in]
-              a_n + \frac{1}{n} \sum^{n-1}_{k=1} a_k \cdot (n-k)
-                                                     \cdot c_{n-k} &
-                        1 \leq n \leq p \\[0.10in]
-        \frac{1}{n} \sum^p_{k=1} a_k \cdot (n-k) \cdot c_{n-k} & n > p
-                \end{array}
-              \right.
-        \label{eq:cepstra}
-        \end{equation}
-        Note that the summation terms of (\ref{eq:cepstra}) are just
-convolution sums for the FIR filter with $a^{(p)}$ as its impulse
-response and the scaled cepstral coefficient signal $[c_1, 2c_2, 3c_3,
-4c_4, \ldots]$.  Also, the second and third formulas are the same
-except for the adding of the $a_i$'s to the scaled and filtered
-cepstral coefficients.  Hence, we can use the function \verb~delayAdd~
-that we defined when developing the FIR filtering function \verb~fir~
-(Section~\ref{sc:fir}).  Also, the gain term is usually ignored in
-forming the feature vector, so we just compute the sequence
-$[c_1,c_2,\ldots]$.
-        \begin{verbatim}
-
-> cepstra :: LPA_Filter -> Signal Float
-> cepstra (_,as) = cs
->       where
->       cs  = as `delayAdd` xs
->       xs  = zipWith (/) (fir as (zipWith (*) [1..] cs)) [2..]
-
-\end{verbatim}
-        Because there is no terminating condition and because of the
-recursion---the sequence \verb~cs~ appears in the definition of the
-sequence \verb~xs~---this definition relies on lazy evaluation in a
-critical way.
-
-
-        \subsection {Putting it all together}
-
-        The function \verb~analyze~ transforms a windowed frame of
-samples to a pair of values, a log gain term and a list of cepstral
-coeficients.  The first argument is the order of the linear prediction
-analysis.  The second argument is the number of cepstral coefficients.
-        \begin{verbatim}
-
-> analyze :: Int -> Int -> Frame Float -> (Float, [Float])
-
-> analyze p q wxs = let
->                     rs         = autocorr wxs
->                     log_energy = log10 (head rs)
->                     cep        = take q (cepstra (durbin p rs))
->                   in
->                     (log_energy, cep)
-
-> log10 :: Float -> Float
-> log10 x = log x / log 10
-> --log10 x = let result = log x / log 10 in
-> --  trace ("log10:"++(shows x ":")++(shows (log x) "/")++(shows (log 10) "=")++(show result)) result
-
-\end{verbatim}
-
-
-
-        \subsection {The Main Program}
-
-        Figure~\ref{fg:complete} shows the main Haskell program,
-including the speech/feature I/O functions.
-        \begin{figure}[p]
-        \input{Main.lhs}
-        \caption[]{The linear predictive speech analysis main program}
-        \label{fg:complete}
-        \end{figure}
-
diff --git a/ghc/tests/programs/dmgob_native2/Main.lhs b/ghc/tests/programs/dmgob_native2/Main.lhs
deleted file mode 100644 (file)
index 175ba9a..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-\begin{verbatim}
-
-> module Main(main) where
-
->#ifndef __GLASGOW_HASKELL__
-> import Trace
-> import Maybe   -- an hbc library module defining the ``Maybe'' type
->#endif
-> import Int( Num(fromInt) )
-
-> import Native  -- an hbc library module for native-mode binary IO
-
-> import LPA     -- the linear predictive analysis module
-
-
-> main = getContents   >>= \bs ->
->        putStr (program bs)
-> {- 1.2
-> main = readChan stdin exit                            $ \bs ->
->        appendChan stdout (program bs) exit done
-> -}
-> {- ORIGINAL: partain:
-> main = getArgs exit                                   $ \args ->
->        case args of
->        [file1, file2] -> readFile file1 exit          $ \bs ->
->                          writeFile file2 (program bs) exit done
->        _              -> error usage
-> -}
-
-> usage = "usage: lpa  <speech file>  <output file>"
-
-
-> window_width      = 384 :: Int  -- 24 ms @ 16 kHz
-> window_offset     = 160 :: Int  -- 10 ms @ 16 kHz
-> p                 =  14 :: Int  -- LP analysis order
-> q                 =  16 :: Int  -- cepstral analysis order
-
-
-> readRawSpeech :: Bytes -> Signal Int
-> readRawSpeech bs =
->       case bytesToShortInt bs of
->       Nothing      -> if null bs then [] else error read_error
->       Just (v,bs') -> v : readRawSpeech bs'
-
-> read_error = "Left-over byte encountered by readRawSpeech"
-
-
-> castSignal :: Signal Int -> Signal Float
-> castSignal = map fromInt
-
-
-> program :: Bytes -> String
-> {-TEST:
-> program bs
->  = let signal = readRawSpeech bs in
->    -- trace (shows (take 200 signal) "\n\n") (
->    ((foldr writesFrame []
->         . map (analyze p q)
->         . windows window_width window_offset
->         . preemph 0.95
->         . castSignal) signal)
->    -- )
-> -}
->
-> program = foldr writesFrame []
->         . map (analyze p q)
->         . windows window_width window_offset
->         . preemph 0.95
->         . castSignal
->         . readRawSpeech
-
-\end{verbatim}
-
-        It only remains to define a function for writing the analysis
-parameters to a file.
-        \begin{verbatim}
-
-> writesFrame :: (Float, [Float]) -> Bytes -> Bytes
-> writesFrame (log_energy, cep) bs =
->       showBytes log_energy (listShowBytes cep bs)
-
-\end{verbatim}
-
diff --git a/ghc/tests/programs/dmgob_native2/Makefile b/ghc/tests/programs/dmgob_native2/Makefile
deleted file mode 100644 (file)
index e8ddc6f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -cpp -package misc -package exts
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/dmgob_native2/dmgob_native2.stdin b/ghc/tests/programs/dmgob_native2/dmgob_native2.stdin
deleted file mode 100644 (file)
index 572c4a1..0000000
Binary files a/ghc/tests/programs/dmgob_native2/dmgob_native2.stdin and /dev/null differ
diff --git a/ghc/tests/programs/dmgob_native2/dmgob_native2.stdout b/ghc/tests/programs/dmgob_native2/dmgob_native2.stdout
deleted file mode 100644 (file)
index 4bfb34b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@h£Q¾Îy\17¾^F\11=èÂǽ;\8bÀ>Cê3½\92\8eC½ed§½ð¾À»Ô9à½8Â.½ /X=®LϾ\84ºã=fôø=Të\f½\1e?\9a@h¶6¿\ 6Eú¾¤!&>\\ý=<\9bD>|9\a¾}=¨<\9c¾\8f½¶n\19<\19\ 4\8b \84<.78=5,-½ý\91ѼËë@=w¿5<\ 2È¢@c\1cÄ¿\11\7fn¾ªN\12>\18U¶¼
\ No newline at end of file
diff --git a/ghc/tests/programs/dmgob_native2/dmgob_native2.stdout2 b/ghc/tests/programs/dmgob_native2/dmgob_native2.stdout2
deleted file mode 100644 (file)
index 96dde07..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@h£Q¾Îy\19¾^F\ f=èÂʽ;\8bÀ>Cê1½\92\8eB½ed¤½ð¾¾»Ô9À½8Â1½ /`=®Lɾ\84ºæ=fôò=Të\15½\1e? @h¶6¿\ 6Eü¾¤!&>\\ô=<\9b.>|8ü¾}=§<\9c¾\80½¶n\12<\19\ 4\f¼\8b \9c<.7\14=5,!½ý\91мËë@=w¿6<\ 2Èx@c\1cÄ¿\11\7fo¾ªN\ f>\18U°¼
\ No newline at end of file
diff --git a/ghc/tests/programs/fast2haskell/Fast2haskell.hs b/ghc/tests/programs/fast2haskell/Fast2haskell.hs
deleted file mode 100644 (file)
index 848ee4e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-       module Fast2haskell (
-            Complex_type, Array_type, Assoc_type, Descr_type,
-            abortstr, delay, fix, force, iff, iffrev, seQ,
-            pair, strcmp,
-            entier,
-            land_i, lnot_i, lor_i, lshift_i, rshift_i,
-            descr,
-            destr_update, indassoc, lowbound, tabulate, upbound, update, valassoc) where {
-           import Bits;
-            import Word;
-           import Complex; -- 1.3
-           import Array; -- 1.3
-           import Int ( Num(fromInt) );
-            type Complex_type   = Complex Double;
-            type Array_type b   = Array Int b;
-            type Assoc_type a   = (Int, a);
-            type Descr_type     = (Int,Int);
-            abortstr      str                 = error ("abort:"++str); -- abort (OtherError str);
-            delay         x                   = abortstr "delay not implemented";
-            fix           f                   = fix_f where {fix_f = f fix_f};
-            force         x                   = x; -- error  "force not implemented";
-            iff           b     x  y          = if b then x else y;
-            iffrev        y  x      b         = if b then x else y;
-            seQ           x    y              = x `seq` y;
-            pair          []                  = False;
-            pair          x                   = True;
-            strcmp        :: [Char] -> [Char] -> Bool;
-            strcmp        x      y            = x == y;
-            entier        x                   = fromIntegral (floor x);
-            land_i        :: Int -> Int -> Int;
-            land_i        x    y              = wordToInt (fromInt x .&. fromInt y);
-            lnot_i        :: Int -> Int;
-            lnot_i        x                   = wordToInt (complement (fromInt x));
-            lor_i         :: Int -> Int -> Int;
-            lor_i         x    y              = wordToInt (fromInt x .|. fromInt y);
-            lshift_i      :: Int -> Int -> Int;
-            lshift_i      x    y              = wordToInt (fromInt x `shiftL` y);
-            rshift_i      :: Int -> Int -> Int;
-            rshift_i      x    y              = wordToInt (fromInt x `shiftR` y);
-            write         x                   = abortstr "write not implemented";
-            descr         l    u              = (l,u);
-            destr_update  ar  i  x            = ar // [(i,x)];
-            indassoc      (i,v)              = i;
-            lowbound      (l,u)               = l;
-            tabulate      f (l,u)             = listArray (l,u) [f i | i <- [l..u]];
-            upbound       (l,u)               = u;
-            update        ar i x              = ar // [(i,x)];
-            valassoc      (i,v)               = v;
-       }
diff --git a/ghc/tests/programs/fast2haskell/Main.hs b/ghc/tests/programs/fast2haskell/Main.hs
deleted file mode 100644 (file)
index b0c2935..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-module Main (main) -- TEST
-where {
-import Fast2haskell;
-import Complex;--1.3
-import Array;--1.3
-
-    c_eps=(5.00000e-06 :: Double);
-    c_t=True;
-    c_f=False;
-    c_input=(0 :: Int);
-    f_main a_n=
-        let { 
-            r_x=[(a_tf,(++) (show a_i) ((++) "\t" a_str))|(a_i,(a_tf,a_str))<-f_zip2 (enumFrom (1 :: Int)) c_testlist];
-            r_noks=[(++) a_str "\n"|(a_tf,a_str)<-r_x,not a_tf];
-            r_oks=[(++) a_str "\n"|(a_tf,a_str)<-r_x,a_tf]
-         } in  
-            if (((>) :: (Int -> Int -> Bool)) a_n (0 :: Int))
-            then (f_onetest ((!!) c_testlist (((-) :: (Int -> Int -> Int)) a_n (1 :: Int))))
-            else 
-                ((++) (show (length r_oks)) ((++) " tests passed and " ((++) (show 
-                (length r_noks)) ((++) " failed\n" (c_concat r_noks)))));
-    f_onetest (True,a_str)=(++) "true:  " ((++) a_str "\n");
-    f_onetest (False,a_str)=(++) "false: " ((++) a_str "\n");
-    f_booltest a_name True a_try=
-        if a_try
-        then (True,"")
-        else 
-            (False,(++) a_name "\tok: true is: false");
-    f_booltest a_name False a_try=
-        if (not a_try)
-        then (True,"")
-        else 
-            (False,(++) a_name "\tok: false is: true");
-    f_inttest a_name a_ok a_try=
-        if (((==) :: (Int -> Int -> Bool)) a_ok a_try)
-        then (True,"")
-        else 
-            (False,(++) a_name ((++) "\tok: " ((++) (show a_ok) ((++) "\tis: " 
-            (show a_try)))));
-    f_chartest a_name a_ok a_try=
-        if (((==) :: (Int -> Int -> Bool)) (fromEnum a_ok) (fromEnum a_try))
-        then (True,"")
-        else 
-            (False,(++) a_name ((++) "\tok: " ((++) ((:) a_ok []) ((++) "\tis: " 
-            ((:) a_try [])))));
-    f_strtest a_name a_ok a_try=
-        if (strcmp a_ok a_try)
-        then (True,"")
-        else 
-            (False,(++) a_name ((++) "\tok: " ((++) a_ok ((++) "\tis: " a_try))));
-    f_linttest a_name a_ok a_try=
-        if (f_lintcmp a_ok a_try)
-        then (True,"")
-        else 
-            (False,(++) a_name ((++) "\tok: " ((++) (f_showlint a_ok) ((++) "\tis: " 
-            (f_showlint a_try)))));
-    f_doubtest a_name a_ok a_try=
-        if (((<=) :: (Double -> Double -> Bool)) (f_abs (((-) :: (Double -> Double -> Double)) a_ok a_try)) c_eps)
-        then (True,"")
-        else 
-            (False,(++) a_name ((++) "\tok: " ((++) (show a_ok) ((++) "\tis: " 
-            ((++) (show a_try) ((++) "\tok-is: " (show (((-) :: (Double -> Double -> Double)) a_ok a_try))))))));
-    f_alternating a_l=(:) (0 :: Int) ((:) (1 :: Int) a_l);
-    f_showlint []=[];
-    f_showlint a_xs=tail (c_concat [(++) "," (show a_x)|a_x<-a_xs]);
-    f_lintcmp [] []=True;
-    f_lintcmp [] a_ys=False;
-    f_lintcmp a_xs []=False;
-    f_lintcmp (a_x:a_xs) (a_y:a_ys)=
-        if (((==) :: (Int -> Int -> Bool)) a_x a_y)
-        then (f_lintcmp a_xs a_ys)
-        else 
-            False;
-    c_testlist=(:) (f_inttest "array" (10 :: Int) ((!) (array (descr (1 :: Int) (3 :: Int)) ((:) 
-        ((,) (3 :: Int) (30 :: Int)) ((:) ((,) (1 :: Int) (10 :: Int)) ((:) ((,) (2 :: Int) (20 :: Int)) [])))) (1 :: Int))) ((:) (f_inttest "array" (20 :: Int) 
-        ((!) (array (descr (1 :: Int) (3 :: Int)) ((:) ((,) (3 :: Int) (30 :: Int)) ((:) ((,) (1 :: Int) (10 :: Int)) 
-        ((:) ((,) (2 :: Int) (20 :: Int)) [])))) (2 :: Int))) ((:) (f_inttest "array" (30 :: Int) ((!) (array (descr (1 :: Int) (3 :: Int)) 
-        ((:) ((,) (3 :: Int) (30 :: Int)) [])) (3 :: Int))) ((:) (f_inttest "assoc" (0 :: Int) (indassoc ((,) (0 :: Int) (1 :: Int)))) ((:) 
-        (f_inttest "assoc" (1 :: Int) (valassoc ((,) (0 :: Int) (1 :: Int)))) ((:) (f_inttest "bounds" (1 :: Int) (lowbound (bounds 
-        (listArray (descr (1 :: Int) (3 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) []))))))) ((:) (f_inttest "bounds" (3 :: Int) 
-        (upbound (bounds (listArray (descr (1 :: Int) (3 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) []))))))) 
-        ((:) (f_inttest "descr" (0 :: Int) (lowbound (descr (0 :: Int) (1 :: Int)))) ((:) (f_inttest "descr" (1 :: Int) (upbound 
-        (descr (0 :: Int) (1 :: Int)))) ((:) (f_linttest "destr_update" ((:) (1 :: Int) ((:) (0 :: Int) ((:) (3 :: Int) []))) (elems 
-        (destr_update (listArray (descr (0 :: Int) (2 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))) (1 :: Int) (0 :: Int)))) ((:) 
-        (f_linttest "destr_update" ((:) (0 :: Int) []) (elems (destr_update (listArray (descr (0 :: Int) (0 :: Int)) ((:) (1 :: Int) 
-        ((:) (2 :: Int) ((:) (3 :: Int) [])))) (0 :: Int) (0 :: Int)))) ((:) (f_linttest "elems" ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) []))) 
-        (elems (listArray (descr (0 :: Int) (2 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))))) ((:) 
-        (f_linttest "elems" ((:) (1 :: Int) []) (elems (listArray (descr (0 :: Int) (0 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) 
-        ((:) (3 :: Int) [])))))) ((:) (f_inttest "indassoc" (0 :: Int) (indassoc ((,) (0 :: Int) (1 :: Int)))) ((:) (f_linttest "listarray" 
-        ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) []))) (elems (listArray (descr (0 :: Int) (2 :: Int)) ((:) (1 :: Int) 
-        ((:) (2 :: Int) ((:) (3 :: Int) [])))))) ((:) (f_linttest "listarray" ((:) (1 :: Int) []) (elems (listArray 
-        (descr (0 :: Int) (0 :: Int)) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))))) ((:) (f_inttest "lowbound" (0 :: Int) (lowbound 
-        (descr (0 :: Int) (1 :: Int)))) ((:) (f_inttest "subscript" (1 :: Int) ((!) (tabulate ((!!) ((:) (1 :: Int) 
-        ((:) (2 :: Int) ((:) (3 :: Int) [])))) (descr (0 :: Int) (2 :: Int))) (0 :: Int))) ((:) (f_inttest "subscript" (2 :: Int) ((!) (tabulate 
-        ((!!) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))) (descr (0 :: Int) (2 :: Int))) (1 :: Int))) ((:) (f_inttest "subscript" (3 :: Int) 
-        ((!) (tabulate ((!!) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))) (descr (0 :: Int) (2 :: Int))) (2 :: Int))) 
-        ((:) (f_linttest "tabulate" ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) []))) (elems (tabulate 
-        ((!!) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))) (descr (0 :: Int) (2 :: Int))))) ((:) (f_linttest "tabulate" 
-        ((:) (1 :: Int) []) (elems (tabulate ((!!) ((:) (1 :: Int) ((:) (2 :: Int) ((:) (3 :: Int) [])))) 
-        (descr (0 :: Int) (0 :: Int))))) ((:) (f_inttest "upbound" (1 :: Int) (upbound (descr (0 :: Int) (1 :: Int)))) ((:) (f_inttest "valassoc" (1 :: Int) 
-        (valassoc ((,) (0 :: Int) (1 :: Int)))) ((:) (f_doubtest "add_x" (0.00000 :: Double) (realPart (((+) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) 
-        ((:+) (0.00000 :: Double) (0.00000 :: Double))))) ((:) (f_doubtest "add_x" (0.00000 :: Double) (imagPart (((+) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) ((:+) (0.00000 :: Double) (0.00000 :: Double))))) 
-        ((:) (f_doubtest "add_x" (4.00000 :: Double) (realPart (((+) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) 
-        (f_doubtest "add_x" (6.00000 :: Double) (imagPart (((+) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) (f_doubtest "complex" (1.00000 :: Double) 
-        (realPart ((:+) (1.00000 :: Double) (0.00000 :: Double)))) ((:) (f_doubtest "complex" (1.00000 :: Double) (imagPart ((:+) (0.00000 :: Double) (1.00000 :: Double)))) ((:) 
-        (f_doubtest "complex_im" (0.00000 :: Double) (imagPart ((:+) (1.00000 :: Double) (0.00000 :: Double)))) ((:) (f_doubtest "complex_im" (1.00000 :: Double) (imagPart ((:+) (0.00000 :: Double) (1.00000 :: Double)))) 
-        ((:) (f_doubtest "complex_re" (0.00000 :: Double) (realPart ((:+) (0.00000 :: Double) (1.00000 :: Double)))) ((:) (f_doubtest "complex_re" (1.00000 :: Double) (realPart 
-        ((:+) (1.00000 :: Double) (0.00000 :: Double)))) ((:) (f_doubtest "mul_x" (0.00000 :: Double) (realPart (((*) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) ((:+) (0.00000 :: Double) (0.00000 :: Double))))) 
-        ((:) (f_doubtest "mul_x" (0.00000 :: Double) (imagPart (((*) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) ((:+) (0.00000 :: Double) (0.00000 :: Double))))) ((:) 
-        (f_doubtest "mul_x" (((negate) :: (Double -> Double)) (5.00000 :: Double)) (realPart (((*) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) 
-        (f_doubtest "mul_x" (10.0000 :: Double) (imagPart (((*) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) (f_doubtest "sub_x" (0.00000 :: Double) 
-        (realPart (((-) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) ((:+) (0.00000 :: Double) (0.00000 :: Double))))) ((:) (f_doubtest "sub_x" (0.00000 :: Double) (imagPart 
-        (((-) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (0.00000 :: Double) (0.00000 :: Double)) ((:+) (0.00000 :: Double) (0.00000 :: Double))))) ((:) (f_doubtest "sub_x" (((negate) :: (Double -> Double)) (2.00000 :: Double)) (realPart 
-        (((-) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) (f_doubtest "sub_x" (((negate) :: (Double -> Double)) (2.00000 :: Double)) (imagPart 
-        (((-) :: (Complex_type -> Complex_type -> Complex_type)) ((:+) (1.00000 :: Double) (2.00000 :: Double)) ((:+) (3.00000 :: Double) (4.00000 :: Double))))) ((:) (f_inttest "seq" (2 :: Int) (seq (enumFrom (1 :: Int)) (2 :: Int))) 
-        ((:) (f_strtest "**" "this one" "should fail") [])))))))))))))))))))))))))))))))))))))))))));
-    f_abs a_x=
-        if (((<=) :: (Double -> Double -> Bool)) a_x (0.00000 :: Double))
-        then (((negate) :: (Double -> Double)) a_x)
-        else 
-            a_x;
-    c_and=f_foldr (&&) True;
-    f_cjustify a_n a_s=
-        let { 
-            r_margin=((-) :: (Int -> Int -> Int)) a_n (length a_s);
-            r_lmargin=((div) :: (Int -> Int -> Int)) r_margin (2 :: Int);
-            r_rmargin=((-) :: (Int -> Int -> Int)) r_margin r_lmargin
-         } in  (++) (f_spaces r_lmargin) ((++) a_s (f_spaces r_rmargin));
-    c_concat=f_foldr (++) [];
-    f_const a_x a_y=a_x;
-    f_digit a_x=
-        if (((<=) :: (Int -> Int -> Bool)) (fromEnum '0') (fromEnum a_x))
-        then (((<=) :: (Int -> Int -> Bool)) (fromEnum a_x) (fromEnum '9'))
-        else 
-            False;
-    f_drop 0 a_x=a_x;
-    f_drop a_n (a_a:a_x)=f_drop (((-) :: (Int -> Int -> Int)) a_n (1 :: Int)) a_x;
-    f_drop a_n a_x=[];
-    f_dropwhile a_f []=[];
-    f_dropwhile a_f (a_a:a_x)=
-        if (a_f a_a)
-        then (f_dropwhile a_f a_x)
-        else 
-            ((:) a_a a_x);
-    c_e=((exp) :: (Double -> Double)) (1.00000 :: Double);
-    f_filter a_f a_x=[a_a|a_a<-a_x,a_f a_a];
-    f_foldl a_op a_r []=a_r;
-    f_foldl a_op a_r (a_a:a_x)=
-        let { 
-            f_strict a_f a_x=seq a_x (a_f a_x)
-         } in  f_foldl a_op (f_strict a_op a_r a_a) a_x;
-    f_foldl1 a_op (a_a:a_x)=f_foldl a_op a_a a_x;
-    f_foldr a_op a_r []=a_r;
-    f_foldr a_op a_r (a_a:a_x)=a_op a_a (f_foldr a_op a_r a_x);
-    f_foldr1 a_op (a_a:[])=a_a;
-    f_foldr1 a_op (a_a:a_b:a_x)=a_op a_a (f_foldr1 a_op ((:) a_b a_x));
-    f_fst (a_a,a_b)=a_a;
-    f_id a_x=a_x;
-    f_index a_x=
-        let { 
-            f_f a_n []=[];
-            f_f a_n (a_a:a_x)=(:) a_n (f_f (((+) :: (Int -> Int -> Int)) a_n (1 :: Int)) a_x)
-         } in  f_f (0 :: Int) a_x;
-    f_init (a_a:a_x)=
-        if (null a_x)
-        then []
-        else 
-            ((:) a_a (f_init a_x));
-    f_iterate a_f a_x=(:) a_x (f_iterate a_f (a_f a_x));
-    f_last a_x=(!!) a_x (((-) :: (Int -> Int -> Int)) (length a_x) (1 :: Int));
-    f_lay []=[];
-    f_lay (a_a:a_x)=(++) a_a ((++) "\n" (f_lay a_x));
-    f_layn a_x=
-        let { 
-            f_f a_n []=[];
-            f_f a_n (a_a:a_x)=(++) (f_rjustify (4 :: Int) (show a_n)) ((++) ") " ((++) a_a ((++) "\n" 
-                (f_f (((+) :: (Int -> Int -> Int)) a_n (1 :: Int)) a_x))))
-         } in  f_f (1 :: Int) a_x;
-    f_letter a_c=
-        if (
-            if (((<=) :: (Int -> Int -> Bool)) (fromEnum 'a') (fromEnum a_c))
-            then (((<=) :: (Int -> Int -> Bool)) (fromEnum a_c) (fromEnum 'z'))
-            else 
-                False)
-        then True
-        else 
-        if (((<=) :: (Int -> Int -> Bool)) (fromEnum 'A') (fromEnum a_c))
-        then (((<=) :: (Int -> Int -> Bool)) (fromEnum a_c) (fromEnum 'Z'))
-        else 
-            False;
-    f_limit (a_a:a_b:a_x)=
-        if (((==) :: (Double -> Double -> Bool)) a_a a_b)
-        then a_a
-        else 
-            (f_limit ((:) a_b a_x));
-    f_lines []=[];
-    f_lines (a_a:a_x)=
-        let { 
-            r_xs=
-                if (pair a_x)
-                then (f_lines a_x)
-                else 
-                    ((:) [] [])
-         } in  
-            if (((==) :: (Int -> Int -> Bool)) (fromEnum a_a) (fromEnum '\o012'))
-            then ((:) [] (f_lines a_x))
-            else 
-                ((:) ((:) a_a (head r_xs)) (tail r_xs));
-    f_ljustify a_n a_s=(++) a_s (f_spaces (((-) :: (Int -> Int -> Int)) a_n (length a_s)));
-    f_map a_f a_x=[a_f a_a|a_a<-a_x];
-    f_map2 a_f a_x a_y=[a_f a_a a_b|(a_a,a_b)<-f_zip2 a_x a_y];
-    f_max a_xs=f_foldl1 f_max2 a_xs;
-    f_max2 a_a a_b=
-        if (((>=) :: (Int -> Int -> Bool)) a_a a_b)
-        then a_a
-        else 
-            a_b;
-    f_member a_x a_a=c_or (f_map (flip ((==) :: (Int -> Int -> Bool)) a_a) a_x);
-    f_merge [] a_y=a_y;
-    f_merge (a_a:a_x) []=(:) a_a a_x;
-    f_merge (a_a:a_x) (a_b:a_y)=
-        if (((<=) :: (Int -> Int -> Bool)) a_a a_b)
-        then ((:) a_a (f_merge a_x ((:) a_b a_y)))
-        else 
-            ((:) a_b (f_merge ((:) a_a a_x) a_y));
-    f_min a_xs=f_foldl1 f_min2 a_xs;
-    f_min2 a_a a_b=
-        if (((>) :: (Int -> Int -> Bool)) a_a a_b)
-        then a_b
-        else 
-            a_a;
-    f_mkset []=[];
-    f_mkset (a_a:a_x)=(:) a_a (f_filter (flip ((/=) :: (Int -> Int -> Bool)) a_a) (f_mkset a_x));
-    c_or=f_foldr (||) False;
-    c_pi=((*) :: (Double -> Double -> Double)) (4.00000 :: Double) (((atan) :: (Double -> Double)) (1.00000 :: Double));
-    f_postfix a_a a_x=(++) a_x ((:) a_a []);
-    c_product=f_foldl ((*) :: (Int -> Int -> Int)) (1 :: Int);
-    f_rep a_n a_x=f_take a_n (f_repeat a_x);
-    f_repeat a_x=(:) a_x (f_repeat a_x);
-    c_reverse=f_foldl (flip (:)) [];
-    f_rjustify a_n a_s=(++) (f_spaces (((-) :: (Int -> Int -> Int)) a_n (length a_s))) a_s;
-    f_scan a_op=
-        let { 
-            f_g a_r []=(:) a_r [];
-            f_g a_r (a_a:a_x)=(:) a_r (f_g (a_op a_r a_a) a_x)
-         } in  f_g;
-    f_snd (a_a,a_b)=a_b;
-    f_sort a_x=
-        let { 
-            r_n=length a_x;
-            r_n2=((div) :: (Int -> Int -> Int)) r_n (2 :: Int)
-         } in  
-            if (((<=) :: (Int -> Int -> Bool)) r_n (1 :: Int))
-            then a_x
-            else 
-                (f_merge (f_sort (f_take r_n2 a_x)) (f_sort (f_drop r_n2 a_x)));
-    f_spaces a_n=f_rep a_n ' ';
-    f_subtract a_x a_y=((-) :: (Int -> Int -> Int)) a_y a_x;
-    c_sum=f_foldl ((+) :: (Int -> Int -> Int)) (0 :: Int);
-data 
-    T_sys_message=F_Stdout [Char] | F_Stderr [Char] | F_Tofile [Char] [Char] | F_Closefile [Char] | F_Appendfile [Char] | F_System [Char] | F_Exit Int;
-    f_take 0 a_x=[];
-    f_take a_n (a_a:a_x)=(:) a_a (f_take (((-) :: (Int -> Int -> Int)) a_n (1 :: Int)) a_x);
-    f_take a_n a_x=[];
-    f_takewhile a_f []=[];
-    f_takewhile a_f (a_a:a_x)=
-        if (a_f a_a)
-        then ((:) a_a (f_takewhile a_f a_x))
-        else 
-            [];
-    f_transpose a_x=
-        let { 
-            r_x'=f_takewhile pair a_x
-         } in  
-            if (null r_x')
-            then []
-            else 
-                ((:) (f_map head r_x') (f_transpose (f_map tail r_x')));
-    f_until a_f a_g a_x=
-        if (a_f a_x)
-        then a_x
-        else 
-            (f_until a_f a_g (a_g a_x));
-    f_zip2 (a_a:a_x) (a_b:a_y)=(:) (a_a,a_b) (f_zip2 a_x a_y);
-    f_zip2 a_x a_y=[];
-    f_zip3 (a_a:a_x) (a_b:a_y) (a_c:a_z)=(:) (a_a,a_b,a_c) (f_zip3 a_x a_y a_z);
-    f_zip3 a_x a_y a_z=[];
-    f_zip4 (a_a:a_w) (a_b:a_x) (a_c:a_y) (a_d:a_z)=(:) (a_a,a_b,a_c,a_d) (f_zip4 a_w a_x a_y a_z);
-    f_zip4 a_w a_x a_y a_z=[];
-    f_zip5 (a_a:a_v) (a_b:a_w) (a_c:a_x) (a_d:a_y) (a_e:a_z)=(:) (a_a,a_b,a_c,a_d,a_e) (f_zip5 a_v a_w a_x a_y a_z);
-    f_zip5 a_v a_w a_x a_y a_z=[];
-    f_zip6 (a_a:a_u) (a_b:a_v) (a_c:a_w) (a_d:a_x) (a_e:a_y) (a_f:a_z)=(:) (a_a,a_b,a_c,a_d,a_e,a_f) (f_zip6 a_u a_v a_w a_x a_y a_z);
-    f_zip6 a_u a_v a_w a_x a_y a_z=[];
-    f_zip (a_x,a_y)=f_zip2 a_x a_y;
-    main = putStr (f_main c_input)
-}
diff --git a/ghc/tests/programs/fast2haskell/Makefile b/ghc/tests/programs/fast2haskell/Makefile
deleted file mode 100644 (file)
index c85f52d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/fast2haskell/Word.hs b/ghc/tests/programs/fast2haskell/Word.hs
deleted file mode 100644 (file)
index 9161622..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
--- mimic "hbc_library" module, Word.
--- [seriously non-std Haskell here]
-
-module Word2 (
-       Bits(..),               -- class
-       Byte, Short, Word,      -- data types: abstract
-       byteToInt, shortToInt, wordToInt
-    ) where
-
-import PrelGHC
-import PrelBase
-
-infixl 8 `bitLsh`, `bitRsh`
-infixl 7 `bitAnd`
-infixl 6 `bitXor`
-infixl 5 `bitOr`
-
-class Bits a where
-       bitAnd, bitOr, bitXor :: a -> a -> a
-       bitCompl :: a -> a
-       bitRsh, bitLsh :: a -> Int -> a
-       bitSwap :: a -> a
-       bit0 :: a
-       bitSize :: a -> Int
-
-------------------------------------------------------------------
-data Word = Word Word# deriving (Eq, Ord)
-
-instance Bits Word where
-       bitAnd (Word x) (Word y) = case and# x y of z -> Word z
-       bitOr  (Word x) (Word y) = case or#  x y of z -> Word z
-       bitXor (Word x) (Word y) = error "later..." -- Word (XOR x y)
-       bitCompl (Word x)        = case not# x of x' -> Word x'
-       bitLsh (Word x) (I# y)   = case shiftL# x y of z -> Word z
-       bitRsh (Word x) (I# y)   = case shiftRL# x y of z -> Word z
-        bitSwap (Word x)         = --Word (OR (LSH x 16) (AND (RSH x 16) 65535))
-                                  case shiftL# x 16# of { a# ->
-                                  case shiftRL# x 16# of { b# ->
-                                  case and# b# (i2w 65535#) of { c# ->
-                                  case or#  a# c# of  { r# ->
-                                  Word r# }}}}
-       bit0                     = Word (i2w 1#)
-       bitSize (Word _)         = 32
-
-w2i x = word2Int# x
-i2w x = int2Word# x
-
-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)
-       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 i
-         = case fromInteger i of { I# z# ->
-           Word (i2w z#) }
-
-instance Show Word where
-       showsPrec _ (Word w) =
-               let i = toInteger (I# (w2i w)) + (if geWord# w (i2w 0#) then 0 else  2*(toInteger (maxBound::Int) + 1))
-               in  showString (conv 8 i)
-
-conv :: Int -> Integer -> String
-conv 0 _ = ""
-
--- Was: 
---     conv n i = conv (n-1) q ++ ["0123456789ABCDEF"!!r] where (q, r) = quotRem (fromInteger i) 16
--- But !!'s type has changed (Haskell 1.3) to take an Int index
-
-conv n i = conv (n-1) q ++ ["0123456789ABCDEF"!!fromInteger r] 
-         where 
-          (q, r) = quotRem i 16
-
-------------------------------------------------------------------
-data Short = Short Int# deriving (Eq, Ord)
-
-------------------------------------------------------------------
-data Byte = Byte Int# deriving (Eq, Ord)
-
-------------------------------------------------------------------
-wordToInt :: Word -> Int
-wordToInt (Word w) = I# (w2i w)
-
-shortToInt :: Short -> Int
-shortToInt (Short w) = I# w
-
-byteToInt :: Byte -> Int
-byteToInt (Byte w) = I# w
diff --git a/ghc/tests/programs/fast2haskell/fast2haskell.stdout b/ghc/tests/programs/fast2haskell/fast2haskell.stdout
deleted file mode 100644 (file)
index 2f49316..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-43 tests passed and 1 failed
-44     **      ok: this one    is: should fail
diff --git a/ghc/tests/programs/fexport/For.hs b/ghc/tests/programs/fexport/For.hs
deleted file mode 100644 (file)
index 306c3a9..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-module For where
-
-{-
-import IOExts
-import Addr
---y = putChar
-
-count :: IORef Int -> IO Int
-count ref = do
-  x <- readIORef ref
-  writeIORef ref (x+1)
-  return x
-
-createCounter :: IO Addr
-createCounter = do
-  ref <- newIORef 0
-  mkCounter (count ref)
-
-foreign import "sin" msin :: Double -> IO Double
--}
-
-foreign export "putChar" putChar :: Char -> IO ()
-
---foreign export "createCounter" createCounter :: IO Addr
---foreign export dynamic mkCounter :: (IO Int) -> IO Addr
diff --git a/ghc/tests/programs/fexport/Makefile b/ghc/tests/programs/fexport/Makefile
deleted file mode 100644 (file)
index d1dd144..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts -no-hs-main
-
-CC = $(HC)
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/programs/fexport/fexport.stdout b/ghc/tests/programs/fexport/fexport.stdout
deleted file mode 100644 (file)
index a5c1966..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Hello, world
diff --git a/ghc/tests/programs/fexport/test.c b/ghc/tests/programs/fexport/test.c
deleted file mode 100644 (file)
index 3712493..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "For_stub.h"
-
-int
-main(int argc, char *argv[])
-{
-  int i;
-  char msg[] = "Hello, world\n";
-
-  startupHaskell(argc,argv);
-
-  for (i=0; i < sizeof(msg) - 1; i++) {
-     putChar(msg[i]);
-  }
-  shutdownHaskell();
-}
diff --git a/ghc/tests/programs/fun_insts/Main.hs b/ghc/tests/programs/fun_insts/Main.hs
deleted file mode 100644 (file)
index fece8c9..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! Defines functions as an instance of Num
-
-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)
-    f * g    = \x -> f x * g x
-    fromInteger n = \x -> fromInteger n
-
-ss :: Float -> Float
-cc :: Float -> Float
-tt :: Float -> Float
-
-ss = sin * sin
-cc = cos * cos
-tt = ss + cc
--- sin**2 + cos**2 = 1
-
-main = putStrLn ((show (tt 0.4))++ "  "++(show (tt 1.652)))
diff --git a/ghc/tests/programs/fun_insts/Makefile b/ghc/tests/programs/fun_insts/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/fun_insts/fun_insts.stdout b/ghc/tests/programs/fun_insts/fun_insts.stdout
deleted file mode 100644 (file)
index 7886e55..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.0  1.0
diff --git a/ghc/tests/programs/galois_raytrace/CSG.hs b/ghc/tests/programs/galois_raytrace/CSG.hs
deleted file mode 100644 (file)
index ba37a17..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module CSG(module Construct,
-          module Geometry,
-          module Intersections,
-          module Interval,
-          module Misc) where
-
-import Construct
-import Geometry
-import Intersections
-import Interval
-import Misc
diff --git a/ghc/tests/programs/galois_raytrace/Construct.hs b/ghc/tests/programs/galois_raytrace/Construct.hs
deleted file mode 100644 (file)
index 90dbc60..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Construct
-    ( Surface (..)
-    , Face (..)
-    , CSG (..)
-    , Texture
-    , Transform
-    , union, intersect, difference
-    , plane, sphere, cube, cylinder, cone
-    , transform
-    , translate, translateX, translateY, translateZ
-    , scale, scaleX, scaleY, scaleZ, uscale
-    , rotateX, rotateY, rotateZ
-    , eye, translateEye
-    , rotateEyeX, rotateEyeY, rotateEyeZ
-    ) where
-
-import Geometry
-
--- In each case, we model the surface by a point and a pair of tangent vectors.
--- This gives us enough information to determine the surface
--- normal at that point, which is all that is required by the current
--- illumination model.  We can't just save the surface normal because
--- that isn't preserved by transformations.
-
-data Surface
-  = Planar Point Vector Vector
-  | Spherical Point Vector Vector
-  | Cylindrical Point Vector Vector
-  | Conic Point Vector Vector
-  deriving Show
-
-data Face
-  = PlaneFace
-  | SphereFace
-  | CubeFront
-  | CubeBack
-  | CubeLeft
-  | CubeRight
-  | CubeTop
-  | CubeBottom
-  | CylinderSide
-  | CylinderTop
-  | CylinderBottom
-  | ConeSide
-  | ConeBase
-  deriving Show
-
-data CSG a
-  = Plane a
-  | Sphere a
-  | Cylinder a
-  | Cube a
-  | Cone a
-  | Transform Matrix Matrix (CSG a)
-  | Union (CSG a) (CSG a)
-  | Intersect (CSG a) (CSG a)
-  | Difference (CSG a) (CSG a)
-  | Box Box (CSG a)
-  deriving (Show)
-
--- the data returned for determining surface texture
--- the Face tells which face of a primitive this is
--- the Point is the point of intersection in object coordinates
--- the a is application-specific texture information
-type Texture a = (Face, Point, a)
-
-union, intersect, difference           :: CSG a -> CSG a -> CSG a
-
-union p@(Box b1 _) q@(Box b2 _) = Box (mergeBox b1 b2) (Union p q)
-union p q = Union p q
-
--- rather pessimistic
-intersect p@(Box b1 _) q@(Box b2 _) = Box (mergeBox b1 b2) (Intersect p q)
-intersect p q = Intersect p q
-
-difference (Box b1 p) q = Box b1 (Difference p q)
--- no need to box again inside
--- difference p@(Box b1 _) q = Box b1 (Difference p q)
-difference p q = Difference p q
-
-mkBox b p = Box b p
-
-plane, sphere, cube, cylinder, cone    :: a -> CSG a
-
-plane = Plane
-sphere s =
-    mkBox (B (-1 - epsilon) (1 + epsilon)
-            (-1 - epsilon) (1 + epsilon)
-            (-1 - epsilon) (1 + epsilon)) (Sphere s)
-cone s =
-    mkBox (B (-1 - epsilon) (1 + epsilon)
-            (   - epsilon) (1 + epsilon)
-            (-1 - epsilon) (1 + epsilon)) (Cone s)
-cube s =
-    mkBox (B (- epsilon) (1 + epsilon)
-            (- epsilon) (1 + epsilon)
-            (- epsilon) (1 + epsilon)) (Cube s)
-cylinder s =
-    mkBox (B (-1 - epsilon) (1 + epsilon)
-            (   - epsilon) (1 + epsilon)
-            (-1 - epsilon) (1 + epsilon)) (Cylinder s)
-
-----------------------------
--- Object transformations
-----------------------------
-
-type Transform = (Matrix, Matrix)
-
-transform :: Transform -> CSG a -> CSG a
-
-transform (m, m')   (Transform mp mp' p) = Transform  (multMM m mp)       (multMM mp' m') p
-transform mm'       (Union p q)          = Union      (transform mm' p)   (transform mm' q)
-transform mm'       (Intersect p q)      = Intersect  (transform mm' p)   (transform mm' q)
-transform mm'       (Difference p q)     = Difference (transform mm' p)   (transform mm' q)
-transform mm'@(m,_) (Box box p)          = Box        (transformBox m box) (transform mm' p)
-transform (m, m')   prim                 = Transform  m m' prim
-
-translate                              :: Coords -> CSG a -> CSG a
-translateX, translateY, translateZ     :: Double -> CSG a -> CSG a
-
-translate xyz = transform $ transM xyz
-translateX x = translate (x, 0, 0)
-translateY y = translate (0, y, 0)
-translateZ z = translate (0, 0, z)
-
-scale                                  :: Coords -> CSG a -> CSG a
-scaleX, scaleY, scaleZ, uscale         :: Double -> CSG a -> CSG a
-
-scale xyz = transform $ scaleM xyz
-scaleX x = scale (x, 1, 1)
-scaleY y = scale (1, y, 1)
-scaleZ z = scale (1, 1, z)
-uscale u = scale (u,u,u)
-
-rotateX, rotateY, rotateZ              :: Radian -> CSG a -> CSG a
-
-rotateX a = transform $ rotxM a
-rotateY a = transform $ rotyM a
-rotateZ a = transform $ rotzM a
-
-unit = matrix
-      ( ( 1.0, 0.0, 0.0, 0.0 ),
-       ( 0.0, 1.0, 0.0, 0.0 ),
-       ( 0.0, 0.0, 1.0, 0.0 ),
-       ( 0.0, 0.0, 0.0, 1.0 ) )
-
-transM (x, y, z)
-  = ( matrix
-      ( ( 1, 0, 0, x ),
-       ( 0, 1, 0, y ),
-       ( 0, 0, 1, z ),
-       ( 0, 0, 0, 1 ) ),
-      matrix
-      ( ( 1, 0, 0, -x ),
-       ( 0, 1, 0, -y ),
-       ( 0, 0, 1, -z ),
-       ( 0, 0, 0,  1 ) ) )
-
-scaleM (x, y, z)
-  = ( matrix
-      ( (   x',    0,    0, 0 ),
-       (    0,   y',    0, 0 ),
-       (    0,    0,   z', 0 ),
-       (    0,    0,    0, 1 ) ),
-      matrix
-      ( ( 1/x',    0,    0, 0 ),
-       (    0, 1/y',    0, 0 ),
-       (    0,    0, 1/z', 0 ),
-       (    0,    0,    0, 1 ) ) )
-  where x' = nonZero x
-       y' = nonZero y
-       z' = nonZero z
-
-rotxM t
-  = ( matrix
-      ( (      1,      0,      0, 0 ),
-       (      0,  cos t, -sin t, 0 ),
-       (      0,  sin t,  cos t, 0 ),
-       (      0,      0,      0, 1 ) ),
-      matrix
-      ( (      1,      0,      0, 0 ),
-       (      0,  cos t,  sin t, 0 ),
-       (      0, -sin t,  cos t, 0 ),
-       (      0,      0,      0, 1 ) ) )
-
-rotyM t
-  = ( matrix
-      ( (  cos t,      0,  sin t, 0 ),
-       (      0,      1,      0, 0 ),
-       ( -sin t,      0,  cos t, 0 ),
-       (      0,      0,      0, 1 ) ),
-      matrix
-      ( (  cos t,      0, -sin t, 0 ),
-       (      0,      1,      0, 0 ),
-       (  sin t,      0,  cos t, 0 ),
-       (      0,      0,      0, 1 ) ) )
-
-rotzM t
-  = ( matrix
-      ( (  cos t, -sin t,      0, 0 ),
-       (  sin t,  cos t,      0, 0 ),
-       (      0,      0,      1, 0 ),
-       (      0,      0,      0, 1 ) ),
-      matrix
-      ( (  cos t,  sin t,      0, 0 ),
-       ( -sin t,  cos t,      0, 0 ),
-       (      0,      0,      1, 0 ),
-       (      0,      0,      0, 1 ) ) )
-
--------------------
--- Eye transformations
-
--- These are used to specify placement of the eye.
--- `eye' starts out at (0, 0, -1).
--- These are implemented as inverse transforms of the model.
--------------------
-
-eye                                    :: Transform
-translateEye                           :: Coords -> Transform -> Transform
-rotateEyeX, rotateEyeY, rotateEyeZ     :: Radian -> Transform -> Transform
-
-eye = (unit, unit)
-translateEye xyz (eye1, eye2)
-  = (multMM m1 eye1, multMM eye2 m2)
-  where (m1, m2) = transM xyz
-rotateEyeX t (eye1, eye2)
-  = (multMM m1 eye1, multMM eye2 m2)
-  where (m1, m2) = rotxM t
-rotateEyeY t (eye1, eye2)
-  = (multMM m1 eye1, multMM eye2 m2)
-  where (m1, m2) = rotyM t
-rotateEyeZ t (eye1, eye2)
-  = (multMM m1 eye1, multMM eye2 m2)
-  where (m1, m2) = rotzM t
-
--------------------
--- Bounding boxes
--------------------
-
-mergeBox (B x11  x12  y11  y12  z11  z12) (B x21  x22  y21  y22  z21  z22) =
-    B (x11 `min` x21) (x12 `max` x22)
-      (y11 `min` y21) (y12 `max` y22)
-      (z11 `min` z21) (z12 `max` z22)
-
-transformBox t (B x1  x2  y1  y2  z1  z2)
-  = (B (foldr1 min (map xCoord pts'))
-       (foldr1 max (map xCoord pts'))
-       (foldr1 min (map yCoord pts'))
-       (foldr1 max (map yCoord pts'))
-       (foldr1 min (map zCoord pts'))
-       (foldr1 max (map zCoord pts')))
-  where pts' = map (multMP t) pts
-       pts =  [point x1 y1 z1,
-               point x1 y1 z2,
-               point x1 y2 z1,
-               point x1 y2 z2,
-               point x2 y1 z1,
-               point x2 y1 z2,
-               point x2 y2 z1,
-               point x2 y2 z2]
diff --git a/ghc/tests/programs/galois_raytrace/Data.hs b/ghc/tests/programs/galois_raytrace/Data.hs
deleted file mode 100644 (file)
index 1f716ea..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Data where
-
-import Array
-import IOExts
-
-import CSG      
-import Geometry
-import Illumination
-import Primitives
-import Surface
-
--- Now the parsed (expresssion) language
-
-type Name = String
-
-type Code = [GMLToken]
-
-data GMLToken
-    -- All these can occur in parsed code
-       = TOp     GMLOp
-       | TId     Name
-       | TBind   Name
-       | TBool   Bool
-       | TInt    Int
-       | TReal   Double
-       | TString String
-       | TBody   Code
-       | TArray  Code
-       | TApply
-       | TIf
-        -- These can occur in optimized/transformed code
-        -- NONE (yet!)
-
-
-instance Show GMLToken where
-   showsPrec p (TOp op)     = shows op
-   showsPrec p (TId id)     = showString id
-   showsPrec p (TBind id)   = showString ('/' : id)
-   showsPrec p (TBool bool) = shows bool
-   showsPrec p (TInt i)     = shows i
-   showsPrec p (TReal d)    = shows d
-   showsPrec p (TString s)  = shows s
-   showsPrec p (TBody code) = shows code
-   showsPrec p (TArray code) = showString "[ " 
-                            . foldr (\ a b -> a . showChar ' ' . b) id (map shows code) 
-                            . showString "]"
-   showsPrec p (TApply)     = showString "apply" 
-   showsPrec p (TIf)        = showString "if" 
-
-   showList  code = showString "{ " 
-                  . foldr (\ a b -> a . showChar ' ' . b) id (map shows code) 
-                  . showString "}"
-
-
--- Now the value language, used inside the interpreter
-
-type Stack = [GMLValue]
-
-data GMLValue
-       = VBool    !Bool
-       | VInt     !Int
-       | VReal    !Double
-       | VString  String
-       | VClosure Env Code
-       | VArray   (Array Int GMLValue)         -- FIXME: Haskell array
-        -- uses the interpreter version of point
-       | VPoint   { xPoint :: !Double
-                   , yPoint :: !Double 
-                   , zPoint :: !Double 
-                   } 
-        -- these are abstract to the interpreter
-       | VObject  Object
-       | VLight   Light 
-       -- This is an abstract object, used by the abstract interpreter
-       | VAbsObj  AbsObj
-
-
--- There are only *3* basic abstract values,
--- and the combinators also.
-
-data AbsObj 
-    = AbsFACE 
-    | AbsU 
-    | AbsV
-      deriving (Show)
-
-instance Show GMLValue where
-   showsPrec p value = showString (showStkEle value)
-
-showStkEle :: GMLValue -> String
-showStkEle (VBool b)      = show b ++ " :: Bool"
-showStkEle (VInt i)       = show i ++ " :: Int"
-showStkEle (VReal r)      = show r ++ " :: Real"
-showStkEle (VString s)    = show s ++ " :: String"
-showStkEle (VClosure {})  = "<closure> :: Closure"
-showStkEle (VArray arr)   
-     = "<array (" ++  show (succ (snd (bounds arr))) ++ " elements)> :: Array"
-showStkEle (VPoint x y z) = "(" ++ show x 
-                         ++ "," ++ show y
-                         ++ "," ++ show z
-                         ++ ") :: Point"
-showStkEle (VObject {})   = "<Object> :: Object"
-showStkEle (VLight {})    = "<Light> :: Object"
-showStkEle (VAbsObj vobs) = "{{ " ++ show vobs ++ "}} :: AbsObj"
-
--- An abstract environment
-
-newtype Env = Env [(Name, GMLValue)] deriving Show
-
-emptyEnv :: Env
-emptyEnv = Env []
-
-extendEnv :: Env -> Name -> GMLValue -> Env
-extendEnv (Env e) n v = Env ((n, v):e)
-
-lookupEnv :: Env -> Name -> Maybe GMLValue
-lookupEnv (Env e) n = lookup n e
-
--- All primitive operators
--- 
--- There is no Op_apply, Op_false, Op_true and Op_if
--- (because they appear explcitly in the rules).
-
-data GMLOp
-   = Op_acos
-   | Op_addi
-   | Op_addf
-   | Op_asin
-   | Op_clampf
-   | Op_cone
-   | Op_cos
-   | Op_cube
-   | Op_cylinder
-   | Op_difference
-   | Op_divi
-   | Op_divf
-   | Op_eqi
-   | Op_eqf
-   | Op_floor
-   | Op_frac
-   | Op_get
-   | Op_getx
-   | Op_gety
-   | Op_getz
-   | Op_intersect
-   | Op_length
-   | Op_lessi
-   | Op_lessf
-   | Op_light
-   | Op_modi
-   | Op_muli
-   | Op_mulf
-   | Op_negi
-   | Op_negf
-   | Op_plane
-   | Op_point
-   | Op_pointlight
-   | Op_real
-   | Op_render
-   | Op_rotatex
-   | Op_rotatey
-   | Op_rotatez
-   | Op_scale
-   | Op_sin
-   | Op_sphere
-   | Op_spotlight
-   | Op_sqrt
-   | Op_subi
-   | Op_subf
-   | Op_trace       -- non standard, for debugging GML programs
-   | Op_translate
-   | Op_union
-   | Op_uscale
-    deriving (Eq,Ord,Ix,Bounded)
-
-instance Show GMLOp where
-   showsPrec _ op = showString (opNameTable ! op)
-
-
-------------------------------------------------------------------------------
-
--- And how we use the op codes (there names, there interface)
-
--- These keywords include, "apply", "if", "true" and "false",
--- they are not parsed as operators, but are
--- captured by the parser as a special case.
-
-keyWords :: [String]
-keyWords = [ kwd | (kwd,_,_) <- opcodes ]
-
--- Lookup has to look from the start (or else...)
-opTable :: [(Name,GMLToken)]
-opTable = [ (kwd,op) | (kwd,op,_) <- opcodes ]
-
-opNameTable :: Array GMLOp Name
-opNameTable = array (minBound,maxBound) 
-                 [ (op,name) | (name,TOp op,_) <- opcodes ]
-
-undef = error "undefined function"
-image = error "undefined function: talk to image group"
-
--- typically, its best to have *one* opcode table,
--- so that mis-alignments do not happen.
-
-opcodes :: [(String,GMLToken,PrimOp)]
-opcodes =
- [ ("apply",     TApply,               error "incorrect use of apply")
- , ("if",        TIf,                  error "incorrect use of if")
- , ("false",     TBool False,          error "incorrect use of false")
- , ("true",      TBool True,           error "incorrect use of true")
- ] ++ map (\ (a,b,c) -> (a,TOp b,c))
-   -- These are just invocation, any coersions need to occur between here
-   -- and before arriving at the application code (like deg -> rad).
- [ ("acos",      Op_acos,       Real_Real (rad2deg . acos))
- , ("addi",      Op_addi,       Int_Int_Int (+))
- , ("addf",      Op_addf,       Real_Real_Real (+))
- , ("asin",      Op_asin,       Real_Real (rad2deg . asin))
- , ("clampf",    Op_clampf,     Real_Real clampf)
- , ("cone",      Op_cone,       Surface_Obj cone)
- , ("cos",       Op_cos,        Real_Real (cos . deg2rad))
- , ("cube",      Op_cube,       Surface_Obj cube)
- , ("cylinder",          Op_cylinder,   Surface_Obj cylinder)
- , ("difference", Op_difference, Obj_Obj_Obj difference)
- , ("divi",      Op_divi,       Int_Int_Int (ourQuot))
- , ("divf",      Op_divf,       Real_Real_Real (/))
- , ("eqi",       Op_eqi,        Int_Int_Bool (==))
- , ("eqf",       Op_eqf,        Real_Real_Bool (==))
- , ("floor",     Op_floor,      Real_Int floor)
- , ("frac",      Op_frac,       Real_Real (snd . properFraction))
- , ("get",       Op_get,        Arr_Int_Value ixGet)
- , ("getx",      Op_getx,       Point_Real (\ x y z -> x))
- , ("gety",      Op_gety,       Point_Real (\ x y z -> y))
- , ("getz",      Op_getz,       Point_Real (\ x y z -> z))
- , ("intersect",  Op_intersect,  Obj_Obj_Obj intersect)
- , ("length",    Op_length,     Arr_Int (succ . snd . bounds))
- , ("lessi",     Op_lessi,      Int_Int_Bool (<))
- , ("lessf",     Op_lessf,      Real_Real_Bool (<))
- , ("light",     Op_light,      Point_Color_Light light)
- , ("modi",      Op_modi,       Int_Int_Int (ourRem))
- , ("muli",      Op_muli,       Int_Int_Int (*))
- , ("mulf",      Op_mulf,       Real_Real_Real (*))
- , ("negi",      Op_negi,       Int_Int negate)
- , ("negf",      Op_negf,       Real_Real negate)
- , ("plane",     Op_plane,      Surface_Obj plane)
- , ("point",     Op_point,      Real_Real_Real_Point VPoint)
- , ("pointlight", Op_pointlight, Point_Color_Light pointlight)
- , ("real",      Op_real,       Int_Real fromIntegral)
- , ("render",    Op_render,     Render $ render eye)
- , ("rotatex",   Op_rotatex,    Obj_Real_Obj (\ o d -> rotateX (deg2rad d) o))
- , ("rotatey",   Op_rotatey,    Obj_Real_Obj (\ o d -> rotateY (deg2rad d) o)) 
- , ("rotatez",   Op_rotatez,    Obj_Real_Obj (\ o d -> rotateZ (deg2rad d) o))
- , ("scale",     Op_scale,      Obj_Real_Real_Real_Obj (\ o x y z -> scale (x,y,z) o))
- , ("sin",       Op_sin,        Real_Real (sin . deg2rad))
- , ("sphere",    Op_sphere,     Surface_Obj sphere') -- see comment at end of file
- , ("spotlight",  Op_spotlight,  Point_Point_Color_Real_Real_Light mySpotlight)
- , ("sqrt",      Op_sqrt,       Real_Real ourSqrt)
- , ("subi",      Op_subi,       Int_Int_Int (-))
- , ("subf",      Op_subf,       Real_Real_Real (-))
- , ("trace",      Op_trace,      Value_String_Value mytrace)
- , ("translate",  Op_translate,  Obj_Real_Real_Real_Obj (\ o x y z -> translate (x,y,z) o))
- , ("union",     Op_union,      Obj_Obj_Obj union)
- , ("uscale",    Op_uscale,     Obj_Real_Obj (\ o r -> uscale r o))
- ]
-
--- This enumerate all possible ways of calling the fixed primitives
-
--- The datatype captures the type at the *interp* level,
--- the type of the functional is mirrored on this (using Haskell types).
-
-data PrimOp
-
-    -- 1 argument 
-    = Int_Int         (Int -> Int)
-    | Real_Real       (Double -> Double)
-    | Point_Real      (Double -> Double -> Double -> Double)
-    | Surface_Obj     (SurfaceFn Color Double -> Object)
-    | Real_Int        (Double -> Int)
-    | Int_Real        (Int -> Double)
-    | Arr_Int         (Array Int GMLValue -> Int)
-
-    -- 2 arguments 
-    | Int_Int_Int     (Int -> Int -> Int)
-    | Int_Int_Bool    (Int -> Int -> Bool)
-    | Real_Real_Real  (Double -> Double -> Double)
-    | Real_Real_Bool  (Double -> Double -> Bool)
-    | Arr_Int_Value   (Array Int GMLValue -> Int -> GMLValue)
-
-    -- Many arguments, typically image mangling
-
-    | Obj_Obj_Obj            (Object -> Object -> Object)
-    | Point_Color_Light      (Coords -> Color -> Light)
-    | Real_Real_Real_Point   (Double -> Double -> Double -> GMLValue)
-    | Obj_Real_Obj           (Object -> Double -> Object)
-    | Obj_Real_Real_Real_Obj (Object -> Double -> Double -> Double -> Object)
-    | Value_String_Value     (GMLValue -> String -> GMLValue)
-
-    | Point_Point_Color_Real_Real_Light 
-                             (Coords -> Coords -> Color -> Radian -> Radian -> Light)
-    -- And finally render
-    | Render                 (Color -> [Light] -> Object -> Int -> Double -> Int -> Int -> String -> IO ())
-
-data Type 
-    = TyBool 
-    | TyInt 
-    | TyReal 
-    | TyString 
-    | TyCode 
-    | TyArray 
-    | TyPoint 
-    | TyObject 
-    | TyLight
-    | TyAlpha
-    | TyAbsObj
-      deriving (Eq,Ord,Ix,Bounded)
-
-typeTable = 
-  [ ( TyBool,   "Bool")
-  , ( TyInt,    "Int")
-  , ( TyReal,   "Real")
-  , ( TyString, "String")
-  , ( TyCode,   "Code")
-  , ( TyArray,  "Array")
-  , ( TyPoint,  "Point")
-  , ( TyObject, "Object")
-  , ( TyLight,  "Light")
-  , ( TyAlpha,  "<anything>")
-  , ( TyAbsObj, "<abs>")
-  ]
-
-typeNames = array (minBound,maxBound) typeTable
-
-instance Show Type where
-   showsPrec _ op = showString (typeNames ! op)
-
-getPrimOpType :: PrimOp -> [Type]
-getPrimOpType (Int_Int         _) = [TyInt]
-getPrimOpType (Real_Real       _) = [TyReal]
-getPrimOpType (Point_Real      _) = [TyPoint]
-getPrimOpType (Surface_Obj     _) = [TyCode]
-getPrimOpType (Real_Int        _) = [TyReal]
-getPrimOpType (Int_Real        _) = [TyInt]
-getPrimOpType (Arr_Int         _) = [TyArray]
-getPrimOpType (Int_Int_Int     _) = [TyInt,TyInt]
-getPrimOpType (Int_Int_Bool    _) = [TyInt,TyInt]
-getPrimOpType (Real_Real_Real  _) = [TyReal,TyReal]
-getPrimOpType (Real_Real_Bool  _) = [TyReal,TyReal]
-getPrimOpType (Arr_Int_Value   _) = [TyArray,TyInt]
-getPrimOpType (Obj_Obj_Obj            _) = [TyObject,TyObject]
-getPrimOpType (Point_Color_Light      _) = [TyPoint,TyPoint]
-getPrimOpType (Real_Real_Real_Point   _) = [TyReal,TyReal,TyReal]
-getPrimOpType (Obj_Real_Obj           _) = [TyObject,TyReal]
-getPrimOpType (Obj_Real_Real_Real_Obj _) = [TyObject,TyReal,TyReal,TyReal]
-getPrimOpType (Value_String_Value     _) = [TyAlpha,TyString]
-getPrimOpType (Point_Point_Color_Real_Real_Light _) 
-                                         = [TyPoint,TyPoint,TyPoint,TyReal,TyReal]
-getPrimOpType (Render                 _) = [TyPoint,
-                                            TyLight,
-                                            TyObject,
-                                            TyInt,
-                                            TyReal,
-                                            TyReal,
-                                            TyReal,
-                                            TyString]
-
-
--- Some primitives with better error message
-
-mytrace v s = trace (s ++" : "++ show v ++ "\n") v
-
-
-ixGet :: Array Int GMLValue -> Int -> GMLValue
-ixGet arr i
-   | inRange (bounds arr) i = arr ! i
-   | otherwise = error ("failed access with index value " 
-                     ++ show i 
-                     ++ " (should be between 0 and " 
-                     ++ show (snd (bounds arr)) ++ ")")
-
-ourQuot :: Int -> Int -> Int
-ourQuot _ 0 = error "attempt to use divi to divide by 0"
-ourQuot a b = a `quot` b
-
-ourRem :: Int -> Int -> Int
-ourRem _ 0 = error "attempt to use remi to divide by 0"
-ourRem a b = a `rem` b
-
-ourSqrt :: Double -> Double
-ourSqrt n | n < 0     = error "attempt to use sqrt on a negative number"
-          | otherwise = sqrt n
-
-
-mySpotlight p1 p2 col cutoff exp = spotlight p1 p2 col (deg2rad cutoff) exp
-
--- The problem specification gets the mapping for spheres backwards
--- (it maps the image from right to left).
--- We've fixed that in the raytracing library so that it goes from left
--- to right, but to keep the GML front compatible with the problem
--- statement, we reverse it here.
-
-sphere' :: SurfaceFn Color Double -> CSG (SurfaceFn Color Double)
-sphere' (SFun f) = sphere (SFun (\i u v -> f i (1 - u) v))
-sphere' s = sphere s
diff --git a/ghc/tests/programs/galois_raytrace/Eval.hs b/ghc/tests/programs/galois_raytrace/Eval.hs
deleted file mode 100644 (file)
index 9d00cd9..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Eval where
-
-import Array
-
-import IOExts
-
-import Geometry
-import CSG
-import Surface
-import Data
-import Parse (rayParse, rayParseF)
-
-class Monad m => MonadEval m where
-  doOp :: PrimOp -> GMLOp -> Stack -> m Stack
-  tick :: m ()
-  err  :: String -> m a
-
-  tick = return ()
-
-newtype Pure a = Pure a deriving Show
-
-instance Monad Pure where
-    Pure x >>= k = k x
-    return       = Pure
-    fail s       = error s
-
-instance MonadEval Pure where
-  doOp   = doPureOp 
-  err  s = error s
-
-instance MonadEval IO where
-  doOp prim op stk = do { -- putStrLn ("Calling " ++ show op
-                          --           ++ " << " ++ show stk ++ " >>")
-                          doAllOp  prim op stk
-                        }
-  err  s = error s
-
-data State
-       = State { env   :: Env
-               , stack :: Stack
-               , code  :: Code
-               } deriving Show
-
-callback :: Env -> Code -> Stack -> Stack
-callback env code stk
-      = case eval (State { env = env, stack = stk, code = code}) of
-             Pure stk -> stk
-
-{-# SPECIALIZE eval ::  State -> Pure Stack #-}
-{-# SPECIALIZE eval ::  State -> IO Stack #-}
-
-eval :: MonadEval m => State -> m Stack
-eval st =
-  do { () <- return () -- $ unsafePerformIO (print st)   -- Functional debugger
-     ; if moreCode st then
-       do { tick             -- tick first, so as to catch loops on new eval.
-            ; st' <- step st
-            ; eval st'
-            }
-        else return (stack st)
-     }
-     
-moreCode :: State -> Bool
-moreCode (State {code = []}) = False
-moreCode _                   = True
-
--- Step has a precondition that there *is* code to run
-{-# SPECIALIZE step ::  State -> Pure State #-}
-{-# SPECIALIZE step ::  State -> IO State #-}
-step :: MonadEval m => State -> m State
-
--- Rule 1: Pushing BaseValues
-step st@(State{ stack = stack, code = (TBool b):cs })    
-    = return (st { stack = (VBool b):stack,    code = cs })
-step st@(State{ stack = stack, code = (TInt i):cs })     
-    = return (st { stack = (VInt i):stack,     code = cs })
-step st@(State{ stack = stack, code = (TReal r):cs })    
-    = return (st { stack = (VReal r):stack,    code = cs })
-step st@(State{ stack = stack, code = (TString s):cs })  
-    = return (st { stack = (VString s):stack,  code = cs })
-
--- Rule 2: Name binding
-step st@(State{ env = env, stack = (v:stack), code = (TBind id):cs }) =
-  return (State { env = extendEnv env id v, stack = stack,  code = cs })
-step st@(State{ env = env, stack = [], code = (TBind id):cs }) =
-  err "Attempt to bind the top of an empty stack"
-
--- Rule 3: Name lookup
-step st@(State{ env = env, stack = stack, code = (TId id):cs }) =
-  case (lookupEnv env id) of
-  Just v -> return (st { stack = v:stack,  code = cs })
-  Nothing -> err ("Cannot find value for identifier: " ++ id)
-
--- Rule 4: Closure creation
-step st@(State{ env = env, stack = stack, code = (TBody body):cs }) =
-  return (st { stack = (VClosure env body):stack, code = cs })
-
--- Rule 5: Application
-step st@(State{ env = env, stack = (VClosure env' code'):stack, code = TApply:cs }) =
-  do { stk <- eval (State {env = env', stack = stack, code = code'})
-     ; return (st { stack = stk, code = cs })
-     }
-step st@(State{ env = env, stack = [], code = TApply:cs }) =
-  err "Application with an empty stack"
-step st@(State{ env = env, stack = _:_, code = TApply:cs }) =
-  err "Application of a non-closure"
-
--- Rule 6: Arrays
-step st@(State{ env = env, stack = stack, code = TArray code':cs }) =
-  do { stk <- eval (State {env = env, stack = [], code = code'})
-     ; let last = length stk-1
-     ; let arr = array (0,last) (zip [last,last-1..] stk)
-     ; return (st { stack = (VArray arr):stack, code = cs })
-     }
-
--- Rule 7 & 8: If statement
-step st@(State{ env = env, stack = (VClosure e2 c2):(VClosure e1 c1):(VBool True):stack, code = TIf:cs }) =
-  do { stk <- eval (State {env = e1, stack = stack, code = c1})
-     ; return (st { stack = stk, code = cs })
-     }
-step st@(State{ env = env, stack = (VClosure e2 c2):(VClosure e1 c1):(VBool False):stack, code = TIf:cs }) =
-  do { stk <- eval (State {env = e2, stack = stack, code = c2})
-     ; return (st { stack = stk, code = cs })
-     }
-step st@(State{ env = env, stack = _, code = TIf:cs }) =
-  err "Incorrect use of if (bad and/or inappropriate values on the stack)"
-
--- Rule 9: Operators
-step st@(State{ env = env, stack = stack, code = (TOp op):cs }) =
-  do { stk <- doOp (opFnTable ! op) op stack
-     ; return (st { stack = stk, code = cs })
-     }
-
--- Rule Opps
-step _ = err "Tripped on sidewalk while stepping."
-
-
---------------------------------------------------------------------------
--- Operator code
-
-opFnTable :: Array GMLOp PrimOp
-opFnTable = array (minBound,maxBound) 
-                 [ (op,prim) | (_,TOp op,prim) <- opcodes ]
-
-
-
-
-doPureOp :: (MonadEval m) => PrimOp -> GMLOp -> Stack -> m Stack
-doPureOp _ Op_render _ = 
-    err ("\nAttempting to call render from inside a purely functional callback.")
-doPureOp primOp op stk = doPrimOp primOp op stk -- call the purely functional operators
-
-{-# SPECIALIZE doPrimOp :: PrimOp -> GMLOp -> Stack -> Pure Stack #-}
-{-# SPECIALIZE doPrimOp :: PrimOp -> GMLOp -> Stack -> IO Stack #-}
-{-# SPECIALIZE doPrimOp :: PrimOp -> GMLOp -> Stack -> Abs Stack #-}
-
-doPrimOp ::  (MonadEval m) => PrimOp -> GMLOp -> Stack -> m Stack
-
--- 1 argument.
-
-doPrimOp (Int_Int fn) _ (VInt i1:stk)
-  = return ((VInt (fn i1)) : stk)
-doPrimOp (Real_Real fn) _ (VReal r1:stk)
-  = return ((VReal (fn r1)) : stk)
-doPrimOp (Point_Real fn) _ (VPoint x y z:stk)
-  = return ((VReal (fn x y z)) : stk)
-
--- This is where the callbacks happen from...
-doPrimOp (Surface_Obj fn) _ (VClosure env code:stk)
-  = case absapply env code [VAbsObj AbsFACE,VAbsObj AbsU,VAbsObj AbsV] of
-      Just [VReal r3,VReal r2,VReal r1,VPoint c1 c2 c3] -> 
-           let
-              res = prop (color c1 c2 c3) r1 r2 r3
-           in
-               return ((VObject (fn (SConst res))) : stk)
-      _ -> return ((VObject (fn (SFun call))) : stk)
-  where 
-        -- The most general case
-        call i r1 r2 =
-          case callback env code [VReal r2,VReal r1,VInt i] of
-             [VReal r3,VReal r2,VReal r1,VPoint c1 c2 c3] 
-                -> prop (color c1 c2 c3) r1 r2 r3
-             stk -> error ("callback failed: incorrectly typed return arguments"
-                         ++ show stk)
-       
-doPrimOp (Real_Int fn) _ (VReal r1:stk)
-  = return ((VInt (fn r1)) : stk)
-doPrimOp (Int_Real fn) _ (VInt r1:stk)
-  = return ((VReal (fn r1)) : stk)
-doPrimOp (Arr_Int fn) _ (VArray arr:stk)
-  = return ((VInt (fn arr)) : stk)
-
--- 2 arguments.
-
-doPrimOp (Int_Int_Int fn) _ (VInt i2:VInt i1:stk)
-  = return ((VInt (fn i1 i2)) : stk)
-doPrimOp (Int_Int_Bool fn) _ (VInt i2:VInt i1:stk)
-  = return ((VBool (fn i1 i2)) : stk)
-doPrimOp (Real_Real_Real fn) _ (VReal r2:VReal r1:stk)
-  = return ((VReal (fn r1 r2)) : stk)
-doPrimOp (Real_Real_Bool fn) _ (VReal r2:VReal r1:stk)
-  = return ((VBool (fn r1 r2)) : stk)
-doPrimOp (Arr_Int_Value fn) _ (VInt i:VArray arr:stk)
-  = return ((fn arr i) : stk)
-
-
-    -- Many arguments, typically image mangling
-
-doPrimOp (Obj_Obj_Obj fn) _ (VObject o2:VObject o1:stk)
-  = return ((VObject (fn o1 o2)) : stk)
-doPrimOp (Point_Color_Light fn) _ (VPoint r g b:VPoint x y z : stk)
-  = return (VLight (fn (x,y,z) (color r g b)) : stk)
-doPrimOp (Point_Point_Color_Real_Real_Light fn) _ 
-         (VReal r2:VReal r1:VPoint r g b:VPoint x2 y2 z2:VPoint x1 y1 z1 : stk)
-  = return (VLight (fn (x1,y1,z1) (x2,y2,z2) (color r g b) r1 r2) : stk)
-doPrimOp (Real_Real_Real_Point fn) _ (VReal r3:VReal r2:VReal r1:stk)
-  = return ((fn r1 r2 r3) : stk)
-doPrimOp (Obj_Real_Obj fn) _ (VReal r:VObject o:stk)
-  = return (VObject (fn o r) : stk)
-doPrimOp (Obj_Real_Real_Real_Obj fn) _ (VReal r3:VReal r2:VReal r1:VObject o:stk)
-  = return (VObject (fn o r1 r2 r3) : stk)
-
--- This one is our testing harness
-doPrimOp (Value_String_Value fn) _ (VString s:o:stk)
-  = res `seq` return (res : stk)
-  where
-     res = fn o s
-
-doPrimOp primOp op args 
-  = err ("\n\ntype error when attempting to execute builtin primitive \"" ++
-          show op ++ "\"\n\n| " ++
-          show op ++ " takes " ++ show (length types) ++ " argument" ++ s
-                  ++ " with" ++ the ++ " type" ++ s ++ "\n|\n|" ++
-          "      " ++ unwords [ show ty | ty <- types ]  ++ "\n|\n|" ++ 
-          " currently, the relevent argument" ++ s ++ " on the stack " ++ 
-                 are ++ "\n|\n| " ++ 
-          unwords [ "(" ++ show arg ++ ")" 
-                  | arg <-  reverse (take (length types) args) ]  ++ "\n|\n| "
-          ++ "    (top of stack is on the right hand side)\n\n")
-  where
-      len   = length types
-      s =  (if len /= 1 then "s" else "")
-      are =  (if len /= 1 then "are" else "is")
-      the =  (if len /= 1 then "" else " the")
-      types = getPrimOpType primOp
-
-
--- Render is somewhat funny, becauase it can only get called at top level.
--- All other operations are purely functional.
-
-doAllOp :: PrimOp -> GMLOp -> Stack -> IO Stack
-doAllOp (Render render) Op_render
-                          (VString str:VInt ht:VInt wid:VReal fov
-                           :VInt dep:VObject obj:VArray arr
-                           :VPoint r g b : stk)
-  = do { render (color r g b) lights obj dep (fov * (pi / 180.0)) wid ht str
-       ; return stk
-       }
-  where
-      lights = [ light | (VLight light) <- elems arr ]
-
-doAllOp primOp op stk = doPrimOp primOp op stk -- call the purely functional operators
-
-------------------------------------------------------------------------------
-{-
- - Abstract evaluation.
- -
- - The idea is you check for constant code that 
- - (1) does not look at its arguments
- - (2) gives a fixed result
- -
- - We run for 100 steps.
- -
- -}
-
-absapply :: Env -> Code -> Stack -> Maybe Stack
-absapply env code stk = 
-     case runAbs (eval (State env stk code)) 100 of
-       AbsState stk _ -> Just stk
-       AbsFail m      -> Nothing
-
-newtype Abs a   = Abs { runAbs :: Int -> AbsState a }
-data AbsState a = AbsState a !Int
-                | AbsFail String
-
-instance Monad Abs where
-    (Abs fn) >>= k = Abs (\ s -> case fn s of
-                                  AbsState r s' -> runAbs (k r) s'
-                                   AbsFail m     -> AbsFail m)
-    return x     = Abs (\ n -> AbsState x n)
-    fail s       = Abs (\ n -> AbsFail s)
-
-instance MonadEval Abs where
-  doOp = doAbsOp
-  err  = fail
-  tick = Abs (\ n -> if n <= 0
-                     then AbsFail "run out of time"
-                     else AbsState () (n-1))
-
-doAbsOp :: PrimOp -> GMLOp -> Stack -> Abs Stack
-doAbsOp _ Op_point (VReal r3:VReal r2:VReal r1:stk) 
-               = return ((VPoint r1 r2 r3) : stk)
- -- here, you could have an (AbsPoint :: AbsObj) which you put on the
- -- stack, with any object in the three fields.
-doAbsOp _ op _ = err ("operator not understood (" ++ show op ++ ")")
-
-------------------------------------------------------------------------------
--- Driver
-
-mainEval :: Code -> IO ()
-mainEval prog = do { stk <- eval (State emptyEnv [] prog) 
-                   ; return ()
-                   }
-{- 
-  * Oops, one of the example actually has something
-  * on the stack at the end. 
-  * Oh well...
-                  ; if null stk
-                     then return ()
-                    else do { putStrLn done
-                             ; print stk
-                             }
--}
-
-done = "Items still on stack at (successfull) termination of program"
-
-------------------------------------------------------------------------------
--- testing
-
-test :: String -> Pure Stack
-test is = eval (State emptyEnv [] (rayParse is))
-
-testF :: String -> IO Stack
-testF is = do prog <- rayParseF is
-              eval (State emptyEnv [] prog)
-
-testA :: String -> Either String (Stack,Int)
-testA is = case runAbs (eval (State emptyEnv 
-                                    [VAbsObj AbsFACE,VAbsObj AbsU,VAbsObj AbsV]
-                                    (rayParse is))) 100 of
-             AbsState a n -> Right (a,n)
-             AbsFail m -> Left m
-
-abstest1 = "1.0 0.0 0.0 point /red { /v /u /face red 1.0 0.0 1.0 } apply" 
-
--- should be [3:: Int]
-et1 = test "1 /x { x } /f 2 /x f apply x addi"
-
-
-
-
-
diff --git a/ghc/tests/programs/galois_raytrace/Geometry.hs b/ghc/tests/programs/galois_raytrace/Geometry.hs
deleted file mode 100644 (file)
index 673c7d4..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Geometry
-    ( Coords
-    , Ray
-    , Point  -- abstract
-    , Vector -- abstract
-    , Matrix -- abstract
-    , Color  -- abstract
-    , Box(..)
-    , Radian
-    , matrix
-    , coord
-    , color
-    , uncolor
-    , xCoord , yCoord , zCoord
-    , xComponent , yComponent , zComponent
-    , point
-    , vector
-    , nearV
-    , point_to_vector
-    , vector_to_point
-    , dot
-    , cross
-    , tangents
-    , addVV
-    , addPV
-    , subVV
-    , negV
-    , subPP
-    , norm
-    , normalize
-    , dist2
-    , sq
-    , distFrom0Sq
-    , distFrom0
-    , multSV
-    , multMM
-    , transposeM
-    , multMV
-    , multMP
-    , multMQ
-    , multMR
-    , white
-    , black
-    , addCC
-    , subCC
-    , sumCC
-    , multCC
-    , multSC
-    , nearC
-    , offsetToPoint
-    , epsilon
-    , inf
-    , nonZero
-    , eqEps
-    , near
-    , clampf
-    ) where
-
-import List 
-
-type Coords = (Double,Double,Double)
-
-type Ray = (Point,Vector)    -- origin of ray, and unit vector giving direction
-
-data Point  = P !Double !Double !Double -- implicit extra arg of 1
-    deriving (Show)
-data Vector = V !Double !Double !Double -- implicit extra arg of 0
-    deriving (Show, Eq)
-data Matrix = M !Quad   !Quad   !Quad   !Quad
-    deriving (Show)
-
-data Color  = C !Double !Double !Double
-    deriving (Show, Eq)
-
-data Box = B !Double !Double !Double !Double !Double !Double
-    deriving (Show)
-
-data Quad   = Q !Double !Double !Double !Double
-    deriving (Show)
-
-type Radian = Double
-
-type Tup4 a = (a,a,a,a)
-
---{-# INLINE matrix #-}
-matrix :: Tup4 (Tup4 Double) -> Matrix
-matrix ((m11, m12, m13, m14),
-          (m21, m22, m23, m24),
-          (m31, m32, m33, m34),
-          (m41, m42, m43, m44))
-  = M (Q m11 m12 m13 m14)
-      (Q m21 m22 m23 m24)
-      (Q m31 m32 m33 m34)
-      (Q m41 m42 m43 m44)
-
-coord x y z = (x, y, z)
-
-color r g b = C r g b
-
-uncolor (C r g b) = (r,g,b)
-
-{-# INLINE xCoord #-}
-xCoord (P x y z) = x
-{-# INLINE yCoord #-}
-yCoord (P x y z) = y
-{-# INLINE zCoord #-}
-zCoord (P x y z) = z
-
-{-# INLINE xComponent #-}
-xComponent (V x y z) = x
-{-# INLINE yComponent #-}
-yComponent (V x y z) = y
-{-# INLINE zComponent #-}
-zComponent (V x y z) = z
-
-point :: Double -> Double -> Double -> Point
-point x y z = P x y z
-
-vector :: Double -> Double -> Double -> Vector
-vector x y z = V x y z
-
-nearV :: Vector -> Vector -> Bool
-nearV (V a b c) (V d e f) = a `near` d && b `near` e && c `near` f
-
-point_to_vector :: Point -> Vector
-point_to_vector (P x y z) = V x y z
-
-vector_to_point :: Vector -> Point
-vector_to_point (V x y z)  = P x y z 
-
-{-# INLINE vector_to_quad #-}
-vector_to_quad :: Vector -> Quad
-vector_to_quad (V x y z) = Q x y z 0
-
-{-# INLINE point_to_quad #-}
-point_to_quad :: Point -> Quad
-point_to_quad (P x y z) = Q x y z 1
-
-{-# INLINE quad_to_point #-}
-quad_to_point :: Quad -> Point
-quad_to_point (Q x y z _) = P x y z
-
-{-# INLINE quad_to_vector #-}
-quad_to_vector :: Quad -> Vector
-quad_to_vector (Q x y z _) = V x y z
-
---{-# INLINE dot #-}
-dot :: Vector -> Vector -> Double
-dot (V x1 y1 z1) (V x2 y2 z2) = x1 * x2 + y1 * y2 + z1 * z2
-
-cross :: Vector -> Vector -> Vector
-cross (V x1 y1 z1) (V x2 y2 z2)
-  = V (y1 * z2 - z1 * y2) (z1 * x2 - x1 * z2) (x1 * y2 - y1 * x2)
-
--- assumption: the input vector is a normal
-tangents :: Vector -> (Vector, Vector)
-tangents v@(V x y z)
-  = (v1, v `cross` v1)
-  where v1 | x == 0    = normalize (vector 0 z (-y))
-          | otherwise = normalize (vector (-y) x 0)
-
-{-# INLINE dot4 #-}
-dot4 :: Quad -> Quad -> Double
-dot4 (Q x1 y1 z1 w1) (Q x2 y2 z2 w2) = x1 * x2 + y1 * y2 + z1 * z2 + w1 * w2
-
-addVV :: Vector -> Vector -> Vector
-addVV (V x1 y1 z1) (V x2 y2 z2) 
-    = V (x1 + x2) (y1 + y2) (z1 + z2)
-
-addPV :: Point -> Vector -> Point
-addPV (P x1 y1 z1) (V x2 y2 z2) 
-    = P (x1 + x2) (y1 + y2) (z1 + z2)
-
-subVV :: Vector -> Vector -> Vector
-subVV (V x1 y1 z1) (V x2 y2 z2) 
-    = V (x1 - x2) (y1 - y2) (z1 - z2)
-
-negV :: Vector -> Vector
-negV (V x1 y1 z1) 
-    = V (-x1) (-y1) (-z1)
-
-subPP :: Point -> Point -> Vector
-subPP (P x1 y1 z1) (P x2 y2 z2) 
-    = V (x1 - x2) (y1 - y2) (z1 - z2)
-
---{-# INLINE norm #-}
-norm :: Vector -> Double
-norm (V x y z) = sqrt (sq x + sq y + sq z)
-
---{-# INLINE normalize #-}
--- normalize a vector to a unit vector
-normalize :: Vector -> Vector
-normalize v@(V x y z)
-             | norm /= 0 = multSV (1/norm) v
-            | otherwise = error "normalize empty!"
-    where norm = sqrt (sq x + sq y + sq z)
-
--- This does computes the distance *squared*
-dist2 :: Point -> Point -> Double
-dist2 us vs = sq x + sq y + sq z
-    where
-       (V x y z) = subPP us vs
-
-{-# INLINE sq #-}
-sq :: Double -> Double
-sq d = d * d 
-
-{-# INLINE distFrom0Sq #-}
-distFrom0Sq :: Point -> Double  -- Distance of point from origin.
-distFrom0Sq (P x y z) = sq x + sq y + sq z
-
-{-# INLINE distFrom0 #-}
-distFrom0 :: Point -> Double  -- Distance of point from origin.
-distFrom0 p = sqrt (distFrom0Sq p)
-
---{-# INLINE multSV #-}
-multSV :: Double -> Vector -> Vector
-multSV k (V x y z) = V (k*x) (k*y) (k*z)
-
---{-# INLINE multMM #-}
-multMM :: Matrix -> Matrix -> Matrix
-multMM m1@(M q1 q2 q3 q4) m2
-     = M (multMQ m2' q1)
-         (multMQ m2' q2)
-         (multMQ m2' q3)
-         (multMQ m2' q4)
-  where
-     m2' = transposeM m2
-
-{-# INLINE transposeM #-}     
-transposeM :: Matrix -> Matrix
-transposeM (M (Q e11  e12  e13  e14)
-              (Q e21  e22  e23  e24)
-              (Q e31  e32  e33  e34)
-              (Q e41  e42  e43  e44)) = (M (Q e11  e21  e31  e41)
-                                           (Q e12  e22  e32  e42)
-                                           (Q e13  e23  e33  e43)
-                                           (Q e14  e24  e34  e44))
-
-
---multMM m1 m2 = [map (dot4 row) (transpose m2) | row <- m1]
-
---{-# INLINE multMV #-}
-multMV :: Matrix -> Vector -> Vector
-multMV m v = quad_to_vector (multMQ m (vector_to_quad v))
-
---{-# INLINE multMP #-}
-multMP :: Matrix -> Point -> Point
-multMP m p = quad_to_point (multMQ m (point_to_quad p))
-
--- mat vec = map (dot4 vec) mat
-
-{-# INLINE multMQ #-}
-multMQ :: Matrix -> Quad -> Quad
-multMQ (M q1 q2 q3 q4) q
-       = Q (dot4 q q1)
-           (dot4 q q2)
-           (dot4 q q3)
-           (dot4 q q4)
-
-{-# INLINE multMR #-}
-multMR :: Matrix -> Ray -> Ray
-multMR m (r, v) = (multMP m r, multMV m v)
-
-white :: Color
-white = C 1 1 1
-black :: Color
-black = C 0 0 0
-
-addCC :: Color -> Color -> Color
-addCC (C a b c) (C d e f) = C (a+d) (b+e) (c+f)
-
-subCC :: Color -> Color -> Color
-subCC (C a b c) (C d e f) = C (a-d) (b-e) (c-f)
-
-sumCC :: [Color] -> Color
-sumCC = foldr addCC black
-
-multCC :: Color -> Color -> Color
-multCC (C a b c) (C d e f) = C (a*d) (b*e) (c*f)
-
-multSC :: Double -> Color -> Color
-multSC k       (C a b c) = C (a*k) (b*k) (c*k)
-
-nearC :: Color -> Color -> Bool
-nearC (C a b c) (C d e f) = a `near` d && b `near` e && c `near` f
-
-offsetToPoint :: Ray -> Double -> Point
-offsetToPoint (r,v) i = r `addPV` (i `multSV` v)
-
---
-
-epsilon, inf :: Double      -- aproximate zero and infinity
-epsilon = 1.0e-10
-inf = 1.0e20
-
-nonZero :: Double -> Double         -- Use before a division. It makes definitions
-nonZero x | x > epsilon  = x        -- more complete and I bet the errors that get 
-          | x < -epsilon = x        -- introduced will be undetectable if epsilon
-          | otherwise    = epsilon  -- is small enough
-
-
-eqEps x y = abs (x-y) < epsilon
-near = eqEps
-
-clampf :: Double -> Double
-clampf p | p < 0 = 0
-         | p > 1 = 1
-         | True  = p
diff --git a/ghc/tests/programs/galois_raytrace/Illumination.hs b/ghc/tests/programs/galois_raytrace/Illumination.hs
deleted file mode 100644 (file)
index 9242cbf..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
--- Modified to use stdout (for testing)
-
-module Illumination
-    ( Object
-    , Light (..)
-    , light, pointlight, spotlight
-    , render
-    ) where
-
-import Array
-import Char(chr)
-import IOExts
-import Maybe
-
-import Geometry
-import CSG
-import Surface
-import Misc
-
-type Object = CSG (SurfaceFn Color Double)
-
-data Cxt = Cxt {ambient::Color, lights::[Light], object::Object, depth::Int}
-        deriving Show
-
-render :: (Matrix,Matrix) -> Color -> [Light] -> Object -> Int ->
-          Radian -> Int -> Int -> String -> IO ()
-render (m,m') amb ls obj dep fov wid ht file
-  = do { debugging
-       ; putStrLn (showBitmap wid ht pixels)
-       }
-  where
-    debugging = return ()
-{-
-                do { putStrLn (show cxt)
-                   ; putStrLn (show (width, delta, aspect, left, top))
-                   }
--}
-    obj' = transform (m',m) obj
-    ls'  = [ transformLight m' l | l <- ls ]
-    pixelA = listArray ((1,1), (ht,wid))
-                       [ illumination cxt (start,pixel i j)
-                       | j <- take ht  [0.5..]
-                       , i <- take wid [0.5..] ]
-    antiA  = pixelA //
-             [ (ix, superSample ix (pixelA ! ix))
-             | j <- [2 .. ht - 1], i <- [2 .. wid - 1]
-             , let ix = (j, i)
-             , contrast ix pixelA ]
-    pixels = [ [ illumination cxt (start,pixel i j) | i<- take wid [0.5..] ]
-             | j <- take ht [0.5..]
-             ]
-    cxt    = Cxt {ambient=amb, lights=ls',  object=obj', depth=dep}
-    start  = point  0 0 (-1)
-    width  = 2 * tan (fov/2)
-    delta  = width / fromIntegral wid
-    aspect = fromIntegral ht / fromIntegral wid
-    left   = - width / 2
-    top    = - left * aspect
-    pixel i j = vector (left + i*delta) (top - j*delta) 1
-
-    superSample (y, x) col = avg $ col:
-      [ illumination cxt (start, pixel (fromIntegral x - 0.5 + xd) (fromIntegral y - 0.5 + yd))
-      | (xd, yd) <- [(-0.333, 0.0), (0.333, 0.0), (0.0, -0.333), (0.0, 0.333)]
-      ] 
-
-avg cs = divN (fromIntegral (length cs)) (uncolor (sumCC cs))
-  where divN n (r,g,b) = color (r / n) (g / n) (b / n)
-
-contrast :: (Int, Int) -> Array (Int, Int) Color -> Bool
-contrast (x, y) arr = any diffMax [ subCC cur (arr ! (x + xd, y + yd))
-                                  | xd <- [-1, 1], yd <- [-1, 1]
-                                  ]
-  where cur = arr ! (x, y)
-        diffMax col = (abs r) > 0.25 || (abs g) >  0.2 || (abs b) > 0.4
-           where
-                 (r,g,b) = uncolor col
-
-
-illumination :: Cxt -> Ray -> Color
-illumination cxt (r,v)
-  | depth cxt <= 0 = black
-  | otherwise     = case castRay (r,v) (object cxt) of
-                      Nothing -> black
-                      Just info -> illum (cxt{depth=(depth cxt)-1}) info v
-
-illum :: Cxt -> (Point,Vector,Properties Color Double) -> Vector -> Color
-illum cxt (pos,normV,(col,kd,ks,n)) v
-  = ambTerm `addCC` difTerm `addCC` spcTerm `addCC` recTerm
-  where
-    visibleLights = unobscured pos (object cxt) (lights cxt) normV
-    d = depth cxt
-    amb = ambient cxt
-    newV = subVV v (multSV (2 * dot normV v) normV)
-
-    ambTerm = multSC kd (multCC amb col)
-    difTerm = multSC kd (sumCC [multSC (dot normV lj) (multCC intensity col)
-              |(loc,intensity) <- visibleLights,
-              let lj = normalize ({- pos `subVV` -} loc)])
-    -- ZZ might want to avoid the phong, when you can...
-    spcTerm = multSC ks (sumCC [multSC ((dot normV hj) ** n ) (multCC intensity col)
-              |(loc,intensity) <- visibleLights,
-              -- ZZ note this is specific to the light at infinity
-              let lj = {- pos `subVV` -} normalize loc,
-              let hj = normalize (lj `subVV` normalize v)])
-    recTerm  = if recCoeff `nearC` black then black else multCC recCoeff recRay
-    recCoeff = multSC ks col
-    recRay   = illumination cxt (pos,newV)
-
-showBitmapA :: Int -> Int -> Array (Int, Int) Color -> String
-showBitmapA wid ht arr
-  = header ++ concatMap scaleColor (elems arr)
-  where
-    scaleColor col = [scalePixel r, scalePixel g, scalePixel b]
-           where (r,g,b) = uncolor col
-    header = "P6\n#Galois\n" ++ show wid ++ " " ++ show ht ++ "\n255\n"
-
-showBitmap :: Int -> Int ->[[Color]] -> String
-showBitmap wid ht pss
--- type of assert  | length pss == ht && all (\ ps -> length ps == wid) pss
-  = header ++ concat [[scalePixel r,scalePixel g,scalePixel b] 
-                      | ps <- pss, (r,g,b) <- map uncolor ps]
-  where
-    header = "P6\n#Galois\n" ++ show wid ++ " " ++ show ht ++ "\n255\n"
-showBitmap _ _ _ = error "incorrect length of bitmap string"
-
-scalePixel :: Double -> Char
-scalePixel p = chr (floor (clampf p * 255))
-
-
--- Lights
-
-data Light = Light Vector Color
-           | PointLight Point Color 
-           | SpotLight Point Point Color Radian Double
-   deriving Show
-
-light :: Coords -> Color -> Light
-light (x,y,z) color =
-  Light (normalize (vector (-x) (-y) (-z))) color
-pointlight (x,y,z) color =
-  PointLight (point x y z) color
-spotlight (x,y,z) (p,q,r) col cutoff exp =
-  SpotLight (point x y z) (point p q r) col cutoff exp
-
-transformLight m (Light v c) = Light (multMV m v) c
-transformLight m (PointLight p c) = PointLight (multMP m p) c
-transformLight m (SpotLight p q c r d) = SpotLight (multMP m p) (multMP m q) c r d
-
-unobscured :: Point -> Object -> [Light] ->  Vector -> [(Vector,Color)]
-unobscured pos obj lights normV = catMaybes (map (unobscure pos obj normV) lights)
-
-unobscure :: Point -> Object -> Vector ->  Light -> Maybe (Vector,Color)
-unobscure pos obj normV (Light vec color)
-  -- ZZ probably want to make this faster
-  | vec `dot` normV < 0 = Nothing
-  | intersects (pos `addPV` (0.0001 `multSV` vec),vec) obj = Nothing
-  | otherwise               = Just (vec,color)
-unobscure pos obj normV (PointLight pp color)
-  | vec `dot` normV < 0     = Nothing
-  | intersectWithin (pos `addPV` (0.0001 `multSV` (normalize vec)), vec) obj = Nothing
-  | otherwise               = Just (vec,is)
-      where vec = pp `subPP` pos
-            is  = attenuate vec color
-unobscure org obj normV (SpotLight pos at color cutoff exp)
-  | vec `dot` normV < 0                                                 = Nothing
-  | intersectWithin (org `addPV` (0.0001 `multSV` (normalize vec)), vec) obj = Nothing
-  | angle > cutoff                                                      = Nothing
-  | otherwise                                                           = Just (vec, is)
-      where vec   = pos `subPP` org
-            vec'  = pos `subPP` at
-            angle = acos (normalize vec `dot` (normalize vec'))
-
-            asp   = normalize (at `subPP` pos)            
-            qsp   = normalize (org `subPP` pos)
-            is    = attenuate vec (((asp `dot` qsp) ** exp) `multSC` color)
-
-attenuate :: Vector -> Color -> Color
-attenuate vec color = (100 / (99 + sq (norm vec))) `multSC` color
-
---
-
-castRay ray p
-  = case intersectRayWithObject ray p of
-    (True, _, _)                     -> Nothing -- eye is inside
-    (False, [], _)                   -> Nothing -- eye is inside
-    (False, (0, b, _) : _, _)        -> Nothing -- eye is inside
-    (False, (i, False, _) : _, _)    -> Nothing -- eye is inside
-    (False, (t, b, (s, p0)) : _, _)     ->
-       let (v, prop) = surface s p0 in
-           Just (offsetToPoint ray t, v, prop)
-
-intersects ray p
-  = case intersectRayWithObject ray p of
-    (True, _, _)                  -> False
-    (False, [], _)                -> False
-    (False, (0, b, _) : _, _)     -> False
-    (False, (i, False, _) : _, _) -> False
-    (False, (i, b, _) : _, _)     -> True
-
-intersectWithin :: Ray -> Object -> Bool
-intersectWithin ray p
-  = case intersectRayWithObject ray p of
-    (True, _, _)                  -> False -- eye is inside
-    (False, [], _)                -> False -- eye is inside
-    (False, (0, b, _) : _, _)     -> False -- eye is inside
-    (False, (i, False, _) : _, _) -> False -- eye is inside
-    (False, (t, b, _) : _, _)     -> t < 1.0
diff --git a/ghc/tests/programs/galois_raytrace/Intersections.hs b/ghc/tests/programs/galois_raytrace/Intersections.hs
deleted file mode 100644 (file)
index c7fe003..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Intersections 
-    ( intersectRayWithObject,
-      quadratic
-    ) where
-
-import Maybe(isJust)
-
-import Construct
-import Geometry
-import Interval
-import Misc
-
--- This is factored into two bits.  The main function `intersections'
--- intersects a line with an object.
--- The wrapper call `intersectRayWithObject' coerces this to an intersection
--- with a ray by clamping the result to start at 0.
-
-intersectRayWithObject ray p
-  = clampIntervals is
-  where is = intersections ray p
-
-clampIntervals (True, [], True) = (False, [(0, True, undefined)], True)
-clampIntervals empty@(False, [], False) = empty
-clampIntervals (True, is@((i, False, p) : is'), isOpen)
-  | i `near` 0 || i < 0
-  = clampIntervals (False, is', isOpen)
-  | otherwise
-  = (False, (0, True, undefined) : is, isOpen)
-clampIntervals ivals@(False, is@((i, True, p) : is'), isOpen)
-  | i `near` 0 || i < 0
-  -- can unify this with first case...
-  = clampIntervals (True, is', isOpen)
-  | otherwise
-  = ivals
-
-intersections ray (Union p q)
-  = unionIntervals is js
-  where is = intersections ray p
-       js = intersections ray q
-
-intersections ray (Intersect p q)
-  = intersectIntervals is js
-  where is = intersections ray p
-       js = intersections ray q
-
-intersections ray (Difference p q)
-  = differenceIntervals is (negateSurfaces js)
-  where is = intersections ray p
-       js = intersections ray q
-
-intersections ray (Transform m m' p)
-  = mapI (xform m) is
-  where is = intersections (m' `multMR` ray) p
-       xform m (i, b, (s, p0)) = (i, b, (transformSurface m s, p0))
-
-intersections ray (Box box p)
-  | intersectWithBox ray box = intersections ray p
-  | otherwise = emptyIList
-
-intersections ray p@(Plane s)
-  = intersectPlane ray s
-
-intersections ray p@(Sphere s)
-  = intersectSphere ray s
-
-intersections ray p@(Cube s)
-  = intersectCube ray s
-
-intersections ray p@(Cylinder s)
-  = intersectCylinder ray s
-
-intersections ray p@(Cone s)
-  = intersectCone ray s
-
-negateSurfaces :: IList (Surface, Texture a) -> IList (Surface, Texture a)
-negateSurfaces = mapI negSurf
-  where negSurf (i, b, (s,t)) = (i, b, (negateSurface s, t))
-
-negateSurface (Planar p0 v0 v1)
-  = Planar p0 v1 v0
-negateSurface (Spherical p0 v0 v1)
-  = Spherical p0 v1 v0
-negateSurface (Cylindrical p0 v0 v1)
-  = Cylindrical p0 v1 v0
-negateSurface (Conic p0 v0 v1)
-  = Conic p0 v1 v0
-
-transformSurface m (Planar p0 v0 v1)
-  = Planar p0' v0' v1'
-  where p0' = multMP m p0
-       v0' = multMV m v0
-       v1' = multMV m v1
-
-transformSurface m (Spherical p0 v0 v1)
-  = Spherical p0' v0' v1'
-  where p0' = multMP m p0
-       v0' = multMV m v0
-       v1' = multMV m v1
-
--- ditto as above
-transformSurface m (Cylindrical p0 v0 v1)
-  = Cylindrical p0' v0' v1'
-  where p0' = multMP m p0
-       v0' = multMV m v0
-       v1' = multMV m v1
-
-transformSurface m (Conic p0 v0 v1)
-  = Conic p0' v0' v1'
-  where p0' = multMP m p0
-       v0' = multMV m v0
-       v1' = multMV m v1
-
---------------------------------
--- Plane
---------------------------------
-
-intersectPlane :: Ray -> a -> IList (Surface, Texture a)
-intersectPlane ray texture = intersectXZPlane PlaneFace ray 0.0 texture
-
-intersectXZPlane :: Face -> Ray -> Double -> a -> IList (Surface, Texture a)
-intersectXZPlane n (r,v) yoffset texture
-  | b `near` 0
-  = -- the ray is parallel to the plane - it's either all in, or all out
-    if y `near` yoffset || y < yoffset then openIList else emptyIList
-
-    -- The line intersects the plane. Find t such that
-    -- (x + at, y + bt, z + ct) intersects the X-Z plane.
-    -- t may be negative (the ray starts within the halfspace),
-    -- but we'll catch that later when we clamp the intervals
-
-  | b < 0      -- the ray is pointing downwards
-  = (False, [mkEntry (t0, (Planar p0 v0 v1, (n, p0, texture)))], True)
-
-  | otherwise  -- the ray is pointing upwards
-  = (True,  [mkExit (t0, (Planar p0 v0 v1, (n, p0, texture)))],  False)
-
-  where t0 = (yoffset-y) / b
-       x0 = x + a * t0
-       z0 = z + c * t0
-       p0 = point x0 0 z0
-       v0 = vector 0 0 1
-       v1 = vector 1 0 0
-
-       x = xCoord r
-       y = yCoord r
-       z = zCoord r
-       a = xComponent v
-       b = yComponent v
-       c = zComponent v
-
-
---------------------------------
--- Sphere
---------------------------------
-
-intersectSphere :: Ray -> a -> IList (Surface, Texture a)
-intersectSphere ray@(r, v) texture
-  = -- Find t such that (x + ta, y + tb, z + tc) intersects the
-    -- unit sphere, that is, such that:
-    --   (x + ta)^2 + (y + tb)^2 + (z + tc)^2 = 1
-    -- This is a quadratic equation in t:
-    --   t^2(a^2 + b^2 + c^2) + 2t(xa + yb + zc) + (x^2 + y^2 + z^2 - 1) = 0
-    let c1 = sq a + sq b + sq c
-       c2 = 2 * (x * a + y * b + z * c)
-       c3 = sq x + sq y + sq z - 1
-    in
-       case quadratic c1 c2 c3 of
-        Nothing -> emptyIList
-        Just (t1, t2) -> entryexit (g t1) (g t2)
-    where x = xCoord r
-         y = yCoord r
-         z = zCoord r
-         a = xComponent v
-         b = yComponent v
-         c = zComponent v
-         g t = (t, (Spherical origin v1 v2, (SphereFace, p0, texture)))
-             where origin = point 0 0 0
-                   x0 = x + t * a
-                   y0 = y + t * b
-                   z0 = z + t * c
-                   p0 = point  x0 y0 z0
-                   v0 = vector x0 y0 z0
-                   (v1, v2) = tangents v0
-
-
---------------------------------
--- Cube
---------------------------------
-
-intersectCube :: Ray -> a -> IList (Surface, Texture a)
-intersectCube ray@(r, v) texture
-  = -- The set of t such that (x + at, y + bt, z + ct) lies within
-    -- the unit cube satisfies:
-    --    0 <= x + at <= 1,  0 <= y + bt <= 1,  0 <= z + ct <= 1
-    -- The minimum and maximum such values of t give us the two
-    -- intersection points.
-    case intersectSlabIval (intersectCubeSlab face2 face3 x a)
-       (intersectSlabIval (intersectCubeSlab face5 face4 y b)
-                          (intersectCubeSlab face0 face1 z c)) of
-    Nothing -> emptyIList
-    Just (t1, t2) -> entryexit (g t1) (g t2)
-  where g ((n, v0, v1), t)
-         = (t, (Planar p0 v0 v1, (n, p0, texture)))
-         where p0 = offsetToPoint ray t
-       face0 = (CubeFront,  vectorY, vectorX)
-       face1 = (CubeBack,   vectorX, vectorY)
-       face2 = (CubeLeft,   vectorZ, vectorY)
-       face3 = (CubeRight,  vectorY, vectorZ)
-       face4 = (CubeTop,    vectorZ, vectorX)
-       face5 = (CubeBottom, vectorX, vectorZ)
-       vectorX = vector 1 0 0
-       vectorY = vector 0 1 0
-       vectorZ = vector 0 0 1
-       x = xCoord r
-       y = yCoord r
-       z = zCoord r
-       a = xComponent v
-       b = yComponent v
-       c = zComponent v
-
-intersectCubeSlab n m w d
-  | d `near` 0 = if (0 <= w) && (w <= 1)
-                then Just ((n, -inf), (m, inf)) else Nothing
-  | d > 0      = Just ((n,  (-w)/d), (m, (1-w)/d))
-  | otherwise  = Just ((m, (1-w)/d), (n,  (-w)/d))
-
-intersectSlabIval Nothing Nothing  = Nothing
-intersectSlabIval Nothing (Just i) = Nothing
-intersectSlabIval (Just i) Nothing = Nothing
-intersectSlabIval (Just (nu1@(n1, u1), mv1@(m1, v1)))
-                 (Just (nu2@(n2, u2), mv2@(m2, v2)))
-  = checkInterval (nu, mv)
-  where nu = if u1 < u2 then nu2 else nu1
-       mv = if v1 < v2 then mv1 else mv2
-       checkInterval numv@(nu@(_, u), (m, v))
-         -- rounding error may force us to push v out a bit
-         | u `near` v = Just (nu, (m, u + epsilon))
-         | u    <   v = Just numv
-         | otherwise  = Nothing
-
-
---------------------------------
--- Cylinder
---------------------------------
-
-intersectCylinder :: Ray -> a -> IList (Surface, Texture a)
-intersectCylinder ray texture
-  = isectSide `intersectIntervals` isectTop `intersectIntervals` isectBottom
-  where isectSide   = intersectCylSide ray texture
-       isectTop    = intersectXZPlane CylinderTop ray 1.0 texture
-       isectBottom = complementIntervals $ negateSurfaces $
-                     intersectXZPlane CylinderBottom ray 0.0 texture
-
-intersectCylSide (r, v) texture
-  = -- The ray (x + ta, y + tb, z + tc) intersects the sides of the
-    -- cylinder if:
-    --    (x + ta)^2 + (z + tc)^2 = 1  and 0 <= y + tb <= 1.
-    if (sq a + sq c) `near` 0
-    then -- The ray is parallel to the Y-axis, and does not intersect
-        -- the cylinder sides.  It's either all in, or all out
-       if (sqxy `near` 1.0 || sqxy < 1.0) then openIList else emptyIList
-   else -- Find values of t that solve the quadratic equation
-       --   (a^2 + c^2)t^2 + 2(ax + cz)t + x^2 + z^2 - 1 = 0
-        let c1 = sq a + sq c
-            c2 = 2 * (x * a + z * c)
-            c3 = sq x + sq z - 1
-       in
-       case quadratic c1 c2 c3 of
-        Nothing -> emptyIList
-        Just (t1, t2) -> entryexit (g t1) (g t2)
-
-  where sqxy = sq x + sq y
-       g t = (t, (Cylindrical origin v1 v2, (CylinderSide, p0, texture)))
-           where origin = point 0 0 0
-                 x0 = x + t * a
-                 y0 = y + t * b
-                 z0 = z + t * c
-                 p0 = point  x0 y0 z0
-                 v0 = vector x0 0 z0
-                 (v1, v2) = tangents v0
-
-       x = xCoord r
-       y = yCoord r
-       z = zCoord r
-       a = xComponent v
-       b = yComponent v
-       c = zComponent v
-
-
--------------------
--- Cone
--------------------
-
-intersectCone :: Ray -> a -> IList (Surface, Texture a)
-intersectCone ray texture
-  = isectSide `intersectIntervals` isectTop `intersectIntervals` isectBottom
-  where isectSide   = intersectConeSide ray texture
-       isectTop    = intersectXZPlane ConeBase ray 1.0 texture
-       isectBottom = complementIntervals $ negateSurfaces $
-                     intersectXZPlane ConeBase ray 0.0 texture
-
-intersectConeSide (r, v) texture
-  = -- Find the points where the ray intersects the cond side.  At any points of
-    -- intersection, we must have:
-    --    (x + ta)^2 + (z + tc)^2 = (y + tb)^2
-    -- which is the following quadratic equation:
-    --    t^2(a^2-b^2+c^2) + 2t(xa-yb+cz) + (x^2-y^2+z^2) = 0
-    let c1 = sq a - sq b + sq c
-       c2 = 2 * (x * a - y * b + c * z)
-       c3 = sq x - sq y + sq z
-    in  case quadratic c1 c2 c3 of
-       Nothing -> emptyIList
-       Just (t1, t2) ->
-           -- If either intersection strikes the middle, then the other
-           -- can only be off by rounding error, so we make a tangent
-           -- strike using the "good" value.
-           -- If the intersections straddle the origin, then it's
-           -- an exit/entry pair, otherwise it's an entry/exit pair.
-           let y1 = y + t1 * b
-               y2 = y + t2 * b
-           in  if y1 `near` 0                  then entryexit (g t1) (g t1)
-               else if y2 `near` 0             then entryexit (g t2) (g t2)
-               else if (y1 < 0) `xor` (y2 < 0) then exitentry (g t1) (g t2)
-               else                                 entryexit (g t1) (g t2)
-
-  where g t = (t, (Conic origin v1 v2, (ConeSide, p0, texture)))
-           where origin = point 0 0 0
-                 x0 = x + t * a
-                 y0 = y + t * b
-                 z0 = z + t * c
-                 p0 = point  x0 y0 z0
-                 v0 = normalize $ vector x0 (-y0) z0
-                 (v1, v2) = tangents v0
-
-       x = xCoord r
-       y = yCoord r
-       z = zCoord r
-       a = xComponent v
-       b = yComponent v
-       c = zComponent v
-
-       -- beyond me why this isn't defined in the prelude...
-       xor False b = b
-       xor True  b = not b
-
-
--------------------
--- Solving quadratics
--------------------
-
-quadratic :: Double -> Double -> Double -> Maybe (Double, Double)
-quadratic a b c =
-  -- Solve the equation ax^2 + bx + c = 0 by using the quadratic formula.
-  let d = sq b - 4 * a * c
-      d' = if d `near` 0 then 0 else d
-  in if d' < 0
-     then Nothing -- There are no real roots.
-     else
-       if a > 0 then Just (((-b) - sqrt d') / (2 * a),
-                           ((-b) + sqrt d') / (2 * a))
-                else Just (((-b) + sqrt d') / (2 * a),
-                           ((-b) - sqrt d') / (2 * a))
-
--------------------
--- Bounding boxes
--------------------
-
-data MaybeInterval = Interval !Double !Double 
-                  | NoInterval
-
-isInterval (Interval _ _) = True
-isInterval _              = False
-
-intersectWithBox :: Ray -> Box -> Bool
-intersectWithBox (r, v) (B x1 x2 y1 y2 z1 z2)
-  = isInterval interval
-  where x_interval = intersectRayWithSlab (xCoord r) (xComponent v) (x1, x2)
-       y_interval = intersectRayWithSlab (yCoord r) (yComponent v) (y1, y2)
-       z_interval = intersectRayWithSlab (zCoord r) (zComponent v) (z1, z2)
-       interval = intersectInterval x_interval
-                  (intersectInterval y_interval z_interval)
-
-intersectInterval :: MaybeInterval -> MaybeInterval -> MaybeInterval
-intersectInterval NoInterval _ = NoInterval
-intersectInterval _ NoInterval = NoInterval
-intersectInterval (Interval a b) (Interval c d)
-  | b < c || d < a = NoInterval
-  | otherwise = Interval (a `max` c) (b `min` d)
-
-{-# INLINE intersectRayWithSlab #-}
-intersectRayWithSlab :: Double -> Double -> (Double,Double) -> MaybeInterval
-intersectRayWithSlab xCoord alpha (x1, x2)
-  | alpha == 0 = if xCoord < x1 || xCoord > x2 then NoInterval else infInterval
-  | alpha >  0 = Interval a b
-  | otherwise  = Interval b a 
-  where a = (x1 - xCoord) / alpha
-       b = (x2 - xCoord) / alpha
-
-infInterval = Interval (-inf) inf
diff --git a/ghc/tests/programs/galois_raytrace/Interval.hs b/ghc/tests/programs/galois_raytrace/Interval.hs
deleted file mode 100644 (file)
index a4d313f..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Interval
-    ( IList
-    , Intersection
-    , emptyIList, openIList
-    , mkEntry, mkExit
-    , entryexit, exitentry
-    , mapI
-    , unionIntervals, intersectIntervals, differenceIntervals
-    , complementIntervals
-    ) where
-
-import Geometry
-
--- The result of a ray trace is represented as a list of surface
--- intersections.  Each intersection is a point along the ray with
--- a flag indicating whether this intersection is an entry or an
--- exit from the solid.  Each intersection also carries unspecified
--- surface data for use by the illumination model.
-
--- Just the list of intersections isn't enough, however.  An empty
--- list can denote either a trace that is always within the solid
--- or never in the solid.  To dissambiguate, an extra flag is kept
--- that indicates whether we are starting inside or outside of the
--- solid.  As a convenience, we also keep an additional flag that
--- indicates whether the last intersection ends inside or outside.
-
-type IList a           = (Bool, [Intersection a], Bool)
-type Intersection a    = (Double, Bool, a)
-
-emptyIList = (False, [], False)
-openIList = (True, [], True)
-
-mapI f (b1, is, b2) = (b1, map f is, b2)
-
-isEntry (_, entry, _) = entry
-isExit  (_, entry, _) = not entry
-
-mkEntry (t, a) = (t, True,  a)
-mkExit  (t, a) = (t, False, a)
-
-entryexit w1 w2 = (False, [mkEntry w1, mkExit w2], False)
-exitentry w1 w2 = (True, [mkExit w1, mkEntry w2], True)
-arrange   w1@(t1, _) w2@(t2, _) | t1 < t2   = entryexit w1 w2
-                               | otherwise = entryexit w2 w1
-
-
-cmpI :: Intersection a -> Intersection a -> Ordering
-cmpI (i, _, _) (j, _, _)
-  | i `near` j = EQ
-  | i   <    j = LT
-  | otherwise  = GT
-
-bad (b1, [], b2) = b1 /= b2
-bad (b1, is, b2) = bad' b1 is || b2 /= b3
-  where (_, b3, _) = last is
-
-bad' b [] = False
-bad' b ((_, c, _) : is) = b == c || bad' c is
-
-unionIntervals :: IList a -> IList a -> IList a
-unionIntervals (isStartOpen, is, isEndOpen) (jsStartOpen, js, jsEndOpen)
-  = (isStartOpen || jsStartOpen, uniIntervals is js, isEndOpen || jsEndOpen)
-  where uniIntervals is [] | jsEndOpen = []
-                          | otherwise = is
-       uniIntervals [] js | isEndOpen = []
-                          | otherwise = js
-       uniIntervals is@(i : is') js@(j : js')
-         = case cmpI i j of
-           EQ -> if isEntry i == isEntry j then i : uniIntervals is' js'
-                                           else uniIntervals is' js'
-           LT -> if isEntry j then i : uniIntervals is' js
-                              else     uniIntervals is' js
-           GT -> if isEntry i then j : uniIntervals is js'
-                              else     uniIntervals is js'
-
-intersectIntervals :: IList a -> IList a -> IList a
-intersectIntervals is js
-  = complementIntervals (unionIntervals is' js')
-  where is' = complementIntervals is
-       js' = complementIntervals js
-
-differenceIntervals :: IList a -> IList a -> IList a
-differenceIntervals is js
-  = complementIntervals (unionIntervals is' js)
-  where is' = complementIntervals is
-
-complementIntervals :: IList a -> IList a
-complementIntervals (o1, is, o2)
-  = (not o1, [ (i, not isentry, a) | (i, isentry, a) <- is ], not o2)
-
--- tests...
-
-{-
-mkIn, mkOut :: Double -> Intersection a
-mkIn x = (x, True, undefined)
-mkOut x = (x, False, undefined)
-
-i1 =  (False, [ mkIn 2, mkOut 7 ], False)
-i1' = (True, [ mkOut 2, mkIn 7 ], True)
-i2 =  (False, [ mkIn 1, mkOut 3, mkIn 4, mkOut 5, mkIn 6, mkOut 8 ], False)
-
-t1 = unionIntervals i1 i2
-t2 = intersectIntervals i1 i2
-t3 = intersectIntervals i2 i1
-t4 = complementIntervals i1
-t5 = intersectIntervals i2 i1'
-t6 = differenceIntervals i2 i1
-t7 = differenceIntervals i2 i2
-
-sh (o1,is,o2) =
-    do  if o1 then putStr "..." else return ()
-       putStr $ foldr1 (++) (map si is)
-       if o2 then putStr "..." else return ()
-si (i, True, _, _) = "<" ++ show i
-si (i, False, _, _) = " " ++ show i ++ ">"
--}
diff --git a/ghc/tests/programs/galois_raytrace/Main.hs b/ghc/tests/programs/galois_raytrace/Main.hs
deleted file mode 100644 (file)
index 4ef9fe3..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
--- Modified to read sample input directly from a file.
-
-module Main where
-
-import System
-
-import Parse
-import Eval
-
-main = do { str <- readFile "galois.gml"
-          ; mainEval (rayParse str)
-          }
diff --git a/ghc/tests/programs/galois_raytrace/Makefile b/ghc/tests/programs/galois_raytrace/Makefile
deleted file mode 100644 (file)
index 1aa3b51..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -package text -package lang
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
-# DO NOT DELETE: Beginning of Haskell dependencies
-CSG.o : CSG.hs
-CSG.o : ./Construct.hi
-CSG.o : ./Geometry.hi
-CSG.o : ./Intersections.hi
-CSG.o : ./Interval.hi
-CSG.o : ./Misc.hi
-Construct.o : Construct.hs
-Construct.o : ./Geometry.hi
-Data.o : Data.hs
-Data.o : ./CSG.hi
-Data.o : ./Geometry.hi
-Data.o : ./Illumination.hi
-Data.o : ./Primitives.hi
-Data.o : ./Surface.hi
-Eval.o : Eval.hs
-Eval.o : ./Geometry.hi
-Eval.o : ./CSG.hi
-Eval.o : ./Surface.hi
-Eval.o : ./Data.hi
-Eval.o : ./Parse.hi
-Geometry.o : Geometry.hs
-Illumination.o : Illumination.hs
-Illumination.o : ./Geometry.hi
-Illumination.o : ./CSG.hi
-Illumination.o : ./Surface.hi
-Illumination.o : ./Misc.hi
-Intersections.o : Intersections.hs
-Intersections.o : ./Construct.hi
-Intersections.o : ./Geometry.hi
-Intersections.o : ./Interval.hi
-Intersections.o : ./Misc.hi
-Interval.o : Interval.hs
-Interval.o : ./Geometry.hi
-Main.o : Main.hs
-Main.o : ./Parse.hi
-Main.o : ./Eval.hi
-Misc.o : Misc.hs
-Parse.o : Parse.hs
-Parse.o : ./Data.hi
-Pixmap.o : Pixmap.hs
-Primitives.o : Primitives.hs
-RayTrace.o : RayTrace.hs
-RayTrace.o : ./Illumination.hi
-RayTrace.o : ./Surface.hi
-Surface.o : Surface.hs
-Surface.o : ./Geometry.hi
-Surface.o : ./CSG.hi
-Surface.o : ./Misc.hi
-# DO NOT DELETE: End of Haskell dependencies
diff --git a/ghc/tests/programs/galois_raytrace/Misc.hs b/ghc/tests/programs/galois_raytrace/Misc.hs
deleted file mode 100644 (file)
index 1368b31..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Misc where
-
-import IOExts
-
-debug s v = trace (s ++" : "++ show v ++ "\n") v
--- debug s v = v
diff --git a/ghc/tests/programs/galois_raytrace/Parse.hs b/ghc/tests/programs/galois_raytrace/Parse.hs
deleted file mode 100644 (file)
index 10b9f9b..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Parse where
-
-import Char
-import Parsec hiding (token)
-
-import Data
-
-
-program :: Parser Code
-program =
-  do { whiteSpace
-     ; ts <- tokenList
-     ; eof
-     ; return ts
-     }
-
-tokenList :: Parser Code
-tokenList = many token <?> "list of tokens"
-
-token :: Parser GMLToken
-token =
-       do { ts <- braces   tokenList          ; return (TBody ts) } 
-  <|>  do { ts <- brackets tokenList          ; return (TArray ts) }
-  <|> (do { s  <- gmlString                   ; return (TString s) } <?> "string")
-  <|> (do { t <- pident False                 ; return t }           <?> "identifier")
-  <|> (do { char '/'   -- No whitespace after slash
-          ; t <- pident True                  ; return t } <?> "binding identifier")
-  <|> (do { n <- number                       ; return n } <?> "number")
-
-pident :: Bool -> Parser GMLToken
-pident rebind =
-  do { id <- ident
-     ; case (lookup id opTable) of
-       Nothing -> if rebind then return (TBind id) else return (TId id)
-       Just t  -> if rebind then error ("Attempted rebinding of identifier " ++ id) else return t
-     }
-
-ident :: Parser String
-ident = lexeme $
-  do { l <- letter
-     ; ls <- many (satisfy (\x -> isAlphaNum x || x == '-' || x == '_'))
-     ; return (l:ls)
-     }
-
-gmlString :: Parser String
-gmlString = lexeme $ between (char '"') (char '"') (many (satisfy (\x -> isPrint x && x /= '"')))
-
--- Tests for numbers
--- Hugs breaks on big exponents (> ~40)
-test_number = "1234 -1234 1 -0 0" ++
-              " 1234.5678 -1234.5678 1234.5678e12 1234.5678e-12 -1234.5678e-12" ++
-              " -1234.5678e12 -1234.5678E-12 -1234.5678E12" ++
-              " 1234e11 1234E33 -1234e33 1234e-33" ++
-              " 123e 123.4e 123ee 123.4ee 123E 123.4E 123EE 123.4EE"
-              
-
--- Always int or real
-number :: Parser GMLToken
-number = lexeme $
-  do { s <- optSign
-     ; n <- decimal
-     ;     do { string "."
-              ; m <- decimal
-              ; e <- option "" exponent'
-              ; return (TReal (read (s ++ n ++ "." ++ m ++ e)))  -- FIXME: Handle error conditions
-              }
-       <|> do { e <- exponent'
-              ; return (TReal (read (s ++ n ++ ".0" ++ e)))
-              }
-       <|> do { return (TInt (read (s ++ n))) }
-     }
-
-exponent' :: Parser String
-exponent' = try $
-  do { e <- oneOf "eE"
-     ; s <- optSign
-     ; n <- decimal
-     ; return (e:s ++ n)
-     }
-
-decimal = many1 digit
-
-optSign :: Parser String
-optSign = option "" (string "-")
-
-
-------------------------------------------------------
--- Library for tokenizing.
-
-braces   p = between (symbol "{") (symbol "}") p
-brackets p = between (symbol "[") (symbol "]") p
-
-symbol name = lexeme (string name)
-
-lexeme p = do{ x <- p; whiteSpace; return x  }
-
-whiteSpace  = skipMany (simpleSpace <|> oneLineComment <?> "")
-  where simpleSpace = skipMany1 (oneOf " \t\n\r\v")    
-        oneLineComment =
-            do{ string "%"
-              ; skipMany (noneOf "\n\r\v")
-              ; return ()
-              }
-
-
-------------------------------------------------------------------------------
-
-rayParse :: String -> Code
-rayParse is = case (parse program "<stdin>" is) of
-              Left err -> error (show err)
-              Right x  -> x
-
-rayParseF :: String -> IO Code
-rayParseF file =
-  do { r <- parseFromFile program file
-     ; case r of
-       Left err -> error (show err)
-       Right x  -> return x
-     }
-
-run :: String -> IO ()
-run is = case (parse program "" is) of
-         Left err -> print err
-         Right x  -> print x
-
-runF :: IO ()
-runF =
-  do { r <- parseFromFile program "simple.gml"
-     ; case r of
-       Left err -> print err
-       Right x  -> print x
-     }
diff --git a/ghc/tests/programs/galois_raytrace/Pixmap.hs b/ghc/tests/programs/galois_raytrace/Pixmap.hs
deleted file mode 100644 (file)
index 11d20f0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Pixmap where
-
-import Char
-import IO hiding (try)
-import Parsec
-
-readPPM f
-  = do  h <- openFile f ReadMode
-       s <- hGetContents h
-       case (parse parsePPM f s) of
-         Left err -> error (show err)
-         Right x  -> return x
-
-writePPM f ppm
-  = do  h <- openFile f WriteMode
-       let s = showPPM (length (head ppm)) (length ppm) ppm
-       hPutStr h s
-
--- parsing
-
-parsePPM
-  = do  string "P6"
-       whiteSpace
-       width <- number
-       whiteSpace
-       height <- number
-       whiteSpace
-       colormax <- number
-       whiteSpace
-       cs <- getInput
-       return (chop width (chopColors cs))
-
-chopColors [] = []
-chopColors (a:b:c:ds) = (ord a, ord b, ord c) : chopColors ds
-
-chop n [] = []
-chop n xs = h : chop n t
-    where (h, t) = splitAt n xs
-
-number
-  = do  ds <- many1 digit
-       return (read ds :: Int)
-
-whiteSpace
-  = skipMany (simpleSpace <|> oneLineComment <?> "")
-    where simpleSpace = skipMany1 (oneOf " \t\n\r\v")    
-         oneLineComment =
-             do  char '#'
-                 skipMany (noneOf "\n\r\v")
-                 return ()
-
--- printing
-
-showPPM :: Int -> Int -> [[(Int,Int,Int)]] -> String
-showPPM wid ht pss
-  = header ++ concat [[chr r, chr g, chr b] | ps <- pss, (r, g, b) <-ps]
-  where
-    header = "P6\n#Galois\n" ++ show wid ++ " " ++ show ht ++ "\n255\n"
-showPPM _ _ _ = error "incorrect length of bitmap string"
diff --git a/ghc/tests/programs/galois_raytrace/Primitives.hs b/ghc/tests/programs/galois_raytrace/Primitives.hs
deleted file mode 100644 (file)
index 2f21654..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Primitives where
-
-rad2deg :: Double -> Double
-rad2deg r = r * 180 / pi
-
-deg2rad :: Double -> Double
-deg2rad d = d * pi / 180
-
-addi :: Int -> Int -> Int
-addi = (+)
-
-addf :: Double -> Double -> Double
-addf = (+)
-
-acosD :: Double -> Double
-acosD x = acos x * 180 / pi
-
-asinD :: Double -> Double
-asinD x = asin x * 180 / pi
diff --git a/ghc/tests/programs/galois_raytrace/RayTrace.hs b/ghc/tests/programs/galois_raytrace/RayTrace.hs
deleted file mode 100644 (file)
index cb15388..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module RayTrace(module Illumination, module Surface) where
-
-import Illumination
-import Surface
diff --git a/ghc/tests/programs/galois_raytrace/Surface.hs b/ghc/tests/programs/galois_raytrace/Surface.hs
deleted file mode 100644 (file)
index 832f0fc..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
--- Copyright (c) 2000 Galois Connections, Inc.
--- All rights reserved.  This software is distributed as
--- free software under the license in the file "LICENSE",
--- which is included in the distribution.
-
-module Surface
-    ( SurfaceFn (..)
-    , Properties
-    , sfun, sconst
-    , prop
-    , matte, shiny
-    , chgColor
-    , surface
-    ) where
-
-import Geometry
-import CSG
-import Misc
-
--- the surface gets passed face then u then v.
-data SurfaceFn c v = SFun (Int -> Double -> Double -> Properties c v)
-                   | SConst (Properties c v)
-
-sfun :: (Int -> Double -> Double -> Properties c v) -> SurfaceFn c v
-sfun = SFun
-sconst :: Properties c v -> SurfaceFn c v
-sconst = SConst
-
-type Properties c v = (c, v, v, v)
-
-prop c d s p = (c, d, s, p)
-
-matte = (white, 1.0, 0.0, 1.0)
-shiny = (white, 0.0, 1.0, 1.0)
-
-chgColor :: c -> Properties d v -> Properties c v
-chgColor c (_, d, s, p) = (c, d, s, p)
-
-instance (Show c, Show v) => Show (SurfaceFn c v) where
-  show (SFun _)   = "Surface function"
-  -- show (SConst p) = "Surface constant: " ++ show p
-  show (SConst p) = "Surface constant"
-
-evalSurface :: SurfaceFn Color Double -> Int -> Double -> Double -> Properties Color Double
-evalSurface (SConst p) = \_ _ _ -> p
-evalSurface (SFun f)   = f
-
--- calculate surface properties, given the type of
--- surface, and intersection point in object coordinates
-
--- surface :: Surface SurfaceFn -> (Int, Point) -> (Vector, Properties)
-
-surface (Planar _ v0 v1) (n, p0, fn)
-  = (norm, evalSurface fn n' u v)
-  where norm = normalize $ cross v0 v1
-       (n', u, v) = planarUV n p0
-
-surface (Spherical _ v0 v1) (_, p0, fn)
-  = (norm, evalSurface fn 0 u v)
-  where x = xCoord p0
-       y = yCoord p0
-       z = zCoord p0
-       k = sqrt (1 - sq y)
-       theta = adjustRadian (atan2 (x / k) (z / k))
-       -- correct so that the image grows left-to-right
-       -- instead of right-to-left
-       u = 1.0 - clampf (theta / (2 * pi))
-       v =       clampf ((y + 1) / 2)
-       norm = normalize $ cross v0 v1
-
--- ZZ ignore the (incorrect) surface model, and estimate the normal
--- from the intersection in object space
-surface (Cylindrical _ v0 v1) (_, p0, fn)
-  = (norm, evalSurface fn 0 u v)
-  where x = xCoord p0
-       y = yCoord p0
-       z = zCoord p0
-       u = clampf $ adjustRadian (atan2 x z) / (2 * pi)
-       v = y
-       norm = normalize $ cross v0 v1
-
--- ZZ ignore the (incorrect) surface model, and estimate the normal
--- from the intersection in object space
-surface (Conic _ v0 v1) (_, p0, fn)
-  = (norm, evalSurface fn 0 u v)
-  where x = xCoord p0
-       y = yCoord p0
-       z = zCoord p0
-       u = clampf $ adjustRadian (atan2 (x / y) (z / y)) / (2 * pi)
-       v = y
-       norm = normalize $ cross v0 v1
-
-planarUV face p0
-  = case face of
-    PlaneFace      -> (0, x, z)
-
-    CubeFront      -> (0, x, y)
-    CubeBack       -> (1, x, y)
-    CubeLeft       -> (2, z, y)
-    CubeRight      -> (3, z, y)
-    CubeTop        -> (4, x, z)
-    CubeBottom     -> (5, x, z)
-
-    CylinderTop    -> (1, (x + 1) / 2, (z + 1) / 2)
-    CylinderBottom -> (2, (x + 1) / 2, (z + 1) / 2)
-
-    ConeBase       -> (1, (x + 1) / 2, (z + 1) / 2)
-  where x = xCoord p0
-       y = yCoord p0
-       z = zCoord p0
-
--- misc
-
-adjustRadian :: Radian -> Radian
-adjustRadian r = if r > 0 then r else r + 2 * pi
diff --git a/ghc/tests/programs/galois_raytrace/galois.gml b/ghc/tests/programs/galois_raytrace/galois.gml
deleted file mode 100644 (file)
index 5029d57..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-
-[   [97 95 73 50 89 97 99 99 99 99 99 99 99 99 99 98 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 99 99 99 99 99 98 99 99 98 97 99 99 99 99 99 99 99 99 99 99 97 97 96 96 96 96 96 96 99 99 99]
-  [88 96 66 53 52 86 99 99 99 99 99 99 99 99 99 99 99 99 99 98 99 99 99 99 99 99 99 99 99 99 98 96 98 99 99 99 99 99 99 99 99 97 98 99 99 99 99 99 99 99 99 99 96 96 96 98 97 96 96 96 97 97 96]
-  [89 92 79 50 54 45 91 98 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 98 99 98 96 98 98 98 98 97 98 99 99 99 99 99 99 99 99 99 99 99 99 99 97 96 96 97 99 99 96 96 98 98 97 97]
-  [88 91 96 81 40 35 39 91 95 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 97 97 98 99 98 99 99 96 95 95 95 96 97 99 99 98 97 99 99 97 98 99 99 98 96 96 96 94 96 98 99 96 96 96 97 95 96]
-  [83 92 91 48 54 33 62 64 98 99 99 99 99 99 99 99 97 98 99 99 99 99 99 99 99 98 98 99 99 99 99 99 99 98 97 97 98 99 97 99 99 99 99 99 99 99 99 99 99 99 96 97 98 96 96 97 99 98 96 95 96 96 96]
-  [91 93 64 78 94 75 57 50 81 97 99 99 99 99 99 98 94 96 99 99 99 99 99 99 99 97 98 99 99 99 98 98 99 98 99 98 99 99 98 99 99 99 99 99 99 99 99 99 99 99 97 99 98 96 91 96 97 98 98 96 96 96 99]
-  [95 63 85 94 84 95 72 61 44 84 96 98 99 99 99 99 98 98 98 99 99 99 99 99 99 97 96 98 99 99 97 96 98 99 99 97 98 99 98 97 99 99 99 99 99 99 99 99 99 99 97 99 99 96 93 98 96 97 96 96 96 96 95]
-  [63 80 88 96 96 88 90 52 64 52 95 98 99 99 99 99 99 99 97 98 99 99 99 97 97 99 98 97 97 97 99 96 98 99 99 97 98 99 99 98 98 98 99 99 99 99 99 99 99 99 98 98 99 96 96 96 94 97 98 99 96 92 95]
-  [92 84 90 92 91 88 89 75 50 58 64 96 99 99 99 99 99 99 99 99 99 99 99 98 99 99 98 99 99 98 99 98 99 99 99 99 99 99 99 99 98 98 99 99 99 96 99 98 99 99 99 97 96 97 96 96 92 96 99 98 95 94 95]
-  [91 80 85 85 92 96 93 87 81 49 66 88 99 99 99 99 99 99 99 99 99 99 99 98 99 99 96 98 99 99 99 99 99 98 99 99 99 98 99 99 99 99 99 99 99 98 99 98 99 99 98 97 98 96 96 96 93 96 99 98 96 97 97]
-  [70 90 96 96 95 95 97 93 60 73 64 67 93 97 99 99 99 99 99 99 99 99 99 98 97 97 98 99 99 99 99 99 98 94 97 98 99 98 99 99 99 99 99 99 99 99 98 98 98 97 98 99 99 96 96 96 96 96 99 97 96 96 95]
-  [93 93 97 97 94 88 85 89 90 57 72 43 82 97 99 99 99 99 99 99 99 99 99 99 98 96 97 99 99 99 99 99 99 96 96 96 98 99 99 98 99 97 98 99 99 98 95 81 88 84 98 98 95 96 96 95 96 96 98 95 94 94 92]
-  [87 96 91 94 96 97 98 94 75 66 76 60 67 83 99 99 99 99 99 99 99 99 99 99 99 98 98 99 99 99 99 99 99 97 97 97 95 96 97 95 96 76 70 66 73 83 92 60 88 58 88 95 95 95 96 94 95 96 98 96 97 97 97]
-  [90 96 86 84 89 85 93 92 96 96 94 84 56 85 98 98 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 98 99 97 56 40 57 71 69 66 78 73 84 55 34 39 39 41 44 46 31 61 90 98 97 92 94 98 99 97 98 98 98]
-  [93 91 94 89 66 81 86 94 89 87 97 82 84 65 84 82 87 89 97 96 97 99 99 99 99 99 99 99 99 99 99 97 96 40 4 15 9 9 6 2 7 14 23 9 8 8 10 3 3 8 13 12 17 42 90 93 86 93 96 97 96 96 96]
-  [85 82 82 76 91 90 86 83 84 86 54 37 26 49 31 20 13 43 40 55 80 95 98 98 99 99 99 99 99 98 99 97 66 10 3 4 12 19 4 4 7 18 7 4 11 11 6 11 24 11 12 8 18 9 30 85 93 90 98 99 96 93 96]
-  [77 68 78 66 72 66 79 92 73 57 57 73 69 39 73 68 70 57 22 15 17 21 50 83 93 97 98 99 99 97 94 66 12 0 0 0 3 4 6 21 7 3 5 2 3 14 17 7 4 6 28 39 39 24 20 53 95 80 98 99 98 96 97]
-  [69 75 86 82 89 86 64 51 66 93 93 80 90 92 89 87 92 94 68 34 24 13 17 6 20 55 91 98 98 95 66 10 18 4 3 3 1 3 12 10 9 11 17 3 15 14 17 23 15 26 25 25 21 43 21 10 65 62 97 98 99 98 96]
-  [95 94 94 68 45 48 41 69 84 72 80 94 78 78 94 96 88 93 95 94 83 67 35 13 28 38 15 40 87 80 17 7 4 7 6 9 37 20 19 19 22 9 5 7 11 13 26 14 29 27 41 35 44 19 20 16 43 70 96 96 97 99 99]
-  [93 96 88 54 57 57 75 74 70 79 94 96 94 97 97 88 88 96 83 97 97 72 65 75 46 21 17 9 28 29 19 22 4 9 8 5 24 34 17 19 7 8 25 16 9 5 8 12 15 32 54 43 30 14 18 11 45 62 96 96 96 97 98]
-  [97 91 56 59 44 70 63 78 88 82 73 82 96 97 78 94 94 96 99 99 98 91 54 21 4 4 3 11 14 35 14 17 7 26 36 21 11 35 42 24 3 9 17 13 9 20 9 21 20 45 28 35 42 19 38 14 36 67 98 98 97 97 96]
-  [80 42 56 39 41 71 74 62 54 57 62 68 96 87 92 95 93 97 98 98 67 21 7 4 5 19 22 25 10 8 24 7 6 26 42 43 38 42 32 13 36 60 81 88 67 62 37 63 28 15 26 44 32 30 25 38 62 70 73 78 87 95 97]
-  [33 60 39 44 80 73 40 59 58 55 70 71 90 91 86 97 98 98 92 43 8 9 2 6 42 65 50 45 27 27 24 9 13 37 66 66 88 80 60 72 92 90 96 98 94 84 43 43 18 31 34 35 19 53 28 46 31 23 49 56 40 78 96]
-  [74 32 63 76 67 52 85 93 81 74 85 83 65 80 88 96 98 68 30 4 2 2 2 24 82 56 40 25 44 44 30 52 70 83 87 91 90 73 69 51 86 97 99 99 97 92 44 39 28 26 26 22 49 23 36 67 37 17 23 27 39 54 91]
-  [44 62 77 88 81 94 95 94 55 78 57 42 77 79 90 92 39 7 3 9 1 4 19 68 57 39 49 54 62 53 74 92 88 97 99 99 90 64 82 53 84 99 99 99 97 99 87 76 52 39 48 37 35 26 51 32 8 6 19 6 42 78 84]
-  [61 82 82 81 96 90 94 66 64 77 65 81 96 97 81 20 2 5 9 10 21 23 61 67 55 48 53 61 48 87 97 96 98 98 98 96 69 50 85 60 65 98 99 99 98 97 94 62 45 50 57 54 21 11 16 11 6 11 21 6 26 71 75]
-  [93 77 71 97 90 93 51 85 65 77 94 96 94 77 15 1 0 0 8 9 8 53 73 61 64 59 59 53 87 98 98 98 96 94 98 75 37 34 84 51 37 97 98 99 99 97 57 5 5 4 5 4 7 3 18 4 6 15 9 4 8 64 76]
-  [96 82 93 79 95 82 81 79 85 96 91 74 44 11 12 9 2 0 5 5 24 69 55 63 84 82 75 78 92 98 99 97 95 91 89 33 38 41 70 55 30 94 98 99 98 90 11 8 4 6 3 12 41 2 3 1 6 6 6 6 16 30 58]
-  [89 66 92 84 96 98 97 92 96 75 45 29 9 38 6 10 3 10 1 8 69 67 64 70 85 87 93 94 97 99 99 99 94 94 70 44 23 60 78 55 28 98 99 99 99 78 6 9 16 15 5 2 8 4 7 1 18 13 18 16 4 23 66]
-  [48 79 85 82 90 97 96 95 64 20 25 26 27 12 5 8 6 7 6 42 74 64 49 80 94 96 98 99 99 99 99 98 94 96 71 50 7 55 92 31 49 98 99 99 98 62 7 10 13 8 12 11 9 3 5 4 16 9 11 9 13 44 68]
-  [93 72 87 92 96 98 95 62 38 9 23 64 5 6 12 32 7 9 15 70 69 54 75 97 96 97 99 99 99 99 99 98 98 96 71 79 62 66 69 20 41 98 99 99 98 63 9 29 38 33 28 17 17 40 10 9 18 10 22 10 8 39 74]
-  [93 69 84 88 95 93 72 41 17 31 69 54 35 6 6 26 18 36 39 68 77 82 95 98 98 97 99 98 99 99 99 99 99 97 91 89 92 63 31 11 44 98 99 99 98 77 19 8 13 22 30 28 35 14 18 21 15 7 37 46 23 53 91]
-  [77 85 92 96 88 65 24 23 58 63 44 35 24 17 9 24 18 21 43 54 87 95 97 98 98 97 99 97 96 98 99 99 99 99 97 89 64 47 42 16 68 99 99 99 99 94 31 17 37 25 20 51 13 7 8 7 6 34 40 39 65 63 94]
-  [58 83 97 92 90 42 34 66 76 38 42 35 22 12 10 51 8 33 54 80 98 96 94 90 56 88 94 95 70 68 98 98 98 97 96 94 89 66 30 48 97 99 99 99 98 98 61 13 24 10 20 19 18 6 15 10 11 25 43 27 63 53 92]
-  [87 71 66 73 79 65 69 44 74 47 44 38 18 15 24 29 9 38 67 93 98 96 79 53 46 96 95 88 23 61 87 95 95 95 87 79 56 35 46 89 99 99 99 99 99 98 67 23 13 10 21 49 31 21 26 16 17 36 46 40 46 67 96]
-  [96 80 47 69 60 77 59 22 29 74 61 50 56 41 34 27 12 48 74 96 99 97 56 40 23 95 96 63 39 77 85 82 77 75 69 68 71 77 90 97 99 99 99 99 99 98 66 29 44 17 7 23 23 18 24 27 16 33 67 18 30 87 96]
-  [97 96 92 70 45 52 21 22 30 18 38 74 82 25 24 21 12 35 74 96 99 93 31 57 33 95 94 35 17 53 50 48 77 89 93 96 96 98 95 97 99 99 99 99 99 99 72 7 16 28 22 31 14 10 20 23 16 13 39 25 54 95 92]
-  [90 64 52 70 92 83 73 49 25 8 36 40 44 25 39 28 42 26 72 96 98 96 28 41 43 95 88 18 8 75 92 89 91 95 98 93 75 61 94 97 99 99 99 99 99 98 82 13 12 20 34 25 9 23 73 55 45 19 21 15 93 95 96]
-  [22 38 82 96 93 95 93 81 89 51 45 46 26 36 28 24 36 15 31 94 98 95 55 44 30 80 93 34 19 87 88 89 83 94 94 79 30 16 33 90 97 99 99 99 98 98 74 26 9 32 38 21 14 54 74 41 46 46 18 29 91 92 96]
-  [79 92 98 98 98 95 86 82 85 91 94 81 47 28 13 16 47 7 6 69 93 95 92 70 40 75 95 83 44 42 43 83 94 96 81 61 26 26 7 32 85 98 99 99 98 95 62 38 8 13 20 30 23 62 42 31 3 11 11 59 94 97 97]
-  [96 96 97 98 98 85 82 94 93 88 89 96 94 92 59 40 19 12 3 10 37 84 90 94 79 60 93 67 75 65 68 94 97 96 66 40 9 11 48 4 35 93 98 99 97 62 50 36 4 3 15 53 33 63 28 6 2 15 56 72 97 97 95]
-  [98 94 97 95 86 94 91 89 90 95 95 96 95 93 98 88 75 58 34 29 7 21 54 83 84 89 75 79 85 94 94 95 98 82 43 25 6 21 60 24 15 89 97 99 70 66 47 48 2 0 3 22 21 7 4 1 6 55 83 96 98 95 93]
-  [93 96 96 91 60 65 73 87 93 96 95 91 91 88 94 97 97 97 90 76 74 25 2 19 37 59 72 71 83 91 87 90 92 95 67 47 69 37 51 45 3 76 98 98 46 83 71 21 3 4 2 19 13 2 0 7 60 89 97 99 98 92 90]
-  [90 88 92 95 97 95 95 93 87 88 82 86 95 93 92 91 97 96 49 73 58 58 24 6 10 58 77 49 56 84 82 89 87 94 87 46 71 37 47 67 9 54 98 98 56 50 58 13 14 18 0 10 20 4 2 31 96 96 99 99 99 96 95]
-  [78 55 84 95 97 89 73 71 89 92 91 89 90 90 83 82 93 93 68 54 41 27 24 49 85 96 97 89 72 70 48 70 76 91 95 92 43 25 40 87 27 69 97 96 75 33 13 12 10 5 2 14 6 3 15 86 99 97 99 99 97 96 97]
-  [43 61 66 70 93 79 86 94 89 84 80 84 90 96 90 92 94 92 81 37 34 70 94 96 99 98 99 98 96 95 85 77 57 62 63 59 55 50 52 77 33 63 91 71 18 6 4 5 4 4 4 12 4 15 77 98 99 99 99 98 95 95 96]
-  [77 82 75 56 62 67 86 85 84 89 92 90 80 77 52 61 56 59 70 89 98 98 99 99 99 99 99 99 99 98 98 98 92 92 91 69 61 47 28 22 4 9 14 7 4 3 7 11 4 9 4 4 22 79 97 96 97 99 98 96 93 95 96]
-  [97 96 93 97 94 86 69 64 73 59 71 71 71 64 87 94 95 96 99 99 99 99 99 99 99 97 99 99 99 99 99 99 98 96 96 96 96 95 96 93 77 35 11 4 10 2 7 6 2 1 18 59 97 97 99 97 97 99 99 97 95 95 95]
-  [96 97 98 94 97 95 89 75 65 85 89 93 97 98 99 98 98 99 99 99 99 99 99 97 97 99 98 99 99 97 96 96 95 94 95 97 96 96 96 97 98 93 75 45 19 4 2 4 18 49 90 98 99 99 99 95 96 98 96 96 96 95 96]
-  [96 98 99 97 96 95 78 59 78 97 98 98 99 99 99 99 99 99 99 99 99 99 99 98 98 99 97 97 98 96 92 91 92 95 96 98 98 95 96 97 99 98 96 97 93 82 80 87 98 97 98 99 99 98 97 96 96 98 96 96 96 97 96]
-  [95 84 92 97 95 94 50 80 95 98 99 99 99 99 99 97 96 99 98 97 98 99 99 97 97 99 97 97 96 96 90 82 89 92 97 94 94 94 93 96 99 99 98 99 97 99 98 99 99 97 97 97 98 98 96 97 96 96 96 96 96 98 96]
-  [97 90 92 98 92 52 39 93 98 99 99 99 99 99 98 95 95 98 98 96 97 99 99 97 97 99 99 98 98 95 93 89 87 92 94 88 90 90 88 94 96 97 98 98 97 99 99 99 99 97 97 96 95 96 95 96 96 97 98 98 99 98 96]
-  [96 94 90 95 69 43 75 97 99 99 99 99 99 99 97 96 94 94 95 96 99 99 97 94 95 98 99 97 95 95 98 95 87 93 89 89 87 88 93 94 90 94 96 96 98 98 99 98 99 98 96 97 97 95 93 95 96 98 99 99 99 98 99]
-  [97 81 85 68 51 53 96 97 99 99 99 99 99 99 99 97 94 95 95 96 96 98 98 97 95 94 95 95 84 90 96 95 93 95 94 88 79 88 92 97 95 95 95 96 98 99 97 97 99 99 99 98 95 94 96 98 97 99 98 98 98 99 99]
-  [81 86 70 56 71 72 97 99 99 99 99 99 99 99 99 99 97 98 97 96 96 96 98 98 95 94 96 96 92 94 92 94 95 94 93 91 91 93 95 97 92 87 93 95 98 99 95 95 99 98 98 98 94 88 95 95 96 98 96 97 97 96 98]
-  [67 62 30 43 90 73 95 98 98 96 98 98 97 98 95 98 95 95 96 95 98 94 95 96 94 95 96 95 95 96 90 94 96 96 96 92 91 92 94 96 97 91 91 95 94 97 95 93 98 96 96 96 97 95 96 93 95 96 96 96 97 95 96]
-  [53 35 46 37 71 72 94 97 99 99 98 97 98 98 95 94 96 97 96 96 98 87 92 93 96 95 95 92 93 96 95 93 93 89 94 90 87 89 92 90 95 96 97 90 90 96 95 94 97 97 96 96 96 97 97 94 95 96 96 97 96 97 96]
-  [74 88 56 35 91 90 88 94 97 97 95 95 97 98 95 94 96 97 96 96 98 96 95 95 92 88 91 92 92 94 93 94 90 86 88 95 94 93 93 92 97 96 96 94 95 96 96 96 98 99 98 99 98 98 98 97 95 97 98 98 96 94 93]
-  [92 93 63 65 92 97 93 95 99 96 89 98 99 98 96 98 96 93 93 95 97 94 91 94 97 94 95 96 93 88 85 90 92 86 90 97 96 96 96 93 94 97 95 96 94 96 99 96 96 96 96 98 98 96 95 95 94 97 96 93 92 95 93]
-  [82 94 95 81 92 95 92 97 99 98 94 93 92 97 94 97 97 98 94 90 97 95 92 94 94 90 91 96 92 88 94 94 89 83 90 97 96 96 95 96 97 95 94 97 96 96 97 94 93 93 96 98 94 96 96 92 89 90 94 94 94 92 88]
-  [78 85 76 94 97 95 96 97 99 99 98 96 97 97 96 97 97 95 95 96 98 96 96 96 88 86 93 96 94 93 89 88 88 90 90 94 94 97 97 96 96 97 98 98 98 96 92 87 96 96 96 96 96 94 92 93 88 88 93 95 94 90 87]
-  [83 88 91 94 97 97 99 98 98 98 98 99 99 98 99 98 99 97 98 97 98 96 96 95 96 94 96 95 95 91 85 90 90 93 94 94 92 94 95 96 98 97 98 98 97 97 97 96 96 96 95 96 94 95 95 94 93 93 94 95 93 88 91]
-  [95 90 94 94 98 96 98 99 96 98 97 97 98 98 99 99 96 95 97 97 99 95 96 98 93 96 96 96 93 95 89 93 93 95 96 96 97 97 97 97 99 98 97 96 98 99 99 99 98 93 93 96 96 96 95 94 91 92 90 93 94 96 96]
-] /galois
-
-{ /v /u /face                     % bind parameters
-  {                               % toIntCoord : float -> int
-    63.0 mulf floor /i               % i = floor(3.0*i)
-    i 63 eqi { 62 } { i } if          % return max(2, i)
-  } /toIntCoord
-  galois u toIntCoord apply get  % val = texture[u][v]
-    v toIntCoord apply get 
-    real 100.0 divf /gal
-  gal gal gal point               % b/w galois
-  1.0                             % kd = 1.0
-  0.0                             % ks = 0.0
-  1.0                             % n = 1.0
-} /galoisface
-
-
-galoisface cube
--0.5 -0.5 -0.5 translate       % center 
-2.5 uscale                     % make it bigger
--25.0 rotatex -25.0 rotatey    % rotate
-0.0 -1.0 7.0 translate         % move to final position
-
-%galoisface cylinder
-%-0.5 -0.5 -0.5 translate      % center 
-%1.5 uscale                    % make it bigger
-%0.0 rotatex 90.0 rotatey              % rotate
-%0.0 0.0 5.0 translate         % move to final position
-
-%galoisface sphere
-%-0.5 -0.5 -0.5 translate      % center 
-%1.5 uscale                    % make it bigger
-%-25.0 rotatex 25.0 rotatey    % rotate
-%-3.0 0.0 5.0 translate                % move to final position
-
-%union union                     % join the 3 together
-
-{ /v /u /face
-  v 5.0 divf /v
-  u 5.0 divf /u
-  v floor 2 modi 0 eqi 
-    { 1.0 }
-    { 0.8 }
-  if /r   
-  u floor 2 modi 0 eqi 
-    { 1.0 }
-    { 0.8 }
-  if /g   
-  v frac /v
-  u frac /u
-  v 0.0 lessf { v 1.0 addf } { v } if /v
-  u 0.0 lessf { u 1.0 addf } { u } if /u
-  {                               % toIntCoord : float -> int
-    63.0 mulf floor /i               % i = floor(3.0*i)
-    i 63 eqi { 62 } { i } if          % return max(2, i)
-  } /toIntCoord
-  galois u toIntCoord apply get  % val = texture[u][v]
-    v toIntCoord apply get 
-    real 100.0 divf /gal
-  r gal mulf g gal mulf gal point               % b/w galois
-  0.0                             % kd = 1.0
-  1.0                             % ks = 0.0
-  1.0                             % n = 1.0
-} plane /p
-
-p  0.0 -3.0 0.0 translate        % plane at Y = -3
-
-union
-
-/scene
-                                 % directional light
-1.0 -1.0 0.0 point               % direction
-1.0  1.0 1.0 point light /l      % directional light
-
-1.0 0.5 0.0 point                % ambient light
-[ l ]                            % lights
-scene                            % scene to render
-3                                % tracing depth
-90.0                             % field of view
-300 200
-"galois.ppm"           % output file
-render
-
diff --git a/ghc/tests/programs/galois_raytrace/galois_raytrace.stdout b/ghc/tests/programs/galois_raytrace/galois_raytrace.stdout
deleted file mode 100644 (file)
index 6cbbcb5..0000000
Binary files a/ghc/tests/programs/galois_raytrace/galois_raytrace.stdout and /dev/null differ
diff --git a/ghc/tests/programs/hill_stk_oflow/MAIL b/ghc/tests/programs/hill_stk_oflow/MAIL
deleted file mode 100644 (file)
index af721e6..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From sah@ukc.ac.uk Thu Aug 13 16:22:15 1992
-Return-Path: <sah@ukc.ac.uk>
-Received: from dcs.glasgow.ac.uk by pp.dcs.gla.ac.uk with SMTP (PP) 
-          id <18256-0@pp.dcs.gla.ac.uk>; Thu, 13 Aug 1992 16:21:57 +0100
-Message-Id: <13760.9208131521@vanuata.dcs.glasgow.ac.uk>
-Via: uk.ac.ukc; Thu, 13 Aug 92 16:21:50 BST
-Received: from gos by mercury.ukc.ac.uk with UKC POP3+ id aa10412;
-          13 Aug 92 16:21 BST
-From: Steve Hill <sah@ukc.ac.uk>
-To: glasgow-haskell-bugs@dcs.gla.ac.uk
-Subject: Possible bug.
-Date: Thu, 13 Aug 92 16:21:53 +0100
-
-Report from Dr. Steve Hill, Computing Laboratory, University of Kent.
-(sah@ukc.ac.uk)
-
---------
-The following (rather silly) program causes a stack overflow (the B
-stack I think):
-----------------
-module Main where
-
-#include "GhcPrelude.h"
-
-main :: Dialogue
-main = print (final nums)
-
-nums :: [Int]
-nums = fromn 1
-
-fromn :: Int -> [Int]
-fromn n = n : fromn (n+1)
-
-final :: [Int] -> Int
-final (a:l) = seq (force a) (final l)
-
-force :: Int -> Int
-force a | a == a = a
-
-seq :: Int -> Int -> Int
-seq a b | a == a = b
------------------
-
-I would expect it to be able to run in constant space - I may be wrong.
-
-This is the output:
-
-beech.ukc.ac.uk% a.out
-croaked in StackOverflow
-beech.ukc.ac.uk% 
-
-This is the output of a -v compilation:
-
-beech.ukc.ac.uk% ghc -v Try.hs -cpp
-The Glorious New Glasgow Haskell Compilation System, version 0.06
-project label: `ghc'; setup label: `std'
-using a `sun4' host to build a Haskell compiler to run on a
-`sun4' host that will generate `C' code
-
-Haskellised C pre-processor:
-        echo '{-# LINE 1 "Try.hs"-}' > /tmp/ghc15040.cpp;
-/proj/haskell/ghc-0.06/./driver/.././utils/scripts/hscpp  -v 
--D__HASKELL1__=2 -D__GLASGOW_HASKELL__ -I.
--I/proj/haskell/ghc-0.06/imports Try.hs >> /tmp/ghc15040.cpp
-        0.1 real         0.0 user         0.0 sys  
-hscpp:CPP invoked: /lib/cpp           -D__HASKELL1__=2
--D__GLASGOW_HASKELL__ -I. -I/proj/haskell/ghc-0.06/imports Try.hs
-
-Haskell parser:
-        /proj/haskell/ghc-0.06/./driver/.././parsers/hsp/hsp -v  -I.
--I/proj/haskell/ghc-0.06/imports /tmp/ghc15040.cpp > /tmp/ghc15040.hsp
-Glasgow Haskell parser, version 0.06
-Hash Table Contains 993 entries
-        1.2 real         0.4 user         0.2 sys  
-
-Haskell compiler:
-        /proj/haskell/ghc-0.06/./driver/.././compiler/hsc <
-/tmp/ghc15040.hsp  - -v > /tmp/ghc15040.hsc
-Glasgow Haskell Compiler, version 0.06
-
-       17.4 real         7.0 user         2.0 sys  
-
-Pin on Haskell consistency info:
-        echo 'static char ghc_hsc_ID[] = "@(#)hsc_comp Try.hs  
-ver=1.0,";' >> /tmp/ghc15040.hsc
-        0.1 real         0.0 user         0.0 sys  
-extracting C (/tmp/ghc15040.hc) and interface (Try.hi) from /tmp/ghc15040.hsc
-interface really going into: Main.hi
-
-Comparing old and new .hi files:
-        cmp -s /tmp/ghc15040.hi Main.hi || mv /tmp/ghc15040.hi Main.hi
-        0.2 real         0.0 user         0.0 sys  
-
-ANSI-C Haskell assembler:
-        cc -v -S -DDO_RUNTIME_PROFILING -DDO_RUNTIME_TRACE_UPDATES -g
--DGC2s  -D__HASKELL1__=2 -D__GLASGOW_HASKELL__ -I.
--I/proj/haskell/ghc-0.06/imports /tmp/ghc15040.c -o /tmp/ghc15040.s
-/lib/cpp -I. -I/proj/haskell/ghc-0.06/imports -undef -Dunix -Dsun
--Dsparc -DDO_RUNTIME_PROFILING -DDO_RUNTIME_TRACE_UPDATES -DGC2s
--D__HASKELL1__=2 -D__GLASGOW_HASKELL__ /tmp/ghc15040.c >/tmp/cpp.15067.0.i
-/lib/ccom - -Xg </tmp/cpp.15067.0.i >/tmp/ghc15040.s
-rm /tmp/cpp.15067.0.i
-        2.6 real         1.6 user         0.5 sys  
-
-Unix assembler:
-        as  /tmp/ghc15040.s -o Try.o
-        2.3 real         1.1 user         0.5 sys  
-
-Linker:
-        cc   Try.o
-/proj/haskell/ghc-0.06/./driver/.././runtime/main/Preloads.sun4.o
--L/proj/haskell/ghc-0.06/./driver/.././runtime/objs-sun4
--L/proj/haskell/ghc-0.06/./driver/.././lib/objs-sun4 -lHS_2s -lHSrts_2s
-       51.1 real        12.1 user         5.6 sys  
-Checking consistency of: a.out
-
-rm -f /tmp/ghc15040*
-beech.ukc.ac.uk% 
-
-
-Steve Hill.
-
diff --git a/ghc/tests/programs/hill_stk_oflow/Main.hs b/ghc/tests/programs/hill_stk_oflow/Main.hs
deleted file mode 100644 (file)
index 1e2aa92..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{- Without strictness analysis, this program runs in constants
-   space, giving non-termination.
-   With strictness analysis, the recursive call to final is not
-   a tail call, so stack overflow results.
--}
-
-module Main where
-
-main = print (final nums)
-
-nums :: [Int]
-nums = fromn 1
-
-fromn :: Int -> [Int]
-fromn n = n : fromn (n+1)
-
-final :: [Int] -> Int
-final (a:l) = seqq (force a) (final l)
-
-force :: Int -> Int
-force a | a == a = a
-
-seqq :: Int -> Int -> Int
-seqq a b | a == a = b
diff --git a/ghc/tests/programs/hill_stk_oflow/Makefile b/ghc/tests/programs/hill_stk_oflow/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/hill_stk_oflow/hill_stk_oflow.stdout b/ghc/tests/programs/hill_stk_oflow/hill_stk_oflow.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/programs/ipoole_spec_class/GoferPreludeBits.lhs b/ghc/tests/programs/ipoole_spec_class/GoferPreludeBits.lhs
deleted file mode 100644 (file)
index 10d9ca1..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-\begin{vb}
-
-> module GoferPreludeBits where
-
-This script contains some useful functions taken from the standard
-Gofer prelude, but which do not appear in the Haskell prelude
-
-SCCS: %W% %G%
-
-> 
-> copy             :: Int -> a -> [a]      -- make list of n copies of x
-> copy n x          = take n xs where xs = x:xs
-
-
-> cjustify, ljustify, rjustify :: Int -> String -> String
-
-> cjustify n s = space halfm ++ s ++ space (m - halfm)
->                where m     = n - length s
->                      halfm = m `div` 2 
-> ljustify n s = s ++ space (n - length s)
-> rjustify n s = space (n - length s) ++ s
-
-> space       :: Int -> String
-> space n      = copy n ' '
-
-> layn        :: [String] -> String
-> layn         = lay (1::Int) where lay _ []     = []
->                                   lay n (x:xs) = rjustify 4 (show n) ++ ") "
->                                            ++ x ++ "\n" ++ lay (n+1) xs
-
-> -- Merging and sorting lists:
-
-> merge               :: Ord a => [a] -> [a] -> [a]
-> merge []     ys      = ys
-> merge xs     []      = xs
-> merge (x:xs) (y:ys)
->         | x <= y     = x : merge xs (y:ys)
->         | otherwise  = y : merge (x:xs) ys
-
-> sort                :: Ord a => [a] -> [a]
-> sort                 = foldr insert []
-
-> insert              :: Ord a => a -> [a] -> [a]
-> insert x []          = [x]
-> insert x (y:ys)
->         | x <= y     = x:y:ys
->         | otherwise  = y:insert x ys
-
-> qsort               :: Ord a => [a] -> [a]
-> qsort []             = []
-> qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
->                              [ x ] ++
->                        qsort [ u | u<-xs, u>=x ]
-
-> --1.3: undefined = error "undefined"
-
-\end{vb}
-
-
diff --git a/ghc/tests/programs/ipoole_spec_class/Io.lhs b/ghc/tests/programs/ipoole_spec_class/Io.lhs
deleted file mode 100644 (file)
index 7fecec5..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-\input{LiterateUtils}
-{
-\DownLevel
-\filetitle{IO.lgs --- Implementation of the basic I/O monad}
-\author{Andy Gill \\ University of Glasgow.\\(edited by IP)}
-\maybemaketitle
-%
-%
-% SCCS: %W% %G%
-%
-% Modifications
-% -------------
-% 15-01-94     ipoole         IO --> Io  (to keep ghc happy)
-% 04-09-93     ipoole         #ifdef Gofer, so we can compile with hbc
-%                              (and maybe ghc)
-% 02-09-93     ipoole         extracted from Andy's prelude, name changes:
-%                              returnIO --> unitIO, thenIO --> bindIO.
-
-\begin{vb}
-
-> module Io where
-
-\end{verbatim}\end{vb}
-
-This is the basic monad upon which the \verb@Job s1 s2 a@ monad is defined.
-
-\begin{Dec}{Io}         
-The Io monad, defined in terms of a Haskell Dialogue.
-\begin{vb}
-
-> type Io a = (a -> Dialogue) -> Dialogue
-
-#ifdef Gofer
-
->       in unitIo,  bindIo,
->          ioToDialogue, processRequestIo, doneIo
->
-
-#endif
-
-\end{verbatim}\end{vb}\end{Dec}
-
-\begin{Def}{unitIo}
-The operation which returns a result without performing I/O.
-
-\begin{vb}
-
-> unitIo :: x -> Io x
-> unitIo x cont = cont x
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{bindIo}
-Connect an Io operation to a continuation.
-\begin{vb}
-
-> bindIo :: Io a -> (a -> Io b) -> Io b
-> bindIo m k cont = m (\ a -> k a cont)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{ioToDialogue}
-Convert an Io to a runable Haskell Dialogue
-\begin{vb}
-
-> ioToDialogue :: Io a -> Dialogue
-> ioToDialogue io = io (const (const []))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{processRequestIo}
-Output a Haskell Request and get back the response.
-\begin{vb}
-
-> processRequestIo   :: Request -> Io Response
-> processRequestIo req cont ~(resp:resps) = req : cont resp resps
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{doneIo}
-Terminate the Io.
-\begin{vb}
-
-> doneIo :: Io a
-> doneIo cont = \ _ -> []
-
-\end{verbatim}\end{vb}\end{Def}
-}
-\EndFile
-
-
diff --git a/ghc/tests/programs/ipoole_spec_class/JobApp.lhs b/ghc/tests/programs/ipoole_spec_class/JobApp.lhs
deleted file mode 100644 (file)
index b617a36..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-\input{LiterateUtils}
-{
-\DownLevel
-\filetitle{JobApp.lgs --- Convenience functions for the I/O / state monad}
-\author{Andy Gordon and Ian Poole}
-\maybemaketitle
-
-% 
-%               Copyright (C) 1993  Medical Research Council
-% 
-% SCCS: %W% %G%
-%
-%  MODIFICATIONS
-%  -------------
-%     02-09-93  ipoole  Job now carries application state.
-%                       Note addition of >>>, >>>=
-%     20-08-93  ipoole  infixl 0 >> (was infixr 0)
-%     16-08-93  ipoole  JobS s
-%     20-06-93  ipoole  readRemainingInputJ :: Job String
-%     11-03-93  derekc  strToInt, isNat, isInt -> Lib.lgs,
-%                       trace <- Lib.lgs
-%     02-03-93  derekc  newStyleIdentifiersUsed, put under sccs
-%     23-02-93  ipoole  Moved some definition in from Lib, to make IO
-%                       more self contained.
-%     21-02-93  ipoole  Added clearScreen
-%     21-02-93  ipoole  Mods to match those in IOimp.lgs,
-%                       ie to use outputReq and inputResp.
-%                       Added getEnvJ, getArgsJ, getProgNameJ,
-%                       writeFileJ, appendFileJ, readFileJ.
-%                       (The postfixed "j" is to avoid conflict with
-%                       standard continuation versions)
-%     11-11-92  ipoole  added getWord, getInt and putInt
-%     08-11-92  ipoole  infixl 0 ##= (was infix 0 ##=)
-%     08-11-92  ipoole  'gather' made polymorphic
-%     25-10-92  ipoole  priority of >> set to 1 (was "infixr >>" ??)
-
-
-%==========================================================================
-\iftopdocument{\tableofcontents}
-
-This script builds on top of the facilities provided in
-\verb@IO.lgs@ and \verb@JobImp.lgs@ without requiring access to the
-implementation of the \verb@IO@ or \verb@Job@  datatypes.  In particular,
-it operator synonyms for the most-used combinators.  
-
-
-\begin{vb}
-
-> module JobApp where
-> import Lib
-> import Io
-> import JobImp
-
-> infixl 1 >>=          -- bindJobh
-> infixl 1 >>>=         -- bindJob
-
-> infixl 0 >>           
-> infixl 0 >>>          
-
-> infixr 0 ?            
-> infixl 0 ##=
-
-\end{verbatim}\end{vb}
-
-
-
-\sectionH{Synonyms for basic types and combinators}
-
-\begin{Dec}{Task}
-Things of type \verb@Task s1 s2@ may perform I/O, but returns no result.
-It may read/modify state if the state type parameters are instantiated.
-\begin{vb}
-
-> type Task s1 s2 = Job s1 s2 ()
-
-\end{verbatim}\end{vb}\end{Dec}
-
-\begin{Def}{arrow-arrow-equal}
-
-Synonyms for various combinators.
-
-\begin{vb}
-
-> (>>=) = bindJobh
-> (>>>=) = bindJob
-> val = unitJob
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{arrow-arrow}
-Perform the first Job, discard any result, then perform the second job.
-\begin{vb}
-
-> (>>>)     :: Job s1 s2 a -> Job s2 s3 b -> Job s1 s3 b
-> a >>> b   = a >>>= (\_ -> b)
-
-> (>>)      :: Job s1 s2 a -> Job s2 s2 b -> Job s1 s2 b
-> a >> b    = a >>= (\_ -> b)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{questionmark}
-
-So-called "biased choice";  Perform the first Job and iff it raises
-an unhandled error, perform the second job.
-\begin{vb}
-
-
-> (?)       :: Job s s a -> Job s s a -> Job s s a   
-> a ? b     = a `handle` (\x -> b)
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{zeroT} The null Task --- does nothing.
-\begin{vb}
-
-> zeroT      :: Task s s
-> zeroT      = val ()
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-%==========================================================================
-
-\sectionH{Useful imperative combinators}
-
-\begin{Def}{FoldT} 
-Sequentially perform a list of tasks.
-\begin{vb}
-
-> foldT     :: [Task s s] -> Task s s
-> foldT     = foldr (>>) zeroT
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{while}
-Iteratively perform a continuation Job, while a condition on the
-result holds true.
-\begin{vb}
-
-> while :: (a -> Bool) -> (a -> Job s s a) -> (a -> Job s s a)
-> while f p a | f a       = p a >>= while f p
->             | otherwise = val a
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{gather}
-Gather input items into list a by repeatedly performing the given Job, as
-long as the given continuation condition holds true.
-\begin{vb}
-
-> gather :: Job s s a -> (a -> Bool) -> Job s s [a]
-> gather inputFun cond =
->     inputFun >>= (\c ->
->     while
->         (\(c,cs) -> cond c)
->         (\(c,cs) -> inputFun >>= (\c' -> val (c', c:cs)))
->         (c,[]) >>=
->     val . reverse . snd)
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{hash--hash--equals}
-Perform the first job followed by the second, combining their results
-into a 2-tuple.  Note that no change of state type is permitted.
-\begin{vb}
-
-
-> (##=) :: Job s s a -> Job s s b -> Job s s (a,b)
-> p ##= q =
->     p >>= (\a ->
->     q >>= (\b ->
->     val (a,b)))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-%==========================================================================
-\sectionH{Teletype I/O}
-
-Some higher-level IO operations on stdin and stdout.  Note that the
-low-level functions \verb@getChar, getRest, ungetChar@ and \verb@ungetStr@
-are defined in \verb@JobImp.lgs@.
-
-\begin{Def}{getWord,getLine}
-
-Read the next word from stdin.  A word is defined as
-a sequence of non-space characters,  a space being any of
-\verb@<space>,\t,\n,\r,\f,\v@.
-\begin{vb}
-
-> getWord :: Job s s String
-> getWord = gather getChar (not . isSpace) >>=
->           (\str -> if null str  || isSpace (head str) then
->                        getWord
->                    else
->                        val str
->           )
-
-> getLine :: Job s s String
-> getLine = gather getChar (\x -> x /= '\n')
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{getInt}
-Read the next word of input from stdin and interpret as
-a integer.  If the word is not a valid integer, then raise a
-(handleable) error.
-\begin{vb}
-
-> getInt  :: Job s s Int
-> getInt = getWord >>= (\str ->
->       if isInt str then(val . strToInt) str
->       else raise "getInt: invalid string")
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{putChar,putLine,etc}~~\begin{vb}
-
-> putChar :: Char -> Task s s
-> putLine :: String -> Task s s
-> putStr  :: String -> Task s s
-> putInt  :: Int -> Task s s
-> putStrStderr :: String -> Task s s
-> askFor  :: String -> Job s s String
-
-> putChar c = putStr [c]
-> putLine xs = putStr xs >> putStr "\n"
-> putStr = appendChanJ stdout 
-> putStrStderr = appendChanJ stderr
-> putInt = putStr . show
-> askFor xs = putStr xs >> getLine
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{clearScreen}
-On an xterm at least, clear the screen, leaving the cursor at the top left
-position.
-
-\begin{vb}
-
-> clearScreen :: Task s s
-> clearScreen = putStr (map toEnum [27, 91, 72, 27, 91, 50, 74])
-
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\sectionH{Job equivalents of Dialogue IO}
-
-Note that these functions raise exceptions upon encountering an
-error condition.
-
-\begin{Def}{appendChanJ}
-Append to the given channel (stdout, or stdin).
-
-\begin{vb}
-
-> appendChanJ :: String -> String -> Task s s
-> appendChanJ chan str
->       = processRequestJ (AppendChan chan str) >>=
->       (\resp -> case resp of
->               Success -> zeroT
->               Failure (SearchError estr) -> 
->                       raise ("Error in appendChanJ: " ++ estr))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{writeFileJ}~~\begin{vb}
-
-> writeFileJ :: String -> String -> Task s s
-> writeFileJ fname str 
->       = processRequestJ (WriteFile fname str) >>=
->         (\resp -> case resp of
->               Success -> zeroT
->               Failure err -> raise ("writeFileJ " ++ fname) )
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{appendFileJ}~~\begin{vb}
-
-> appendFileJ :: String -> String -> Task s s
-> appendFileJ fname str 
->       = processRequestJ (AppendFile fname str) >>=
->         (\resp -> case resp of
->               Success -> zeroT
->               Failure err -> 
->                       raise ("Error in appendFileJ " ++ fname) )
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{readFileJ}
-\begin{vb}
-
-> readFileJ :: String -> Job s s String
-> readFileJ fname 
->       = processRequestJ (ReadFile fname) >>=
->         (\resp -> case resp of
->               Str l -> val l
->               Failure (SearchError estr) -> 
->                       raise ("Search error in readFileJ: " ++ estr) 
->               Failure err -> 
->                       raise ("Error in readFileJ: " ++ fname))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{readChanJ}
-\begin{vb}
-
-> readChanJ :: String -> Job s s String
-> readChanJ fname 
->       = processRequestJ (ReadChan fname) >>=
->         (\resp -> case resp of
->               Str l -> val l
->               Failure (SearchError estr) -> 
->                       raise ("Search error in readChanJ: " ++ estr) 
->               Failure err -> 
->                       raise ("Error in readChanJ: " ++ fname))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-\sectionHH{Reading from a Pipe (HGU extension)}
-
-\begin{Def}{readPipeJ}
-The argument is any shell command, the return is the result from
-stdout after executing the command under sh.
-\begin{vb}
-
-#ifdef Gofer   -- the ReadPipe request is a HGU extension to Gofer.
-
-> readPipeJ :: String -> Job s s String
-
-> readPipeJ fname 
->       = processRequestJ (ReadPipe fname) >>=
->         (\resp -> case resp of
->               Str l -> val l
->               Failure (SearchError estr) -> 
->                       raise ("Search error in readPipeJ: " ++ estr) 
->               Failure err -> 
->                       raise ("Error in readPipeJ: " ++ fname))
-
-#endif Gofer
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-\sectionH{Environment I/O}
-
-These Jobs use the the new I/O requests available in Gofer 2.28.
-
-\begin{Def}{getEnvJ}
-Return the value of the given Unix environment variable.
-\begin{vb}
-
-> getEnvJ :: String -> Job s s String
-> getEnvJ var = processRequestJ (GetEnv var) >>=
->       (\resp -> case resp of
->               Str l -> val l
->               Failure (SearchError estr) -> 
->                       raise ("Error in getEnvJ: " ++ estr))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{getArgsJ}
-Return command-line arguments.  Returns [] when used from the interpreter.
-\begin{vb}
-
-
-
-> getArgsJ :: Job s s [String]
-> getArgsJ = processRequestJ GetArgs >>=
->       (\resp -> case resp of
->               StrList ll -> val ll)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{getProgNameJ}
-Reurn program name.  Returns "" when used from the interpreter.
-\begin{vb}
-
-> getProgNameJ :: Job s s String
-> getProgNameJ = processRequestJ GetProgName >>=
->       (\resp -> case resp of
->               Str l   -> val l
->               Failure (OtherError l) -> val "")
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\sectionH{Some higher level functions operating on state}
-
-\sectionHH{A dynamic `state stack'}
-\label{sec-StateStack}
-Some functions, inspired by Simon Thompson's work, to allow stacking
-of state values.  Values in the 'state stack' can be of differing types.
-
-Note that we have:
-\begin{vb}
-
-        pushState s `bindJob` (\_ -> popState) == unitJob s
-
-\end{verbatim}\end{vb}
-The stack is in fact implemented by nested 2-tuples, so that, for example,
-\newline \verb@pushState 1 >>> pushState 2.0 >>> pusState "Fred"@ has type
-\newline \verb@Task s ([Char],(Float,(Int,s)))@.
-
-\begin{Def}{pushState,etc}~~\begin{vb}
-
-> pushState :: st -> Job s (st,s) ()
-> pushState st = getState `bindJob` (\s ->
->                setState (st,s))
-
-> popState :: Job (st,s) s st
-> popState = getState `bindJob` (\(st,s) ->
->            setState s `bindJob` (\_-> unitJob st))
-
-> getTopState :: Job (st,s) (st,s) st
-> getTopState = getState `bindJob` (unitJob . fst)
-
-> setTopState :: st2 -> Job (st1,s) (st2,s) ()
-> setTopState st2 = popState `bindJob` (\_ -> pushState st2)
-
-\end{verbatim}\end{vb}\end{Def}
-
-The point of these functions is that they provide a form of dynamic
-scoping of state, whilst being fully visible to the type
-system\footnote{expect this could be said better, or even
-correctly...}.  Thus, a package may create and use 
-state internally whilst remaining transparent to any state used by the
-calling program; the package will have type \verb@Job s s a@.
-
-\sectionHH{SJob and STask}
-
-[NOT YET FULLY WORKED OUT]
-
-It seems desirable to write programs in units which conform to the
-above conventions --- ie, which at worst modify the top of
-the state stack, but are transparent to any other state in the stack.
-
-The types \verb@SJob@ and \verb@STask@ enforce the above,
-providing the first parameter remains un-instantiated.
-
-\begin{vb}
-
-> type SJob s t1 t2 a = Job (t1,s) (t2,s) a
-> type STask s t1 t2 = SJob s t1 t2 ()
-
-\end{verbatim}\end{vb}
-
-Thus, a function of type \verb@STask s T1 T2@ expects to find state
-of type \verb@T1@ on top of the state stack, and may transform it
-to type \verb@T2@, but neither reads, nor modifies the remainder of the 
-rest of the state stack. 
-
-Here is a very silly example --- one would never use state for 
-such programming in the small.
-
-\begin{vb}
-
-> greet_ :: STask s t t
-> greet_ 
->    = putLine "Hello, who's there?" >>>
->      pushState "Ian" >>    
->      greetme_ >>>
->      popState >>= (\name -> putLine ("Oh, hi " ++ name))
-
-> greetme_ :: STask s String String
-> greetme_ 
->    = getTopState >>= (\name->
->      putLine ("Hi " ++ name ++ ", it's only me")) >>
->      setTopState "John" 
-
-\end{verbatim}\end{vb}
-
-Evaluating \verb@go greet_@ produces,
-
-\begin{vb}
-
-Hello, who's there?
-Hi Ian, it's only me
-Oh, hi John
-
-\end{verbatim}\end{vb}
-Security is gained, since type errors will be generated if any
-of the push/pops are not balanced and of appropriate type.
-
-Ideally, we would like to {\em enforce\/} this style by making
-\verb@SJob@ fully abstract, and disallowing use of \verb@getState@
-and \verb@setState@,  but this is still TO-DO.
-
-\sectionHH{Mutate state by a given function}
-
-\begin{Def}{applyToState,applyToTopState}~~\begin{vb}
-        
-> applyToState :: (s1->s2) -> Task s1 s2
-> applyToState sf = getState `bindJob` (setState . sf)
-
-> applyToTopState :: (t1->t2) -> STask s t1 t2
-> applyToTopState sf = getTopState `bindJob` (setTopState . sf)
-
-\end{verbatim}\end{vb}\end{Def}
-
-}
-\EndFile
-
diff --git a/ghc/tests/programs/ipoole_spec_class/JobImp.lhs b/ghc/tests/programs/ipoole_spec_class/JobImp.lhs
deleted file mode 100644 (file)
index 3ea804a..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-\input{LiterateUtils}
-{
-\DownLevel
-
-\filetitle{JobImp.lgs --- I/O monad with state}
-
-% SCCS: %W% %G%
-% MODIFICATIONS
-% =============
-% 15-01-94     ipoole         IO --> Io  (to keep ghc happy)
-% 06-01-94     ipoole  added performJob (type sig. only)
-
-\author{Ian Poole (editor), Andy Gordon and Andy Gill}
-\maybemaketitle
-\iftopdocument{\tableofcontents}
-\begin{vb}
-
-> module JobImp where
-> import Io
-> infixl 1 `bindJob` 
-> infixl 1 `bindJobh`
-
-\end{verbatim}\end{vb}
-\sectionH{Introduction}
-
-Here we implement a monad which can carry application defined state.
-Facilities for character-by-character reading of stdin are also 
-implemented here.
-
-A value of type Job s1 s2 a is understood to potentially perform I/O
-returning a result of type a and transforming its internal state to
-type s2.  Both the I/O, the result and the final state may depend
-on the input state.
-
-Note that the typing of a particular Job tells us quite alot.
-In the following table, ``Type'' is a values most general type.
-\verb@S@ is some concrete application-specific type.
-
-\begin{tabular}{ll}
-        Type    &       Properties \\~~\\
-
-        Job s s a       & can neither modify nor read the application state \\
-        Job s S a       & the state is overwritten but never read\\
-        Job S S a       & state is read and modified\\
-\end{tabular}
-\footnote{Unfortunately, a Job which only reads the state 
-has type \verb@Job S S a@,
-not \verb@Job S s a@ as one might at first think}.
-Note that a Job which is defined in terms of other Jobs, inherits
-the most general type which which is able to include all the nested Jobs.
-
-The implementation is presented here, for brevity, as a single layer,
-on top of the basic \verb@IO@ monad.  In fact several layers could be
-made explicit as follows:
-
-\begin{vb}
-
-    type IOS s1 s2 a = s1 -> IO (a,s2)    -- IO monad with state
-    type IOSE s1 s2 a = IOS s1 s2 (E a)    -- ... with exceptions
-    type Job s1 s2 a = IOSE (s1,[Char]) (s2,[Char]) a  -- with stdin stream
-
-\end{verbatim}\end{vb}
-
-\sectionH{The \protect\verb@Job@ monad}
-
-\begin{Dec}{Job} The state monad, parameterised by initial state type 
-(\verb@s1@), final state type (\verb@s2@), and result type, (\verb@a@).
-\begin{vb}
-
-> type Job s1 s2 a = (s1, MS) -> Io (E a, (s2, MS)) 
-
-#ifdef Gofer   -- (Gofer doesn't run cpp, so will ignore this!)
-
->              in
->              unitJob, bindJob, bindJobh,
->              handle,
->              setState, getState,
->              getChar, getRest,
->              ungetChar, ungetStr,
->              iOtoJob, jobtoIo,
->              raise, handle
-
-#endif
-
-> data E a = Ret a | Fail Exn
-> type Exn = String
-
-\end{verbatim}\end{vb}\end{Dec}
-
-\begin{Dec}{MS}
-
-Type MS holds any fixed-type state we want always (and invisibly)
-to carry in the Job monad.   
-At present, we carry only the input stream, but we'll make
-it abstract so that other things can easily be added if desired.
-\begin{vb}
-
-> type MS = String 
-
-#ifdef Gofer
-
->           in getinputMS, setinputMS, initMS
-
-#endif
-
-> initMS :: MS
-> initMS = []
-> getinputMS :: MS -> String
-> getinputMS ms = ms
-> setinputMS :: MS -> String -> MS
-> setinputMS ms inp = inp
-
-\end{verbatim}\end{vb}\end{Dec}
-
-
-\sectionH{Basic combinators}
-
-\begin{Def}{unitJob}
-
-Return a value without I/O.
-
-\begin{vb}
-
-> unitJob :: a -> Job s s a    
-> unitJob a = \ss -> unitIo (Ret a ,ss)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{bindJob}
-
-Connect a Job to a continuation.  Notice the chaining of the state types.
-Note that if the first Job generates a failure, then the application
-state becomes undefined, since there is no way we can then obtain
-state of type s3.
-
-\begin{vb}
-
-
-> bindJob :: Job s1 s2 a -> (a -> Job s2 s3 b) -> Job s1 s3 b
-> bindJob m k (s1, ms) =
->       m (s1, ms)             `bindIo` \ (a,(s3, ms3)) ->
->       case a of
->       Ret v -> k v (s3, ms3)
->       Fail str -> unitIo (Fail str, (nostate, ms3))
->           where
->               nostate = error "State not defined due to failure"
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-Because of the above noted problem with raising exceptions,  we provide
-a variant of \verb@bindJob@ which does not allow its right-hand argument to 
-modify the state type. Thus we are able to perform the error
-continuation with the state as it was before the failure was raised.  
-Programs should use this function whenever possible, ie, 
-when binding to a Job which does
-not change the state type.
-
-\begin{Def}{bindJobh} ~~ \begin{vb}
-
-
-> bindJobh :: Job s1 s2 a -> (a -> Job s2 s2 b) -> Job s1 s2 b
-> bindJobh m k (s1, ms) =
->       m (s1, ms)             `bindIo` \ (a,(s2, ms2)) ->
->       case a of
->       Ret v -> k v (s2, ms2)
->       Fail str -> unitIo (Fail str, (s2, ms2))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{doneJ}
-
-Terminate the program.
-
-\begin{vb}
-
-> doneJ :: Job s s a
-> doneJ = iOtoJob (doneIo)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{raise}
-
-Raise an exception which can later be trapped by \verb@handle@.
-\begin{vb}
-
-> raise :: Exn -> Job s s a
-> raise exn ss = unitIo (Fail exn, ss)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{handle}~~\begin{vb}
-
-> handle :: Job s s a -> (Exn -> Job s s a) -> Job s s a
-> handle p h ss
->       = p ss `bindIo` (\(a, ss2) ->
->         case a of
->         Ret v -> unitIo (a, ss2)
->         Fail str -> h str ss2)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\sectionH{Access to application specific state}
-
-\begin{Def}{setState}
-Overwrite state, potentially changing its type.
-
-\begin{vb}
-
-> setState :: s2 -> Job s1 s2 ()      
-> setState s2 = \(_,ms) -> unitIo (Ret (),(s2,ms))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{getState}
-
-Return state as result.
-
-\begin{vb}
-
-> getState :: Job s s s 
-> getState = \(s,ms) -> unitIo (Ret s,(s,ms))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\sectionH{Reading from stdin}
-
-\begin{Def}{getChar}.
-Read a single character from stdin.  This is done by reading from the string 
-that we carry around in the \verb@MS@ data.  If there is no more data
-to be read, an exception is raised.
-\begin{vb}
-
-> getChar :: Job s s Char
-> getChar = \(s,ms) -> 
->               case (getinputMS ms) of
->               [] -> unitIo (Fail "Attempt to read past end of stdin", (s,ms))
->               (x:xs) ->  unitIo (Ret x, (s, setinputMS ms xs))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\begin{Def}{getRest}
-Read (lazily) all remaining characters from stdin.
-\begin{vb}
-
-> getRest :: Job s s String
-> getRest = \(s,ms) -> unitIo (Ret (getinputMS ms), (s, setinputMS ms []))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{ungetChar}
-Place a character onto the input stream, so that it will be read next.
-\begin{vb}
-
-> ungetChar :: Char -> Job s s ()
-> ungetChar c = \(s,ms) -> 
->           unitIo (Ret (), (s, setinputMS ms (c:getinputMS ms)))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{ungetStr}
-Place a string onto the input stream, so that it will be read next.
-\begin{vb}
-
-> ungetStr :: String -> Job s s ()
-> ungetStr str = \(s,ms) -> 
->           unitIo (Ret (), (s, setinputMS ms (str++(getinputMS ms))))
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-\sectionH{Conversions}
-
-\begin{Def}{iOtoJob}
-Conversion to allow access to facilities of the basic Io monad.
-
-\begin{vb}
-
-> iOtoJob :: Io a -> Job s s a         
-> iOtoJob m = \ss ->                   
->       m               `bindIo` \v ->
->       unitIo (Ret v,ss)
-
-\end{verbatim}\end{vb}\end{Def}
-\begin{Def}{jobtoIo}
-
-Conversion to allow a Job to be run as an Io.
-
-\begin{vb}
-
-> jobtoIo :: s1 -> MS -> Job s1 s2 a -> Io a  -- strip out state so we can run
-> jobtoIo s1 ms m =
->       m (s1, ms)           `bindIo` \ (a,_) ->
->       case a of
->       Ret v -> unitIo v
->       Fail str -> error ("iOtoJob:  Failed with: " ++ str)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{processRequestJ}
-
-Perform a Haskell \verb@Request->Response@ interaction.
-\begin{vb}
-
-> processRequestJ :: Request -> Job s s Response
-> processRequestJ req = iOtoJob (processRequestIo req)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{go}
-
-Execute a Job as a Haskell Dialogue.  Note that we must first
-(lazily) read input from stdin so that we can then allow 
-character-by-character reading.
-
-\begin{vb}
-
-> go :: Job s1 s2 a -> Dialogue
-> go t = ioToDialogue (processRequestIo (ReadChan stdin) `bindIo` (\resp ->
->         case resp of
->               Str inp-> let nostate = error "Application state not set"
->                         in jobtoIo nostate (setinputMS initMS inp) t
->               Failure (SearchError estr) -> 
->                       error ("Search error by ReadChan in goS: " ++ estr) 
->               Failure err -> 
->                       error ("Error by readChan in goS")))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{performJob}
-This is an UNSAFE function to perform a job and return (as a simple value)
-the result.   If the job has any observable side-effects then the behvior
-will be unpredictable.  
-
-Having said all that, I don't think it can be implemented under our
-definition of the I/O monad!   It is provided here simply to make it possible
-for jobs to be defined implicitly, in terms of an abstraction which
-is assumed RT.
-
-> performJob :: Job s s a -> a
-> performJob = error "performJob: not implemented!"
-
-\end{verbatim}\end{vb}\end{Def}
-}
-\EndFile
diff --git a/ghc/tests/programs/ipoole_spec_class/Lib.lhs b/ghc/tests/programs/ipoole_spec_class/Lib.lhs
deleted file mode 100644 (file)
index fc81f00..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-%\documentstyle[a4wIde,11pt]{report}
-%\begin{document}
-%\section{Lib.lgs --- Some miscellaneous functions}
-
-%\begin{verbatim}
-
-> module Lib where
-> import Char(isDigit) -- 1.3
-> import GoferPreludeBits
-
-% 
-%               Copyright (C) 1993  Medical Research Council
-%
-% SCCS: %W% %G%
-%
-%  MODIFICATIONS
-%  ----------
-% 18-01-94      ipoole  added toDouble
-% 08-11-93      ipoole  added toFloat
-% 08-11-93       derekc  added Coord2
-% 04-08-93      ipoole  now compiles with hbc and ghc-0.16.  added seq etc
-% 18-08-93      ipoole  appended mrclib.lgs
-% 09-06-93      ipoole  fixed strToFloat "0.0" bug
-% 11-03-93       derekc  added position, occurences, strToFloat, isDecimalFracn
-% 11-03-93       derekc  strToInt, isNat, isInt <- IOapp.lgs,
-%                       trace -> IOapp.lgs
-% 02-03-93       derekc  newStyleIdentifiersUsed, put under sccs
-% 23-02-03      ipoole  deleted strToInt
-% 14-02-93      ipoole  now no need for sqrt or truncate (use iSqrt)
-% 08-11-92       ipoole  type coord moved in from mrclib, and added to
-% 07-11-92       ipoole  added map2, numVal
-
-%\end{verbatim}
-
-
-\subsection{Miranda equivalents}
-%------------------------------------------------------------------------------
-
-\begin{Def}{hd, tail, map2, numVal}
-These definitions are included to make the conversion of Miranda programs
-into Gofer just a little easier. In general, prefer the Gofer forms.
-\begin{vb}
-
-> hd = head
-> tl = tail
-> map2 = zipWith
-> numVal = strToInt    -- NB capitalised to meet SADLI coding standard
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\subsection{Standard Numerical Functions}
-%------------------------------------------------------------------------------
-
-\begin{Def}{absolute}~~\begin{vb}
-
-> absolute :: Float -> Float
-> absolute f | f < 0.0   = (-f)
->            | otherwise = f
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{strToFloat} 
-A first attempt at converting strings to Floats. This cannot cope with
-scientific notation, more than 10 significant digits or more than 9 decimal
-places.  
-\begin{vb}
-
-> strToFloat :: String -> Float
-> strToFloat "" = error "strToFloat (Null)"
-> strToFloat str
->    | isDecimalFraction str = valAsInt / fromInt (10 ^ decimalPlaces str)
->    | otherwise             = error ("strToFloat: " ++ str)
->      where
->                valAsInt
->            | sigDigits str' >10 = error "strToFloat: >10 significant digits!"
->            | otherwise          = fromInt (strToInt str') :: Float
->         str'            =  filter (/='.') str
->        sigDigits "0" = 1
->         sigDigits (ch:chs) | elem ch ['1'..'9'] =  1 + length chs
->                            | otherwise          =  sigDigits chs
->        decimalPlaces str 
->            | pos  < 0   =  0
->           | decs > 9   =  error "strToFloat: >9 decimal places!"
->            | otherwise  =  decs
->         decs            =  length str - pos - 1
->         pos             =  position '.' str
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{strToInt}
-Turn a string containing only digits plus (optionally) leading spaces and 
-minuses into an integer.
-\begin{vb}
-
-> strToInt :: String -> Int
-> strToInt "" = error "strToInt (Null)"
-> strToInt (' ':xs) = strToInt xs
-> strToInt ('-':xs) = (negate . strToInt) xs
-> strToInt xs
->              = loop 0 xs where
->           loop n [] = n
->           loop n (' ':xs) = n
->           loop n (x:xs) | isDigit x = loop (10*n+(fromEnum x - fromEnum '0')) xs
->                                | otherwise = error ("strToInt: " ++ xs)
-
-> toFloat :: Real a => a -> Float
-> toFloat = fromRational . toRational
-
-> toDouble :: Real a => a -> Double
-> toDouble = fromRational . toRational
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{isInt}~~\begin{vb}
-
-> isInt :: String -> Bool
-> isInt [] = False
-> isInt ('-':l) = isNat l
-> isInt l = isNat l
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{isNat}~~\begin{vb}
-
-> isNat :: String -> Bool
-> isNat [] = False
-> isNat l = all isDigit l
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{isDecimalFraction}~~\begin{vb}
-
-> isDecimalFraction :: String -> Bool
-> isDecimalFraction [] = False
-> isDecimalFraction str = isInt str' && ((occurences '.' str) <= 1)
->   where str' = filter (/='.') str
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{iSqrt}~~\begin{vb}
-
-> iSqrt :: Int -> Int
-> iSqrt = truncate . (+ 0.5) . sqrt . fromInt
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{hugenum}~~\begin{vb}
-
-> hugenum = 2147483647::Int  -- largest integer
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-\subsection{Other general functions}
-%------------------------------------------------------------------------------
-
-\begin{Def}{tupled}~~\begin{vb}
-
-> tupled :: (a -> b) -> (a, a) -> (b, b)
-> tupled f (x, y) = (f x, f y)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{occurences}~~\begin{vb}
-
-> occurences :: Eq a => a -> [a] -> Int
-> occurences a [] = 0
-> occurences a (a':as) 
->           | a == a'   =  1 + occurences a as
->           | otherwise =      occurences a as
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{position} 
-Return the index of the given element in the list, or (-1)
-if it is not present.
-\begin{vb}
-
-> position :: Eq a => a -> [a] -> Int
-> position a as = posit 0 a as
->    where
->       posit n a [] = -1
->       posit n a (a':as)  | a==a'     =  n
->                          | otherwise =  posit (n+1) a as
-
-\end{verbatim}\end{vb}\end{Def}
-
-\subsection{Type Coord}
-%------------------------------------------------------------------------------
-
-\begin{Def}{Coord}~~\begin{vb}
-
-> type Coord  = (Int,Int)
-> type Coord2 = Coord
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{sqDistance}~~\begin{vb}
-
-> sqDistance (x1,y1) (x2,y2) = (x1-x2)^2 + (y1-y2)^2
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{scaleCoord}~~\begin{vb}
-
-> scaleCoord :: Float -> Coord -> Coord
-> scaleCoord s (x,y) = (round ((fromInt x) * s),
->                        round ((fromInt y) * s))
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{addCoord}~~\begin{vb}
-
-> addCoord (x1,y1) (x2, y2) = (x1+x2, y1+y2)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{subCoord}~~\begin{vb}
-
-> subCoord (x1,y1) (x2, y2) = (x1-x2, y1-y2)
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{relativeTo}~~\begin{vb}
-
-> relativeTo (x',y') (x,y) = (x - x', y - y')
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{inside}
-Is a point inside the rectangle with the given boxCorners?
-\begin{vb}
-
-> inside :: Coord -> (Coord,Coord) -> Bool        
-> (x,y) `inside` ((blx,bly),(trx,try)) =
->           (blx <= x) && (x <= trx)  &&  (bly <= y) && (y <= try)
-
-\end{verbatim}\end{vb}\end{Def}
-
-#ifndef __GLASGOW_HASKELL__
-
-\begin{Dec}{Coords are Nums}
-Tuples are already members of Text, so nothing is needed to implement
-Coord as a member of text (I think). But
-let's make Coord an instance of class Num, in part at least:
-\begin{vb}
-
-> instance (Num a, Num b) => Num (a,b) where
->       (+) = addCoord
->       (-) = subCoord
->       negate (x,y) = (-x,-y)
-> --    abs (x,y) = (abs x, abs y)            
-> --    signum (x,y) = (signum x, signum y)
-
-\end{verbatim}\end{vb}\end{Dec}
-
-\begin{Def}{Coord3}
-Coord3 will similarly come in handy:
-\begin{vb}
-
-> type Coord3 = (Int, Int, Int)
-
-> instance (Num a, Num b, Num c) => Num (a,b,c) where
->       (x1,y1,z1) + (x2,y2,z2) = (x1+x2, y1+y2, z1+z2)
->       (x1,y1,z1) - (x2,y2,z2) = (x1-x2, y1-y2, z1-z2)
->       negate (x,y,z) = (-x,-y,-z)
-> --    abs (x,y,z) = (abs x, abs y, abs z)            
-> --    signum (x,y,z) = (signum x, signum y, signum z)
-
-\end{verbatim}\end{vb}\end{Def}
-
-#endif __GLASGOW_HASKELL__
-
-% Here to end was mrclib.lgs
-
-
-\begin{Def}{sortBy} accepts a function and a list, and returns the list
-ordered (ascending) according to the given function.  It can thus be used
-on lists of structured types for which the \verb@'<'@ operator is not
-valid, e.g. 
-\begin{vb}
-
-               sortBy fst [(4,"Fred"), (2,"Bert"), (6,"Gill")]
-                      --> [(2,"Bert"), (4,"Fred"), (6,"Gill")]
-
-> sortBy :: Ord b => (a->b) -> [a] -> [a]
-> sortBy v [] = []
-> sortBy v (a:x) 
->       = (sortBy v left) ++ [a] ++ (sortBy v right)
->         where
->         left  = [b | b <- x, (v b) <= va ]
->         right = [b | b <- x, (v b)  > va ]
->         va = v a
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{maxBy} returns the the element in the given list which yields the 
-greatest value under the given function.
-\begin{vb}
-
-> maxBy :: Ord b => (a->b) -> [a] -> a
-> maxBy f = foldl1 max2by
->               where max2by a b | (f a) >= (f b)  = a
->                                | otherwise       = b
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{minBy} similar to \verb@maxBy@
-\begin{vb}
-
-> minBy :: Ord b => (a->b) -> [a] -> a
-> minBy f = foldl1 min2By
->               where min2By a b | (f a) <= (f b) = a
->                                | otherwise      = b
-
-\begin{Def}{readTable} 
-converts a text table of numbers (eg from a `feature file').
-into [[Int]]
-\begin{vb}
-
-> readTable:: String -> [[Int]]
-> readTable = map (map strToInt) . map words . lines
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{writeTable} the converse of readTable.
-\begin{vb}
-
-> writeTable:: Show{-was:Text-} a => [[a]] -> String
-> writeTable = unlines . map unwords . (map . map) show
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{writeTableN} like readTable, but number each line.
-\begin{vb}
-
-> writeTableN:: Show{-was:Text-} a => [[a]] -> String
-> writeTableN = layn . map unwords . (map . map) show
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{plotSurface} 
-invokes the program ``surface'' to plot a 2--D surface via 
-stoX. The \verb@switches@ parameter will be passed to ``surface'' 
-(see "man l surface") and for a first try can be "".
-\begin{vb}
-
-> plotSurface :: String -> [[Int]] -> FailCont -> SuccCont -> Dialogue
-> plotSurface switches table fail succ =
->   writeFile "surfacedata" surfData fail
->     (writeFile "plotsurf" surfCommand fail succ)
->     where
->       surfData = "Plotsurface" ++ "\n" ++
->                  show yLen ++ " " ++ show xLen ++ "\n" ++
->                  writeTable table
->       surfCommand = "cat surfacedata | surface " ++ switches ++ " | stoX\n"
->       xLen = length (table!!0)
->       yLen = length table
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{quadSolve} 
-solve the quadratic equation $a x^2 + b x + c = 0$ for $x$, if
-possible.  Both solutions are returned, in ascending order.  
-Deals sensibly with $a=0$.
-\begin{vb}
-
-> quadSolve :: Float -> Float -> Float -> (Float, Float)
-> quadSolve a b c
->    | a /= 0.0 && s1 > s2   =  (s1, s2)
->    | a /= 0.0 && s1 <= s2  =  (s2, s1) 
->    | otherwise           =  (-c/b, -c/b) 
->    where
->       s1 = (-b + root) / (2.0 * a)
->       s2 = (-b - root) / (2.0 * a)
->       bs4ac = b*b - 4.0*a*c
->       root | bs4ac >= 0.0  =  {-sqrt-} bs4ac 
->            | otherwise    
->                 = error ("quadSolve " ++ show [a,b,c] ++ " - no solution!") 
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{number}
-Here is a utility to check that a number is a (non negative) number.
-\begin{vb}
-
-> number :: String -> Bool
-> number [] = False
-> number [a] = isDigit a
-> number (a:l) = isDigit a && (number l)
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-\sectionHH{Some strict functions}
-
-#ifdef Gofer
-
-\begin{vb}
-
-> seq :: a -> b -> b
-> seq a b = strict (const b) a
-
-> hyperSeq :: [a] -> b -> b
-> hyperSeq as b = foldr seq b as
-
-> hyperStrict :: ([a] -> b) -> ([a] -> b)
-> hyperStrict f x = hyperSeq x (f x)
-
-\end{verbatim}\end{vb}
-
-#endif
-
-%\end{document}
diff --git a/ghc/tests/programs/ipoole_spec_class/Lognum.lhs b/ghc/tests/programs/ipoole_spec_class/Lognum.lhs
deleted file mode 100644 (file)
index 3335e10..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-MODIFICATIONS
--------------
-07-04-94   ipoole  added pi method for Lognum
-
-SCCS: %W% %G%
-
-A packeage for log representations of numbers.
-
-> module Lognum where
-> import Lib
-
-> data Lognum = LN Double
-
-> instance Num Lognum where
->      LN x * LN y = LN (x+y)
->      LN x + LN y = LN (d+(mylog 1 (exp (x-d) + exp (y-d))))
->                    where d = max x y
->      LN x - LN y = if y > x then error "subtract LN" else
->                   LN (d+(mylog 2 (exp (x-d) - exp (y-d))))
->                    where d = x
->      fromInteger 0 = LN (-1.0e99)
->      fromInteger x = LN (mylog 3 (fromInteger x))
-
-> instance Ord Lognum where
->      LN x > LN y = x > y
->       a <= b = not  (a > b)
-
-> instance Eq Lognum where
->      LN x == LN y = x == y
-
-> instance Floating Lognum where
->      sqrt (LN x) = LN (x/2.0)
->      (LN x) ** (LN y) = (LN (x * exp y))
->       pi = (LN (log pi))
-
-> instance Fractional Lognum where
->      LN x / LN y = LN (x-y)
->      fromRational x = if x == toRational 0.0 then fromInteger 0 
->                       else LN (mylog 4 (toDouble x))
-
-
-> instance Enum Lognum where
->    enumFrom n       = iterate ((fromRational 1.0)+) n
->    enumFromThen n m = iterate ((m-n)+) n
-
-
-> instance Real Lognum where
->      toRational (LN x) = toRational (exp x)
-
-> toLognum :: Real a => a -> Lognum
-> toLognum = fromRational . toRational
-
-> instance RealFloat Lognum
-
-> instance RealFrac Lognum
-
-> instance Show{-was:Text-} Lognum 
-
-> mylog :: Int -> Double -> Double
-> mylog n x = if toDouble x < 0.0 then error ("mylog" ++ show n) else log x
-
-
-
diff --git a/ghc/tests/programs/ipoole_spec_class/Main.lhs b/ghc/tests/programs/ipoole_spec_class/Main.lhs
deleted file mode 100644 (file)
index f588424..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-\input{LiterateUtils}
-{
-\DownLevel
-\author{Ian Poole}
-\filetitle{Specimen classification (Animation)}
-\maybemaketitle
-\noindent{\verb{!%W% %G%!}
-\begin{vb}
-
-> module Main (main) where
-> import GoferPreludeBits
-> import Io
-> import Lib
-> import JobImp
-> import JobApp
-> import Lognum
-
-
-\end{verbatim}\end{vb}
-
-Here we give the Gofer specification of the Cytoline/ILDAS
-specimen classifier.  This is based on the
-description given in appendix C of the software requirements
-specification.  Note however that the scheme here
-is modified to admit that even normal specimens contain 
-abnormal objects.   Thus, beta distributions are allowed
-for both the normal and abnormal specimens.
-
-
-The purpose of the specimen classifier is to integrate all 
-evidence from the low and high resolution passes (and in
-Cytoline, from interactive review), to deliver a decision
-for the slide:
-\footnote{We will consistently adopt the order Abnormal, Normal
- Leukocyte, Junk for object classes, which we
-will abbreviate to {\tt A, N, L, J}, and Abnormal, Normal for
-specimen classifications, which we will abbreviate as {\tt Abn, Nrm}}
-
-\begin{Dec}{SpecDecision}
-The specimen level decision.
-\begin{vb}
-
-> data SpecDecision = SignOut | Review
-
-\end{verbatim}\end{vb}\end{Dec}
-
-
-\sectionH{Specimen level evidence}
-
-\begin{Dec}{SpecEvidence}
-We assume that all evidence is expressed as likelihoods of observed
-features given each the four object classes, Normal, Abnormal, Leukocyte,
-Junk.  A posterior probability is assumed to exist for every object seen,
-based (only) on the most refined evidence available.
-\begin{vb}
-
-> type Prob = Double
-> type SpecEvidence = [(Int, ObjProbVec)]
-> type ObjProbVec = (Prob, Prob, Prob, Prob)
-
-\end{verbatim}\end{vb}\end{Dec}
-
-
-\begin{Def}{composeEvidence}
-
-Extract object level evidence from the low and high resolution
-target structures.   The evidence those objects which were not rescaned
-is fabricated by replicating the mean PP within the object class, 
-according to the count in that object class.
-\begin{vb}
-
-> type TargetList =  ()
-> type TargetRecord = ()
-
-> composeEvidence :: TargetList -> TargetList -> SpecEvidence
-> composeEvidence high low
->       = extractEvidence low ++ extractEvidence high
->       where
->       extractEvidence ts
->               = [(1, getPPs t) | t <- ts] ++ 
->                 [(countA', meanPPA),
->                  (countN, meanPPN),
->                  (countL, meanPPL),
->                  (countJ, meanPPJ)]
->                  
->                 where
->                        countA' = countA - length ts  -- avoid double count
-
-The extraction functions should come from the TargetList ADT,
-but we leave this as yet unresolved.
-
->                        getPPs :: TargetRecord -> ObjProbVec
->                        getPPs = undefined
->                        (ts,
->                         countA, countN, countL, countJ,
->                         meanPPA, meanPPN, meanPPL, meanPPJ)
->                              = extractFromStruct ts
->                        extractFromStruct ts = undefined
->       
-
-\end{verbatim}\end{vb}\end{Def}
-
-\sectionH{Specimen level model}
-
-\begin{Dec}{SpecModel}
-It is assumed that the following model parameters are known:
-\begin{itemize}
-\item {\tt specPriorSM}      --- Prior probability for specimen classification 
-\item {\tt objProportionsSM} --- Mean proportions of objects, by class, on normal and
-      abnormal specimens.
-\item {\tt cvAbnObjSM}       --- Coefficient of variation in proportion of abnormal cells 
-      on normal and abnormal specimens.
-\item {\tt fnrSM}            --- Acceptable false negative rate.
-\end{itemize}
-There is facility to read parameters from a file.
-\begin{vb}
-
-> type SpecModel = SpecModelImp 
-
-#ifdef Gofer
-
->      in
->      specPriorSM, abnPropsSM, qLqJSM, cvAbnObjSM, betaParamsSM, fnrSM,
->      calibFuncSM, readSpecModelSM, testSpecModelSM
-
-#endif Gofer
-
-> specPriorSM      :: SpecModel -> (Double, Double)
-> abnPropsSM       :: SpecModel -> (Double, Double)
-> qLqJSM           :: SpecModel -> (Double, Double)
-> cvAbnObjSM       :: SpecModel -> (Double, Double)
-> betaParamsSM     :: SpecModel -> (BetaParams, BetaParams)
-> fnrSM            :: SpecModel -> Double
-> calibFuncSM      :: SpecModel -> (Double -> Double)
-> readSpecModelSM  :: FileName  -> Job s s SpecModel
-> testSpecModelSM  :: SpecModel
-> 
-> type FileName = String
-> type BetaParams = (Double, Double, Lognum)
-
-> type SpecModelImp = ((Double, Double), (Double, Double), (Double, Double),
->                      (Double, Double), (BetaParams, BetaParams), Double)
->                        
-> readSpecModelSM = undefined
-
-> specPriorSM (a,b,c,d,e,f)      = a
-> abnPropsSM (a,b,c,d,e,f)       = b
-> qLqJSM (a,b,c,d,e,f)        = c
-> cvAbnObjSM (a,b,c,d,e,f)       = d
-> betaParamsSM (a,b,c,d,e,f)     = e
-> fnrSM (a,b,c,d,e,f)            = f
-> calibFuncSM (a,b,c,d,e,f) = id
-
-> calcBetaParams :: SpecModel -> (BetaParams, BetaParams)
-> calcBetaParams sm
->      = (betaAbn, betaNrm)
->        where
->            betaAbn = cv qAbnA cvAbn
->            betaNrm = cv qNrmA cvNrm
->            (qAbnA, qNrmA) = abnPropsSM sm
->            (cvAbn, cvNrm) = cvAbnObjSM sm
-
-> betaAbnDist sm  = beta p 
->      where
->      (_,p) = betaParamsSM sm
-
-
-
-\end{verbatim}\end{vb}\end{Dec}
-
-
-\sectionH{Specimen classifier decision}
-
-\begin{Def}{SpecClassifier}
-Make a Sign-out / Review decision on the basis of evidence
-from all objects seen.   The decision is a simple threshold
---- is the predicted false negative rate (fnr) acceptable
-in the light of the posterior probability of abnormality
-and specimen prior?
-
-\begin{vb}
-
-> type SpecClass a = (a,a) -> a
-> classAbn = fst
-> classNrm = snd
-
-> specClassifier :: SpecModel -> SpecEvidence -> SpecDecision
-> specClassifier sm evidence
->
->       = if (truePostProb / pAbn) < fnr then
->               SignOut
->         else
->               Review
->
->       where
->            truePostProb = calibFunc (pAbnGvnEv sm evidence)
->            (pAbn, _) = specPriorSM sm
->            calibFunc = calibFuncSM sm
->            fnr       = fnrSM sm
-
-\end{verbatim}\end{vb}\end{Def}
-
-\sectionH{Specimen posterior probability}
-
-\begin{Def}{pAbnGvnEv}
-Compute the posterior probability $P(S=\mbox{Abn} | {\bf x})$.
-\begin{vb}
-
-> type LikelyHood = Prob
-> type LikeVec = [LikelyHood]
-
-> pAbnGvnEv :: SpecModel -> SpecEvidence -> Prob
-> pAbnGvnEv sm evidence  
->
->           = toDouble (
->             (pEvGvnAbn * pAbnL) / 
->             (pEvGvnAbn * pAbnL + pEvGvnNrm * pNrmL)) -- Bayes theorem
-
->       where
->          pEvGvnAbn = lklf sm betaAbn likelihoods
->          pEvGvnNrm = lklf sm betaNrm likelihoods
-
-Convert the evidence, which is in the  form of posterior probably vectors
-on objects, into likelyhood vectors on objects.
-
->          likelihoods :: SpecEvidence
->          likelihoods = [(c,bayes ppvec) | (c,ppvec) <- evidence]
->                     where
->                     bayes (ppA,ppN,ppL,ppJ) =
->                               (ppA/pA, ppN/pN, ppL/pL, ppJ/pJ)
-   
-Form the marginal object priors from the specimen-conditional priors.
-
->
->          pA = let it = qAbnA * pAbn + qNrmA * pNrm in it
->          pN = let it = 1.0 - (pA + pL + pJ) in it
-
-Extract model parameters.
-
->         (pAbnL, pNrmL) = (toLognum pAbn, toLognum pNrm)
->          (pAbn, pNrm)                 = specPriorSM sm
->         (pL, pJ)                     = qLqJSM sm
->          (betaAbn, betaNrm)           = let it = betaParamsSM sm in it
->          (qAbnA, qNrmA)              = abnPropsSM sm
-
-\end{verbatim}\end{vb}\end{Def}
-
-\begin{Def}{lklf}
-Computes the likelyhood $p({\bf x} | S=s)$. The specimen class, $s$,
-(Normal or Abnormal) is passed by the within
-specimen class objectPriors ({\tt priors}) and coefficient of
-variation of abnormal objects {\tt v}).   ${\bf x}$, representing
-feature data for all observed objects, is passed as the list
-of likelyhood vectors for for each object.  In fact, these likelihoods
-are are required only to proportionality.
-\begin{vb}
-
-> lklf :: SpecModel -> BetaParams -> SpecEvidence -> Lognum
-> lklf sm betaParams evi =
->      integratePowN 6 (fromRational 0.000001, fromRational 0.999) 
->          (\ r ->
->              let r' = toDouble r in
->               beta betaParams r *
->               product [toLognum (let y =
->                                      lA * r' * (1.0 - q) +
->                                      lN * (1.0 - r')*(1.0 - q) +
->                                      lL * qL +
->                                      lJ * qJ 
->                                 in 
->--                                     trace 
->--                                     ("y="++show y ++ " r=" ++ show r ++ 
->--                                      " r'="++ show r' ++ " lA=" ++ show lA) 
->                                        y)`pow` c
->                              | (c,(lA,lN,lL,lJ)) <- evi]
->          )
->       where 
->              (qL, qJ) = qLqJSM sm
->               q = qL + qJ
-
-> pow :: (Real b) => Lognum -> b -> Lognum
-> (LN x) `pow` n = LN (x* toDouble n)
-
-\end{verbatim}\end{vb}\end{Def}
-
-
-
-
-\sectionH{Function integration}
-
-(These definitions more properly belong in a library module).
-
-\begin{Def}{integrate, limitFromAbove}~~~
-
-\begin{itemize}
-\item
-        \verb@integrate (a,b) f@ = $ \int_a^b f (x) dx $
-\item
-        \verb@limitFromAbove a f@ = $  \lim_{x \rightarrow a} f (x) $
-\end{itemize}
-
-\begin{vb} 
-
-> integrate :: (Enum a, Fractional a) => 
->              (a, a) -> (a -> a) -> a
-> integrate (a, b) f =
->--       limitFromAbove zero 
->--              (\dx -> sum [ (f x) * dx | x <- [a, a+dx ..b]])
->       simpsons (a,b) f
-
-> integratePowN :: (Enum a, Fractional a, Floating a) => 
->                Int -> (a, a) -> (a -> a) -> a
-> integratePowN n (a,b) f
->      = integrate (invufunc a, invufunc b) (\u -> (f . ufunc) u * dxdu u)
->                    where
->                      invufunc x = x ** (fromInt 1 / fromInt n)
->                      ufunc u = u ^ n
->                      dxdu u = (u ^ (n-1)) * fromInt n
-
-> simpsons :: (Enum a, Fractional a) =>
->              (a, a) -> (a -> a) -> a
-> simpsons (a,b) f
->      = (h/v3) * 
->         (f a + f b + v4 * odds + v2 * evens)
->        where
->          h = ((b-a)/fromInt(n-1))
->          odds =  (sum) [f x | x <- (take ((n-1)`div`2) [a+h,    a+v3*h..])]
->          evens = (sum) [f x | x <- (take ((n-3)`div`2) [a+v2*h, a+v4*h..])]
->          n=201
->          [v1,v2,v3,v4] = map fromInt [1..4]
->          
-
-\end{verbatim}\end{vb}\end{Def}
-
-\sectionH{The beta distribution}
-
-A beta distribution is used to model the proportion of abnormal objects
-on normal and abnormal specimens.
-
-\begin{Def}{beta}
-This is a distribution of a continuous variable in the range 0 to 1.
-\begin{vb}
-
-> beta :: BetaParams -> Lognum -> Lognum
-> beta (a,b,n) x =
->        f x / n
->         where
->         f x = (x `pow` (a-1.0)) * (((one - x) `pow` (b-1.0)))
->        one = fromInt 1
-
-\end{verbatim}\end{vb}\end{Def}
-
-\sectionH{Testing}
-
-\begin{vb}
-
-> testSpecModelSM 
->      = sm 
->      where     
->              sm   = ((0.5, 0.5),                     -- P(S)
->                     (0.005, 0.0002),                 -- (P(O=A|S=Abn), P(O=A|S=Nrm))
->                     (0.2,0.2),                       -- qL, qN
->                     (0.7, 0.7),                      -- cv - (Abn, Nrm)
->                      calcBetaParams sm,              -- beta dist parmaeters
->                      0.01)                           -- FNR
-
-> showSpecModel sm
->      = unlines [s "P(S)=" ++ (show . specPriorSM) sm,
->                 s "(P(O=A|S=Abn), P(O=A|S=Nrm))=" ++ (show . abnPropsSM) sm,
->                 s "(qL, qN)=" ++ (show . qLqJSM) sm,
->                 s "cvAbnObj=" ++ (show . cvAbnObjSM) sm]
->        where s = (ljustify 33 . show)
-
-> nrm = (0.0, 1.0, 0.0, 0.0)
-> abn = (1.0, 0.0, 0.0, 0.0)
-
-> runS nAbn nNrm =
->          pAbnGvnEv testSpecModelSM [(nAbn, abn), (nNrm, nrm)]
-
-
-> cv :: Double -> Double -> BetaParams
-> cv m v = (a, b,n)
->         where
->               a = (1.0 - m) / v^2 - m
->               b = a / m - a
->              n = integratePowN 6 
->                      (toLognum 0.000001, toLognum 0.999) 
->                      (\x-> beta (a,b, toLognum 1) x)
-
-
-> main = go (
->              (putLine . showSpecModel) testSpecModelSM >>
->              putLine (tabulate2D 5
->                     [0, 10]
->                     [0, 100, 20000]
->                     runS))
-
-}
-\EndFile
-
-
-  tabulate2D :: (Show{-was:Text-} a, Show{-was:Text-} b, Show{-was:Text-} c) => Int -> [a] -> [b] -> (a->b->c) -> String
-
-> tabulate2D w alist blist f
->      = (jshow2' " ") ++ "   " ++ concat (map jshow alist) ++ "\n\n" ++
->        unlines [jshow2 b ++ " : " ++ concat [jshow (f a b) | a <- alist ] 
->                | b <- blist]
->        where
->        jshow x =  (ljustify w (take w (showFixed x))) ++ " "
->        jshow2 x = (ljustify (w*2) (take w (showFixed x))) ++ " "
->        jshow2' x = (ljustify (w*2) (take w (show x))) ++ " "
->        
-
-> tabulate1D :: (Show{-was:Text-} a, Show{-was:Text-} b) => Int -> [a] -> (a->b) -> String
-> tabulate1D w alist f
->      = unlines [jshow a ++ "   " ++ jshow (f  a)
->                | a <- alist]
->        where
->        jshow x = (ljustify w (show x))
->        
-
-Showfixed formats a Real in *non* exponent form.  
-Big hack --- must be a better way !?!
-
-> showFixed :: Real a => a -> String
-> showFixed x
->      | dx >= 1.0 = show x
->      | dx < 0.0000001 = show x
->      | otherwise = showFixed' 0 dx
->        where
->        dx = toDouble x
->        showFixed' n x = if x > 0.1 then
->                            "0." ++ (take n (repeat '0')) ++ show (round (x*1000000.0))
->                         else
->                            showFixed' (n+1) (x*fromInt 10)
->                         
-
diff --git a/ghc/tests/programs/ipoole_spec_class/Makefile b/ghc/tests/programs/ipoole_spec_class/Makefile
deleted file mode 100644 (file)
index fa26d65..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -cpp
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/ipoole_spec_class/README b/ghc/tests/programs/ipoole_spec_class/README
deleted file mode 100644 (file)
index 688a9de..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-SCCS: %W% %G%
-
-Specimen Classifier Simulator
------------------------------
-Comments relate to ghc, version 0.19
-------------------------------------
-
-
-MODIFICATIONS
--------------
-07-04-94 ipoole   added pi method for Lognum
-
-
-
-To make, type "make".
-
-To run, type "SpecClass".   The program prints a table (take several minutes).
-
-Some notes:
-
-1) SpecClass.lhs seems to take ~10 times longer to compile than any
-   of the other modules, even though it is not the biggest.  (Without
-   optimisation it seems normal).
-
-2) Execution appears to be ~ 4 times slower than interpreted gofer!
-   This is almost certainly due to the functions toDouble and toLognum
-   which in Haskell have to go via Rational.  What is clearly needed
-   is a method of type Real a => a -> Double, which could then be
-   defined efficiently for each Real type.   The default method
-   could still go via Rational.   I don't understand how
-   Haskell has survived for so long without such a method (which
-   makes me fear I've missed something...).
-
-3) When compiled *without* optimsation, the program now (7-04-94)
-   segmentation faults.   
-
-4) A very hacky "showFixed" is used, to force Reals < 0.0 to be displayed 
-   as 0.XXXXX, rather than in scientific form.   There must be better 
-   way to do this.
-
-5) The source is not pretty.
-
-6) To run with Gofer, you'll need our Haskellised Gofer prelude, which I
-   can provide (it originated from Andy Gill).
-
-7) Anyone interested in the statistics underlying the classifier model should
-   request: Ian Poole, "A statistical model for classifying cervical 
-   monolayers", RN94_003,  MRC Human Genetics Unit, Edinburgh.
-
-Ian Poole, MRC HGU
-
-18-01-93
diff --git a/ghc/tests/programs/ipoole_spec_class/ipoole_spec_class.stdout b/ghc/tests/programs/ipoole_spec_class/ipoole_spec_class.stdout
deleted file mode 100644 (file)
index 9da058f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-"P(S)="                          (5.0000000000000000e-1, 5.0000000000000000e-1)
-"(P(O=A|S=Abn), P(O=A|S=Nrm))="  (5.0000000000000001e-3, 2.0000000000000001e-4)
-"(qL, qN)="                      (2.0000000000000001e-1, 2.0000000000000001e-1)
-"cvAbnObj="                      (6.9999999999999996e-1, 6.9999999999999996e-1)
-
-" "           0     10    
-
-0           : 0.500 0.100 
-100         : 0.394 0.100 
-20000       : 0.003 0.136 
-
diff --git a/ghc/tests/programs/jeff-bug/AQ.hs b/ghc/tests/programs/jeff-bug/AQ.hs
deleted file mode 100644 (file)
index ec86a67..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
--- Addressable Queues --
-module AQ where
-import LazyST
-import Utils
-
-import Hawk
-
-type AQ s a  = (STArray s Int (Maybe a), Front s,Back s,QSize s,Int)
-type Front s = STRef s Int
-type Back s  = STRef s Int
-type QSize s = STRef s Int
-type QAddr   = Int
-
-
-new          :: Int ->  ST s (AQ s a)
-enQueue      :: AQ s a -> a -> ST s QAddr
-deQueue      :: AQ s a ->  ST s (a,QAddr)
-reQueue      :: AQ s a -> a ->  ST s QAddr
-getSize      :: AQ s a ->  ST s Int
-getMax       :: AQ s a ->  ST s Int
-deQueueWhile :: AQ s a -> (a -> Bool) ->  ST s [a]
-enList       :: AQ s a -> [a] -> ST s [QAddr]
-update       :: AQ s a -> QAddr -> (a -> a) -> ST s ()
-clear        :: AQ s a ->  ST s ()
-space        :: AQ s a -> ST s Int
-
-------------------------------------------------------------------------------
-
-assertM True _ = return ()
-assertM False s = error $ s  ++ "\n"
-
-insert x y z = setQVal x y (Just z)
-
-new n
-  = do { q <- newSTArray (0,n) Nothing
-       ; f <- newSTRef (-1)
-       ; b <- newSTRef 0
-       ; s <- newSTRef 0
-       ; return (q,f,b,s,n)
-       }
-
-clear (q,f,b,s,n)
-  = do { mapM (\x -> writeSTArray q x Nothing) [0 .. n]
-       ; writeSTRef f (-1)
-       ; writeSTRef b 0
-       ; writeSTRef s 0
-       }
-   
-enQueue q elem
-  = do { sz <- getSize q
-       ; max <- getMax q
-       ; () <- assertM (sz < max) "enQueue over max"
-       ; f <- getFront q
-       ; let f' = (f+1) `mod` max
-       ; setQVal q f' (Just elem)
-       ; setSize q (sz+1)
-       ; setFront q f'
-       ; return f'
-       }
-
-reQueue q elem
-  = do { sz <- getSize q
-       ; max <- getMax q
-       ; assertM (sz < max) "reQueue over max"
-       ; b <- getBack q
-       ; let b' = (b-1) `mod` max
-       ; setQVal q b' (Just elem)
-       ; setSize q (sz+1)
-       ; setBack q b' 
-       ; return b'
-       }
-
-deQueue q 
-  = do { sz <- getSize q
-       ; max <- getMax q
-       ; assertM (sz > 0) "deQueue under min"
-       ; b <- getBack q
-       ; mj <- getQVal q b
-       ; let j = mj `catchEx` error "deQueue"
-       ; setSize q (sz-1)
-       ; setBack q $ (b+1) `mod` max
-       ; return (j,b)
-       }
-
-space q
-  = do { sz <- getSize q
-       ; m  <- getMax q
-       ; return $ m - sz
-       } 
-
-deQueueWhile q f
-  = do { sz <- getSize q
-       ; if (sz < 1) 
-           then return []
-           else do { (elem,addr) <- deQueue q
-                   ; if (f elem) 
-                       then do { elems <- deQueueWhile q f
-                               ; return (elem:elems)
-                               }
-                       else do { reQueue q elem
-                               ; return []
-                               }
-                   }
-       }
-
-
-
-enList q [] = return []
-enList q (x:xs)
-  = do { sz <- space q
-       ; if (sz > 0) 
-           then do { a <- enQueue q x
-                   ; l <- enList q xs
-                   ; return $ a:l
-                   }
-           else return []
-       }
-
-assignAddrs q l
-  = do { let len = length l
-       ; sz <- space q
-       ; max <- getMax q
-       ; assertM (sz >= len) "sz < len"
-       ; f <- getFront q
-       ; let f' = f+1
-       ; let addrs = map (`mod` max) [f' .. f'+len]
-       ; return $ zip l addrs
-       }
-
-assignAddr q x 
-  = do { ans <- assignAddrs q [x]
-       ; return $ head ans
-       }
-
-iterateQueue q f  
-  = do { front <- getFront q
-       ; back <- getBack q
-       ; max <- getMax q
-       ; updateWhile q front front back max f
-       }
-  where updateWhile q front n back max f
-          | n == back = return ()
-          | otherwise = do { val <- getQVal q n
-                           ; val <- case val of
-                                       Just x -> return $ Just $ f x
-                                       Nothing -> return Nothing
-                           ; setQVal q n val
-                           ; updateWhile q front ((n+1) `mod` max) back max f
-                           }
-
-update q n f 
-  = do { x <- getQVal q n
-       ; setQVal q n $ fmap f x
-       }
-
--------------------------------------------------------------------------
-
-getSize  (q,f,b,s,m)     = readSTRef s
-setSize  (q,f,b,s,m) v   = writeSTRef s v
-getMax   (q,f,b,s,m)     = return m
-getFront (q,f,b,s,m)     = readSTRef f
-setFront (q,f,b,s,m) v   = writeSTRef f v
-getBack  (q,f,b,s,m)     = readSTRef b
-setBack  (q,f,b,s,m) v   = writeSTRef b v
-getQVal  (q,f,b,s,m) n   = readSTArray q n
-setQVal  (q,f,b,s,m) n e = writeSTArray q n e
-        
diff --git a/ghc/tests/programs/jeff-bug/Arithmetic.hs b/ghc/tests/programs/jeff-bug/Arithmetic.hs
deleted file mode 100644 (file)
index 384a482..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-module Arithmetic
-  (
-        alu 
-       ,Immediate
-       ,Sign(..)
-       ,Comparison(..)
-       ,AluOp(..)
-       ,ImmediateSize(..)
-  ) where
-
-import Words
-import Word
-import Int
-
--- Begin Signature: Arithmetic ----------------------------------------------
-{- 
-
-The Arithmetic module defines the datatype "AluOp" to represent the
-various sorts of operations you might pass to an ALU like circuit.
-The "Instruction" class defines its methods to use AluOp as the
-least-common denomiator (no pun intended) of arithmetic-based instructions.
-
--}
-
-type Immediate = Int
-
-data Sign = Signed 
-          | Unsigned
-      deriving (Eq,Show, Read)  
-
-data Comparison = LessThan 
-                | LessEqual 
-                | GreaterThan 
-                | GreaterEqual 
-                | Equal 
-                | NotEqual
-             deriving (Eq,Show, Read)  
-
-data AluOp        = Add Sign |
-                  Sub Sign |
-                  Mult Sign |
-                  Div Sign |
-                  And |
-                  Not |
-                  Or | Xor |
-                  Sll | Srl | Sra |
-                  S Comparison |
-                  SetHi |               -- Set high 16 bits of value.
-                  Input1 |              -- pass input1 through
-                  Input2 |              -- pass input2 through
-                  Invalidate            -- Invalidate the result of the
-                                        --  ALU operation 
-                  deriving (Eq,Show, Read)   
-
-
-data ImmediateSize = Imm16Bits | Imm26Bits
-
-alu :: Word w => AluOp -> w -> w -> Maybe w
-
--- End Signature: Arithmetic ------------------------------------------------
-
--- If the ALUfunc is "Invalidate", this function returns Nothing,
---  otherwise it performs the assiciated ALU operation.
-alu Invalidate _ _
-  = Nothing
-alu aluFunc word1 word2
-  = Just (exec_op aluFunc word1 word2)
-
-
--- signExtend is only used inside combinational circuits.
-signExtend :: Word w => ImmediateSize -> Immediate -> w
-signExtend Imm16Bits = fromInt
-signExtend Imm26Bits = fromInt
-
-
------------------------- Integer ALU unit ---------------------------
-
-
--- Performs integer addition and also returns whether overflow ocurred
-addOverflowCheck :: Word w =>  w -> w -> (w,Bool)
-addOverflowCheck a b
-  = (out,overflow)
-    where
-      out = a + b
-      overflow = out > maxBound || out < minBound
-
-overflowErr :: Word w => AluOp -> w -> w -> a
-overflowErr op a b
-  = error ("alu (" ++ show op ++ ") " ++ show a ++ " " 
-          ++ show b ++ "  <-- overflow")
-
-{-
-       NOTE: I'm not worrying about whether overflow
-               calculations are computed correctly, except
-               for signed addition and subtraction. In the
-               other cases, I'm letting the bits fall where
-               they may. Hopefully none of the benchmarks
-               cause overflows at all.
--}
-
-
--- This function performs the unsigned version of the normal signed
---  integer operation
-unsignedWordOp :: Word w => (w->w->w) -> (w->w->w)
-unsignedWordOp f a b = sign $ unsign a `f` unsign b
-
-
--- These functions convert between a Word and a vector of Bools.
-
-bitValues :: Word w => [w]
-bitValues = map (2 ^) [31,30..0]
-
-buildVec :: Word w => w -> [Bool]
-buildVec n
-  = makeVec (unsign n) bitValues
-    where
-      makeVec :: Word w => w -> [w] -> [Bool]
-      makeVec 0 [] = []
-      makeVec _ [] = [] ---- should we catch this?
-      makeVec n (b:bs)
-       = if n >= b
-           then True : makeVec (n-b) bs
-           else False : makeVec n bs
-
-buildWord :: Word w => [Bool] -> w
-buildWord bools
-  = sign $ makeInteger bools bitValues
-    where
-      makeInteger [] []
-       = 0
-      makeInteger n []
-       = error ("buildWord -- argument too large: " ++ show bools)
-      makeInteger (b:bs) (n:ns)
-       = if b
-           then n + makeInteger bs ns
-           else makeInteger bs ns
-
--- Performs an element-wise boolean operation on corresponding
---  pairs of bits of the argument integers
-bitOp :: Word w =>  (Bool->Bool->Bool) -> (w->w->w)
-bitOp f a b
-  = buildWord $ zipWith f (buildVec a) (buildVec b)
-
-
-
--- This function assumes the ALUfunc argument is not "Invalidate"
-exec_op :: Word w => AluOp -> w -> w -> w
-
-exec_op op@(Add Signed) a b
-  = if overflow
-      then overflowErr op a b
-      else out
-    where
-      (out,overflow) = addOverflowCheck a b
-
-exec_op (Add Unsigned) a b
-  = unsignedWordOp (+) a b
-
-exec_op op@(Sub Signed) a b
-  = if overflow
-      then overflowErr op a b
-      else out
-    where
-      (out,overflow) = addOverflowCheck a (-b)
-
-exec_op (Sub Unsigned) a b
-  = unsignedWordOp (-) a b
-
-exec_op (Mult Signed) a b
-  = sign $ a * b
-
-exec_op (Mult Unsigned) a b
-  = unsignedWordOp (*) a b
-
-exec_op (Div Signed) a b
-  = sign $ a `div` b
-
-exec_op (Div Unsigned) a b
-  = unsignedWordOp div a b
-
-exec_op And a b = bitOp (&&) a b
-
-exec_op Or a b = bitOp (||) a b
-
--- eh, this is kinda temporary.
---exec_op Not a b = bitOp (\x y -> not x) a b
-exec_op Not a b = if a == 0 then 1 else 0
-
-exec_op Xor a b = bitOp xor a b
-                 where
-                   xor False x = x
-                   xor True  x = not x
-
-exec_op Sll a b
-  = buildWord $ drop shiftAmt (buildVec a) ++ replicate shiftAmt False
-    where
-      shiftAmt = toInt $ unsign b `mod` 32
-
-exec_op Srl a b
-  = buildWord $ replicate shiftAmt False ++ take (32 - shiftAmt) (buildVec a)
-    where
-      shiftAmt = toInt $ unsign b `mod` 32
-
-exec_op Sra a b
-  = buildWord $ replicate shiftAmt signBit ++ take (32 - shiftAmt) (buildVec a)
-    where
-      shiftAmt = toInt $ unsign b `mod` 32
-      signBit = (a < 0)
-
-exec_op (S relop) a b
-  = if (a `relation` b) then 1 else 0
-    where
-      relation = case relop of
-                  LessThan     -> (<)
-                  LessEqual    -> (<=)
-                  GreaterThan  -> (>)
-                  GreaterEqual -> (>=)
-                  Equal        -> (==)
-                  NotEqual     -> (/=)
-
-exec_op SetHi a _
-  = a * num_half       -- a * 2^n
-
-exec_op Input1 a b
-  = a
-
-exec_op Input2 a b
-  = b
-
-
diff --git a/ghc/tests/programs/jeff-bug/BoundedSet.hs b/ghc/tests/programs/jeff-bug/BoundedSet.hs
deleted file mode 100644 (file)
index b8e8caf..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-module BoundedSet
-  ( new
-  , readBound
-  , readSize
-  , read  
-  , clear
-  , insert
-  , spaceAvail
-  , rmSuch 
-  , rmSuchN
-  , BoundedSet
-  , iterateSet
-  ) where
-
-import LazyST
-import Prelude hiding (read)
-import List    hiding (insert)
-
-
-new        :: Int -> ST s (BoundedSet s a)
-readBound  :: BoundedSet s a -> ST s Int
-readSize   :: BoundedSet s a -> ST s Int
-read       :: BoundedSet s a -> ST s [a]
-clear      :: BoundedSet s a -> ST s [a]
-insert     :: BoundedSet s a -> [a] -> ST s ()
-spaceAvail :: BoundedSet s a -> ST s Int
-rmSuch     :: BoundedSet s a -> (a -> Bool) -> ST s [a]
-rmSuchN    :: BoundedSet s a -> Int -> (a -> Bool) -> ST s [a]
-iterateSet :: BoundedSet s a -> (a -> a) -> ST s ()
-
-
--- Implementation ----------------------------------------------------
-type BoundedSet s a = (STRef s [a],Int)
-
-
-iterateSet s f =
-   do { set <- read s
-      ; write s (map f set)
-      }
-
-read (s,n) = readSTRef s
-
-rmSuch s f
-  = do { set <- read s
-       ; let (yes,no) = partition f set
-       ; write s no
-       ; return yes
-       }
-
-rmSuchN s n f 
-  = do { such <- rmSuch s f
-       ; let (big,small) = splitAt n such
-       ; insert s small
-       ; return big
-       }
-
-write    :: BoundedSet s a -> [a] -> ST s ()
-write (s,n) x = writeSTRef s x
-
-
-readBound (s,n) = return n
-
-new n 
-  = do { set <- newSTRef []
-       ; return (set,n)
-       }
-
-clear s =
-  do { set <- read s
-     ; write s []
-     ; return set
-     }
-
-readSize s =
-  do { set <- read s
-     ; return ( length set)
-     }
-       
-spaceAvail s
-  = do { bnd <- readBound s
-       ; sz  <- readSize s
-       ; return (bnd - sz)
-       }
-      
-
-insert s l
-  = do { set <- read s
-       ; n <- readBound s
-       ; write s $ take n (set ++ l)
-       }
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/Cell.hs b/ghc/tests/programs/jeff-bug/Cell.hs
deleted file mode 100644 (file)
index 448e007..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-module Cell where
-
-import Register
-import Words
-
--- Begin Signature: Cell ----------------------------------------------
-{-
-
-Cells are intended to be used to represent the source and destination
-operands in machine instructions.  Consider, for example:
-       
-       r1=? <- r20=15 + 8
-
-Here the first cell (r1=?) is a register reference, and its value is
-not known yet.  The source cell r20=15 is a register reference with 
-its value calculated.  8 is the other source operand --- in this 
-case a constant.  The Cell class hopes to capture this notion, while
-allowing you freedom to define richer Cell-like structures.
-
-The Cell's interface supports register references, constants,
-PCs, speculative PCs and predicates.
-
-See the DLX_Cell module for a concrete instance
-
-Currently several of the Cell methods overlap with each other ---- 
-Eventually we will slim the methods to the minimum set.
--}
-
-
-class Cell c where
-
-  -- return a PC register reference with no value
-  pcNothing    :: (Register r,Word w) => c r w
-
-  -- return the value within the cell (undefined if no value exists)
-  getVal       :: (Register r,Word w) => c r w -> w
-
-  -- update the value within the cell
-  putVal       :: (Register r,Word w) => c r w -> Maybe w -> c r w
-
-  -- place the cell in an invalid state 
-  invalidate           :: (Register r,Word w) => c r w -> c r w
-
-  -- is the cell a register reference?
-  isReg                :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell a PC register reference?
-  isPC         :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell a speculative PC register reference?
-  isSpecPC     :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell indicates a location in memory?
-  isLoc                :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell  a constant value?
-  isVal                :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell in an invalide state?
-  isInv                :: (Register r,Word w) => c r w -> Bool
-
-  -- is the value of the cell is known?
-  --    isVal (r2=6) = True
-  --    isVal (r2=?) = False
-  isAss                :: (Register r,Word w) => c r w -> Bool
-
-  -- is the cell a predicate register reference?
-  isPred       :: (Register r,Word w) => c r w -> Bool
-
-  -- has the value been calculated?  (ie. isAss || isInv)
-  isComputed   :: (Register r,Word w) => c r w -> Bool
-
-  -- are the two cells both refering to the same register?
-  sameLoc      :: (Register r,Word w) => c r w -> c r w -> Bool
-
-  -- true if sameLoc is true and neither cell is invalid
-  cellHazard   :: (Register r,Word w) => c r w -> c r w -> Bool
-
-  -- get the register reference
-  getReg        :: (Register r,Word w) => c r w -> r
-
-  -- construct a cell with a memory reference
-  loc           :: Word w => w -> c r w
-
-  isPred x = False
-
--- End Signature: Cell ----------------------------------------------
-
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/DLX.hs b/ghc/tests/programs/jeff-bug/DLX.hs
deleted file mode 100644 (file)
index 59cec97..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-module DLX
-  (
-      Instr(..)
-     ,BranchFunc(..)
-     ,ImmOpcode(..)
-     ,RegOpcode(..)
-     ,JmpOpcode(..)
-     ,DLXReg(..)
-     ,SrcReg
-     ,DstReg
-     ,DLX_Trans
-     ,DLXCell
-     ,DLX_Word
-     ,DLX_Instr
-     ,DLX_InstrMem
-     ,dlx2trans
-     ,VDLXTrans
-     ,VReg
-     ,VTrans
-     ,module DLX_Cell
-     ,module DLX_Reg
-     ,module DLX_Op
-  ) where
-
-
-import Ix
-import Hawk
-import Word
-import Trans
-import DLX_Cell
-import DLX_Reg
-import DLX_Op
-
-type DLX_Word = Word32
-type VDLXTrans = VTrans DLXReg DLX_Word
-type VReg a = Virtual a Int
-type VTrans r w = Trans DLX_Op (VReg r) 
-
-fillIn x= fillInCells x 
-
-
-data Instr reg i
-           = ImmIns     ImmOpcode reg reg i |
-             RegReg     RegOpcode AluOp reg reg reg |
-             Jmp        JmpOpcode Int |
-             Nop
-             deriving (Eq,Show, Read)
-
-
-data BranchFunc = Never | Always | IfEqZero | IfNeqZero
-            deriving (Eq,Show, Read)
-
-data ImmOpcode = LoadStoreImm LoadStoreOp |
-           ALUImm AluOp |
-           BEQZ | BNEZ |
-           JR |
-           JALR 
-           deriving (Eq,Show, Read)
-
-data RegOpcode = MOVI2S | MOVS2I |
-           ALU 
-           deriving (Eq,Show, Read)
-
-data JmpOpcode = J |
-           JAL |
-           TRAP |
-           RFE
-           deriving (Eq,Show, Read)
-
-
-
-instance Register DLXReg where
-     readOnly R0 = True
-     readOnly Dummy = True
-     readOnly _  = False
-     pc = PC
-     specpc = SpecPC
---     specpc = PC
---  bug fix?  Thu Nov 19 18:12:24 PST 1998
-     ispc x = PC == x
-     isspecpc x = SpecPC == x
-
-type DLXCell a = DLX_Cell DLXReg a
-type DLX_Trans a = Trans DLX_Op (DLXCell a)
-type DLX_Instr a = Instr DLXReg a
-
-type DLX_InstrMem a = InstrMemoryState DLX_Word (DLX_Instr a)
-
-
-type SrcReg = DLXReg     -- Source register
-type DstReg = DLXReg     -- Destination register
-
-
-
-regNothing R0 = Reg R0 (Val 0)
-regNothing reg = Reg reg NotKnown
-
-dlx2trans :: Word2 i a => Instr DLXReg i -> DLX_Trans a
-
-dlx2trans (ImmIns (LoadStoreImm loadOp@(Load _ _ )) dest src offset)
-  = Trans [regNothing dest] (MemOp loadOp) 
-          [regNothing src,Imm (toWord offset)] []
- --         [regNothing src,Imm (toWord offset),regNothing Dummy] []
-
-{-
-dlx2trans (ImmIns (LoadStoreImm storeOp@(Store _ )) writeAddr writeReg offset)
-  = Trans [regNothing Dummy] (MemOp storeOp) [regNothing writeAddr,
-                             Imm (toWord offset),
-                             regNothing writeReg] []
-
-dlx2trans (ImmIns (ALUImm SetHi) dest _ imm)
-  = Trans [destCell] (ExecOp SetHi) [Imm (toWord imm)] []
-    where
-      destCell = regNothing dest
-
-dlx2trans (ImmIns (ALUImm aluFunc) dest src imm)
-  = Trans [destCell] (ExecOp aluFunc) [srcCell,Imm (toWord imm)] []
-    where
-      destCell = regNothing dest
-      srcCell = regNothing src
-
-dlx2trans (ImmIns BEQZ _ src pcOffset)
-  = Trans [pcNothing'] (CondExecOp (Add Signed) Input1) [regNothing src,
-                                                           pcNothing',
-                                                           Imm (toWord pcOffset)]
-          []
-
-dlx2trans (ImmIns BNEZ _ src pcOffset)
-  = Trans [pcNothing'] (CondExecOp Input1 (Add Signed)) [regNothing src,
-                                                           pcNothing',
-                                                           Imm (toWord pcOffset)]
-    []
-
-dlx2trans (ImmIns JR _ src _ )
-  = Trans [pcNothing'] (ExecOp Input1) [regNothing src] []
-
-
-dlx2trans (RegReg ALU aluFunc dest src1 src2)
-  = Trans [regNothing dest] (ExecOp aluFunc) [regNothing src1, regNothing src2] []
-
-dlx2trans (RegReg unknownOp _ _ _ _ )
-  = error ("Can't translate " ++ show unknownOp)
-
-dlx2trans (Jmp J offset)
-  = Trans [pcNothing'] (ExecOp (Add Signed)) [pcNothing', Imm (toWord offset)] []
-
-dlx2trans (ImmIns JALR _ src _ )
-  = Trans [pcNothing',regNothing R31]
-         (ParExecOp Input1 Input2)
-         [regNothing src, pcNothing'] []
-
-dlx2trans (Jmp JAL offset)
-  = Trans [pcNothing',regNothing R31] 
-         (ParExecOp (Add Signed) Input2)
-         [Imm (toWord offset),pcNothing']
-          []
-
-
-dlx2trans (Jmp TRAP offset )
-  = Trans [pcNothing',regNothing IAR]
-         (ParExecOp Input1 Input2)
-         [Imm (toWord offset),pcNothing']
-          []
-
-
-dlx2trans (Jmp RFE _ )
-  = Trans [pcNothing'] (ExecOp Input1) [regNothing IAR] []
-
-dlx2trans Nop
---  = Trans [Reg Dummy (Val 0)] (NoOp "dlx2trans") [] []
-    = Trans [] (NoOp "dlx2trans") [] []
-
--}
-
-pcNothing' = Reg PC NotKnown
-
-
-instance Show a => Probe (DLXCell a)
-instance Probe DLXReg
-
-instance Probe DLX_Op where
-  outp (ExecOp (Add _ ))   = "+"
-  outp (ExecOp (Sub _ ))   = "-"
-  outp (ExecOp (Div _ ))   = "/"
-  outp (ExecOp (Mult _ ))  = "*"
-  outp (ExecOp op)         = show op
-  outp (MemOp (Load _ _))  = "Load"
-  outp (MemOp (Store _))   = "Store"
-  outp (ParExecOp op1 op2) = "PAR("++outp op1++","++outp op2 ++ ")"
-  outp x                   = show x
-
-
-instance Show a => Probe (DLX_Trans a) where
-   outp (Trans [] op [] i) = outp op ++  outInfo i
-   outp (Trans [x] (CondExecOp op1 op2) [c,y,z] i)
-       = outp x ++ " <- " ++ "(if0 " ++ outp c ++ " ("
-            ++ outp op1 ++ "," ++ outp op2 ++ ")) "
-            ++ outp y  ++ " " ++ outp z
-            ++ outInfo i
-   outp (Trans dummy (MemOp (Store x)) [c,y,z] i)
-       = outp (MemOp (Store x)) ++" "++ outp c ++"("++ outp y ++") <- "
-         ++  outp z ++ outInfo i
-   outp (Trans [o] op [x,y] i)
-       = outp o ++ " <- " ++ outp x ++ " " ++ outp op ++ " " ++ outp y
-                          ++ outInfo i
-   outp (Trans [] op l i) = outp op ++" "++ outList l ++ outInfo i
-   outp (Trans [o] op l i)
-       = outp o ++ " <- " ++ outp op ++" "++ outList l ++ outInfo i
-   outp (Trans l1 op l2 i)
-       = outList l1 ++" <- "++ outp op ++" "++ outList l2 ++ outInfo i
-
-outInfo [] = ""
-outInfo l = "  {" ++ foldr1 (\x y -> x ++ "," ++ y) (map outp l) ++ "}"
-
-outList [] = ""
-outList [x] = outp x
-outList l = "[" ++ foldr1 (\x y -> x ++ "," ++ y) (map outp l) ++ "]"
-
-
-
-
-
-
-
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/DLX_Cell.hs b/ghc/tests/programs/jeff-bug/DLX_Cell.hs
deleted file mode 100644 (file)
index 9d88a09..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-module DLX_Cell where
-
-import Cell
-import Register
-import Words
-
-data Value a = NotKnown 
-             | Inv
-             | Val a
-       deriving (Eq,Show)
-
-data DLX_Cell r w = Reg r (Value w) 
-                  | Loc w
-                  | Imm w
-       deriving (Eq,Show)
-
-instance Cell DLX_Cell where
-  pcNothing = Reg pc NotKnown
-  loc = Loc
-
-  getReg (Reg r _)             = r
-
-  getVal (Reg _ (Val val))             = val
-  getVal (Imm val)                     = val 
-  getVal cell                          = error ("No data for getData: " ++
-                                                show cell)
-
-  putVal cell Nothing                 = invalidate     cell
-  putVal reg@(Reg r x) (Just v) 
-           | readOnly r = reg
-           | otherwise = Reg r (Val v)
-                            
-  putVal valCell@(Imm _ ) _   
-    = error ("Can't put data into a value cell: " ++ show valCell)
-
-
-  invalidate     reg@(Reg r _ ) 
-    | readOnly r = reg
-    | otherwise     = Reg r Inv
-  invalidate     imm@(Imm _ )           = imm
-
-
-  isReg (Reg _ _ )     = True
-  isReg _                      = False
-
-  isPC (Reg x _)       = ispc x
-  isPC _                       = False
-
-  isSpecPC (Reg x  _)= isspecpc x
-  isSpecPC _           = False
-
-  isLoc (Loc _)        = True
-  isLoc _                      = False
-
-  isVal (Imm _ )       = True
-  isVal _                      = False
-
-  isInv (Reg _ Inv)    = True
-  isInv _                      = False
-
-  isAss (Reg _ (Val _ ))       = True
-  isAss (Imm _ )               = True
-  isAss _                              = False
-
-  isComputed (Reg _ NotKnown) = False
-  isComputed _                     = True
-
-
--- Do the two cells name the same Loc (Reg or PC?)
-  sameLoc (Reg reg1 _ ) (Reg reg2 _ ) = reg1 == reg2
-  sameLoc _ _          = False
-
-
-  cellHazard (Reg precReg pRegVal ) (Reg followReg fRegVal )
-    | readOnly precReg         = False
-    | precReg == followReg     = pRegVal /= Inv && fRegVal /= Inv
-    | True                     = False
-  cellHazard _ _                       = False
-
-
-
-
-
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/DLX_Op.hs b/ghc/tests/programs/jeff-bug/DLX_Op.hs
deleted file mode 100644 (file)
index cb74c0b..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-module DLX_Op (DLX_Op(..)) where
-
-import Arithmetic
-import Memory
-import Instruction
-import Probe
-
-data DLX_Op = ExecOp AluOp |
-         CondExecOp AluOp AluOp |      -- If first source == zero, then the
-                                       --  first AluOp is performed on rest
-                                       --  of source arguments, otherwise the
-                                       --  second AluOp is performed on them.
-         ParExecOp AluOp AluOp |       -- The first destination cell is the
-                                       --  result of the first AluOp; the
-                                       --  second destination cell is the
-                                       --  result of the second AluOp.
-         MemOp LoadStoreOp |
-         NoOp String                   -- Null operation. The string argument
-                                       --  can be used as a comment indicating
-                                       --  which phase generated a stall.
-         deriving (Eq,Show)
-
--- Begin Signature ---------------------------------------------------------
--- End Signature ---------------------------------------------------------
-
-instance Instruction DLX_Op where
-   isNoOp t = case t of
-               NoOp _ -> True
-               _      -> False   
-
-   isAddOp t = case t of
-               ExecOp (Add _) -> True
-               _ -> False 
-
-   isSubOp t = case t of
-               ExecOp (Sub _) -> True   
-               _ -> False
-
-   isMultOp t = case t of
-               ExecOp (Mult _) -> True
-               _ -> False
-                     
-   isDivOp t = case t of
-               ExecOp (Div _) -> True
-               _ -> False
-
-   isJumpOp t = case t of
-               CondExecOp _ _ -> True
-               _ -> False           
-
-   isMemOp t = case t of
-               MemOp _ -> True
-               _ -> False
-   isLoadOp t = case t of
-               MemOp (Load _ _) -> True
-               _ -> False
-
-   isStoreOp t = case t of
-               MemOp (Store _) -> True
-               _ -> False
-
-   noOp = NoOp ""
-   isAluOp t = case t of
-                ExecOp _ -> True
-                _ -> False
-
-   isCmpOp t = case t of
-                ExecOp (S _) -> True
-                _ -> False
-
-   isBoolOp t = case t of
-                ExecOp Xor -> True
-                ExecOp Or -> True
-                ExecOp And -> True
-                ExecOp Not -> True
-                _ -> False
-
-   isMoveOp t = case t of
-               ExecOp Input1 -> True
-               _ -> False
-   aluOp (ExecOp f) = f
-
-   isCond = isJumpOp
-
-   isPar (ParExecOp _ _) = True
-   isPar _ = False
-
-   fstOp (ParExecOp f _) = f
-   fstOp (CondExecOp f _) = f
-
-   sndOp (ParExecOp f g) = g
-   sndOp (CondExecOp f g) = g
-
-   memOp (MemOp f) = f
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/DLX_Reg.hs b/ghc/tests/programs/jeff-bug/DLX_Reg.hs
deleted file mode 100644 (file)
index 07929ec..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module DLX_Reg where
-
-import Ix
-
-
-data DLXReg = R0  | R1  | R2  | R3  | R4  | R5  | R6  | R7  |
-        R8  | R9  | R10 | R11 | R12 | R13 | R14 | R15 |
-        R16 | R17 | R18 | R19 | R20 | R21 | R22 | R23 |
-        R24 | R25 | R26 | R27 | R28 | R29 | R30 | R31 |
-        F0  | F1  | F2  | F3  | F4  | F5  | F6  | F7  |
-        F8  | F9  | F10 | F11 | F12 | F13 | F14 | F15 |
-        F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 |
-        F24 | F25 | F26 | F27 | F28 | F29 | F30 | F31 |
-        IAR | PC | SpecPC | Dummy
-        deriving (Ix,Eq,Ord,Bounded,Show,Read,Enum)
diff --git a/ghc/tests/programs/jeff-bug/Devices.hs b/ghc/tests/programs/jeff-bug/Devices.hs
deleted file mode 100644 (file)
index fd3366c..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-module Devices where
-
-import List
-import TransSig
-import qualified Trans as T
-import qualified PreludeSig as Signaled
-import Signal
-import Words
-import Register
-import Arithmetic
-import Cell
-import Memory
-import Utilities
-
-import LazyST
-import Instruction 
-
-import Array
-import Monad
-import StateArray
-import Ix
-
-
-
--- Begin Signature -------------------------------------------------------
-{- 
-   Devices defines common circuits (for example ,instruction 
-   and data memory or alus) 
--}
-
-
--- flush k x b s , when b then return x for k cycles, otherwise s
--- flush 2 10 <False,False,True,False,False,False,False .. > <1 .. 7 .. >
---        = <1,2,10,10,5,6,7 .. >
-flush       :: Int -> a -> Signal Bool -> Signal a -> Signal a
-
--- latch x b xs. return the value of xs when last b occurred.  initialize
--- with x
-latch       :: a -> Signal Bool -> Signal a -> Signal a
-
-
-
-regFile     :: Ix i  => (i,i) ->      -- Register addresses
-                        [a] ->                   -- Initial contents
-                        [(Signal Bool,           -- Write enables
-                        (Signal i,Signal a))] -> -- Write ports
-                        [Signal i] ->            -- Read ports
-                        [Signal a]               -- Read port contents
-
-
-dataMemory :: (Word a, Word b) => a -> ArrayDesc a b ->
-              Signal LoadStoreOp -> Signal a -> Signal b -> Signal b
-
-
--- fetch (k,translate,max,memory) pc width = (instrs,pc')
---   k = the number of indices between addresses.  
---   translate = the function that creates transaction from
---               the representation in memory
---   max = the largest number of instructions to fetch on 
---         a single cycle
---   memory = the program
---   pc = the pc to fetch
---   width = the number of instructions to fetch starting at pc
-fetch  :: (Cell c, Register r, Word w, Instruction i) =>
-          (w,f -> Trans i (c r w),Int,ArrayDesc w f) ->       
-          Signal (Trans i (c r w)) -> Signal Int ->       
-          (Signal [Trans i (c r w)],Signal (Trans i (c r w)))
-
-
--- trans_alu is alu applied to transactions in the obvious way:
--- intuitively,   
---  trans_alu(Trans [dst] op [s1,s2]) = Trans [dst=alu(op,s1,s2)] op [s1,s2]
-trans_alu :: (Register r, Cell c, Word w, Instruction i) => 
-             (Trans i (c r w)) -> (Trans i (c r w))
-
---- exec is trans_alu lifted on signals
-exec :: (Register r, Cell c, Word w, Instruction i) => 
-        Signal (Trans i (c r w)) -> Signal (Trans i (c r w))
-
-
--- mem serves loads and stores
-mem :: (Instruction i, Cell c, Register r,Word w) => 
-       w -> ArrayDesc w w ->
-       Signal (Trans i (c r w)) -> Signal (Trans i (c r w))
-
-ss_mem :: (Instruction i, Cell c, Register r, Word w) => 
-       w -> ArrayDesc w w -> 
-       Signal [Trans i (c r w)] -> Signal [Trans i (c r w)]
-
-
-
--- End Signature -------------------------------------------------------
-
-ss_mem k m = superscalar (mem k m)
-
-
---- WHOA! this code is a black-hole.  Read only if you must!
---- This could use some serious house-cleaning.
-
--- "fetch n mem pc size" fetches (min n size) consec. instructions
--- following "pc"
-fetch (k,f,lim,memory@(range,_)) pc n
-     = (id,last') >< instrsFetch k f memory pcs
-  where
-  size = Signaled.min n (lift0 lim)
-  last' s = if' (Signaled.length s *< 1) then' pc
-            else' (Signaled.last s)
-  pcs = lift2 (buildPCs k 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 <- 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` []
-  mkPC range x = if inRange range x then T.pcTrans x
-                  else T.nop
-
-instrFetch n convert m input = (head' x, head' y)
-  where
-  fetch = instrsFetch n convert m
-  (x,y) = fetch (toList input)
-  toList = lift1 $ \x -> [x]
-  head' = lift1 head
-
-
-instrsFetch n convert initContents pcs
-  = (insertPCs curPC $ instructions `bypassList` nextPCTrans, nextPCTrans)
-    where
-      bypassList = lift2 $ \x y -> zipWith T.bypass x y
-      instructions = lift1 (map convert) $ instrMemory n initContents curPC
-      curPC = lift1 (map getpc) pcs
-      nextPCTrans = lift1 (map (\x -> T.pcTrans $ x+n)) curPC
-      getpc t = 
-          do reg <- T.getDstPC t
-             let p = getReg reg
-             let x = getVal reg 
-             guard $ ispc p
-             return x
-           `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)
-
-
-exec trans = lift1 trans_alu trans
-
-trans_alu trans@(Trans (dest:_) op (src:_) _) 
-    | isAluOp op && aluOp op == Input1 =
-        trans `T.evalTrans` (dest,(alu Input1 (getVal src) undefined))
-trans_alu trans@(Trans (dest:_) op (src:_) _) 
-    | isAluOp op && aluOp op == SetHi =
-        trans `T.evalTrans` (dest,(alu SetHi (getVal src) undefined))
-trans_alu trans@(Trans [dest] op (src1:src2:_) _) 
-    | isAluOp op =
-        trans `T.evalTrans` (dest,(alu (aluOp op) (getVal src1) (getVal src2)))
-trans_alu t@(Trans (d1:d2:_) op (s1:s2:_) _) 
-  | isAluOp op =
-      let t' = t `T.evalTrans` (d1,(alu (aluOp op) (getVal s1) (getVal s2)))
-          Trans (d1':_) _ _ _ = t'
-      in t' `T.evalTrans` (d2,(alu Not (getVal d1') (getVal d1')))
-trans_alu trans@(Trans (dest:_) op (cond:src1:src2:_) _) | isCond op = 
-                let eqZeroFunc = fstOp op
-                    neqZeroFunc = sndOp op 
-                in trans `T.evalTrans` (dest,alu 
-                        (if (getVal cond) == 0 then eqZeroFunc else neqZeroFunc)
-                                     (getVal src1)
-                                     (getVal src2))
-trans_alu trans@(Trans (dest1:dest2:_)
-                         op 
-                        (src1:src2:_) _) | isPar op 
-       = (trans `T.evalTrans` (dest1,alu aluFunc1 src1Data src2Data))
-                `T.evalTrans` (dest2,alu aluFunc2 src1Data src2Data)
-         where
-            aluFunc1 = fstOp op
-            aluFunc2 = sndOp op
-           src1Data = getVal src1
-           src2Data = getVal src2
-trans_alu trans@(Trans _ o _ _ ) 
-            | isMemOp o = trans
-            | isNoOp o = trans
---            | otherwise = error ("Unexecutable transaction: ")
-            | otherwise = trans
-
-
------------- Memory stage ------------
-
-
-mem k initContents trans 
-  = if' loadInstr
-      then' (trans `evalTrans` (bundle2 (loadReg,lift1 Just 
-            (dataMemory k initContents loadStoreOp address contents))))
-      else' trans
-    where
-      (loadInstr,loadReg,loadStoreOp,address,contents)
-       = unbundle5 $ lift1 dataMemOps trans
-dataMemOps (Trans (dest:_) op (address:offset:_) _) | isLoadOp op
-       = (True,dest,loadOp,getVal address + getVal offset,0)
-           where loadOp = memOp op
-dataMemOps(Trans _ op (address:offset:val:_) _) | isStoreOp op
-       = (False,
-          undefined, -- pcNothing
-          storeOp,
-          getVal address + getVal offset,
-          getVal val)
-          where storeOp = memOp op
-dataMemOps _ 
-       = (False,
-          undefined, -- pcNothing,
-          NOP,
-          0,
-          0)
-
-
-
-
-
-flush n d s1 s2 = runST (
-    do { n' <- newSTRef 0
-       ; loop (bundle2 (s1,s2)) (\(s1,s2) -> 
-         do { if s1 then writeSTRef n' n else return ()
-            ; n <- readSTRef n'
-            ; if n>0 then do {writeSTRef n' (n-1)
-                             ; return d
-                             }
-               else return s2
-            })
-       }
-  )
-
-
-
---------------- Latches ----------------
--- latch stores a value, until it is reset to a new value by
---  the boolean signal. "init" is the value stored in latch
---  at time zero.
-latch init reset resetVal = out                
-  where 
-  out = (if' reset then' resetVal else' last)
-  last = delay init out
-
-
---------------- Buses ------------------
-
---busReg      :: Int -> [a] -> [Signal a] -> [Signal a]
---busReg n inits xs = zipInt n delay inits xs
---  where
---  zipInt 0 f xs ys           = []
---  zipInt n f ~(x:xs) ~(y:ys) = f x y : zipInt (n-1) f xs ys
-
-
------------------- Register Files ----------------
-
--- A bank of registers. The bank
---  contains multiple read- and write-ports. Note that 
---  the contents of a write port are reflected in the
---  associated read port in the same clock cycle.
-regFile bounds initContents writePorts readPorts
-  = map (lift2 (!) registers) readPorts
-    where
-    registers = updateArray lastRegisters writePorts
-    lastRegisters = delay (listArray bounds initContents) registers
-                          
-
-
--- Bank of registers, where each register holds a pair of values.
-{-
-pairRegFile :: Ix i => (i,i) ->                -- Register addresses
-                      [(a,b)] ->                         -- Initial contents
-                      [(Signal Bool,                     -- Write enables
-                       (Signal i,Signal a,Signal b))] -> -- Write ports
-                      [Signal i] ->                      -- Read ports
-                      [(Signal a,Signal b)]              -- Read port contents
-
-pairRegFile bounds initVals writePorts readPorts
-  = map unbundle2 (regFile bounds initVals zipWritePorts readPorts)
-    where
-    zipWritePorts = map (\(writeEnable,(writeAddress,writeA,writeB)) ->
-                       (writeEnable,(writeAddress, bundle2 (writeA,writeB))))
-                       writePorts
-
---type WriteBackData s reg w = (s w       -- writeback contents
---                          ,s reg     -- writeback register name
---                          )
--}
-
-
--- I THINK THAT THIS ONE SHOULD GO...
-registers src1 src2 p
-  = unbundle2 $ fmap getContents arrResps
-    where
-      (writebackContents,writebackReg) = unbundle2 p
-      arrResps = stateArray ((minBound,maxBound),[(minBound,maxBound,0)])
-                             (lift4 arrReqs src1 src2 writebackContents writebackReg)
-      getContents [ReadVal src1, ReadVal src2]
-        = (src1,src2)
-      getContents [Written, ReadVal src1, ReadVal src2]
-        = (src1,src2)
-      getContents [Written,Written, ReadVal src1, ReadVal src2]
-        = (src1,src2)
-      arrReqs src1 src2 wbContents wbReg
-        = wb ++
-          [ ReadArr src1,
-           ReadArr src2]
-        where wb = map (\(x,y) -> WriteArr x x y) (zip wbReg wbContents)
-
-
-
-instrMemory sz arrDesc pcAddresses = lift1 (map getInstr) arrResp
-  where
-  getInstr (ReadVal instr) = instr
-  arrResp = let y = lift1 ( map (\addr -> ReadArr (addr `div` sz))) pcAddresses
-            in stateArray arrDesc y
-
------------------------------------------------------------------------------
-dataMemory sz arrDesc loadStoreCmd addr writeVal
-  = liftFn getLMD $ stateArray arrDesc arrReqs
-    where
-      {- Halfword and byte stores are implemented by loading the relevent
-         word from memory, modifying the correct portion of the word, and
-         then storing the revised word back to memory, all within one
-         clock cycle
-      -}
-      liftFn = lift2 ($)
-
-      (arrReqs,getLMD) = unbundle2 $ lift3 interpCmd loadStoreCmd addr writeVal
---      interpCmd :: Word w => LoadStoreOp -> w -> w ->
---                   ([ArrReq w w],[ArrResp w w] -> w)
-      interpCmd (Load FullWord _ ) addr _
-        = ([ReadArr (addr `div` sz)],
-           (\[ReadVal val] -> val))
-      interpCmd (Load HalfWord signedness) addr _
-        = ([ReadArr wordAddr],
-           (\[ReadVal val] -> subfield signedness 
-                         (4 * sz) ((4 * sz) - (2 * sz) * wordMod) val)
-           )
-          where
-            (wordAddr,wordMod) = addr `divMod` sz
-      interpCmd (Load Byte signedness) addr _
-        = ([ReadArr wordAddr],
-           (\[ReadVal val] -> subfield signedness 
-                   (2 * sz) ((6 * sz) - (2 * sz) * wordMod) val)
-           )
-          where
-            (wordAddr,wordMod) = addr `divMod` sz
-      interpCmd (Store FullWord) addr val
-        = ([WriteArr wordAddr wordAddr val],
-           (\[Written] -> val))
-          where
-            wordAddr = addr `div` sz
-      interpCmd (Store HalfWord) addr val
-        = ([WriteFn wordAddr modifyHalfword],
-           (\[WrittenFn val] -> val))
-          where
-            (wordAddr,wordMod) = addr `divMod` sz
-            modifyHalfword wordContents
-              = setSubfield (4 * sz)
-                            ((4 * sz) - (2 * sz) * wordMod)
-                            wordContents
-                            (wordContents `mod` num_half)
-      interpCmd (Store Byte) addr val
-        = ([WriteFn wordAddr modifyByte],
-           (\[WrittenFn val] -> val))
-          where
-            (wordAddr,wordMod) = addr `divMod` 4
-            modifyByte wordContents
-              = setSubfield (2 * sz)
-                            ((6 * sz) - (2 * sz) * wordMod)
-                            wordContents
-                            (wordContents `mod` num_bytes)
-      interpCmd NOP _ _
-        = ([],const 0)
-
---  treating 'n' as a bitfield, this function extracts a subrange
---  bitfield specified by 'subfieldLen' and 'subfieldStartPos'.
---  For subfieldStartPos, 0 indicates the subfield starts at the
---  least significant bit position of 'n'.
---  If 'signedness' == Signed, this function performs sign-extension
---  to the result subfield.
-subfield :: (Integral a, Integral b, Integral c) => Sign -> c -> a -> b -> b
-subfield signed subfieldLen subfieldStartPos n
- = (n `div` (2^subfieldStartPos)) `modOp` (2^subfieldLen)
- where
- modOp = case signed of
-           Signed   -> signedModulus
-           Unsigned -> mod
--- This function returns 'n', modified by replacing the subfield
---  denoted with (subfieldLen,subfieldStartPos), by 's'.
---  Note that s must satisfy ( 0 <= s <= 2^subfieldLen)
-setSubfield :: (Integral a, Integral b, Integral c) => a -> b -> c -> c -> c
-setSubfield subfieldLen subfieldStartPos n s
- = n + (2^subfieldLen)*(s - (subfield Unsigned subfieldLen subfieldStartPos n))
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/EUs.hs b/ghc/tests/programs/jeff-bug/EUs.hs
deleted file mode 100644 (file)
index 39c7d0d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
--- Execution Units --
-
-module EUs where
-import List
-import qualified PreludeSig as Sig
-import Hawk
-import Trans
-import DLX
-
-type EU i c = Signal Bool -> Signal [(Trans i c)] -> 
-                Signal ([Trans i c],[Trans i c])
-
--- Schedule Combinator ---------------------------------------------------
-schedule :: Register r => [EU i (c r w)] -> EU i (c r w)
-schedule l b = foldl combine end (map ($b) l)
-  where
-  end = lift1 $ \x -> ([],x)
-  combine f g sig = let (ac,rej) = unbundle2 $ f sig
-                        (ac',rej') = unbundle2 $ g rej
-                    in bundle2 (ac *++ ac',rej')
-
--- EUs -----------------------------------------------------------
-
-addUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-addUnit = makeUnit isAdd aluDevice
-
-subUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-subUnit = makeUnit isSub aluDevice
-
-multUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-multUnit = makeDelayedUnit 2 isMul aluDevice
-
-divUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-divUnit = makeDelayedUnit 4 isDiv aluDevice
-
-cmpUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-cmpUnit = makeUnit isCmp aluDevice
-
-jumpUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-jumpUnit = makeUnit isJump (map jumpDevice)
-
-moveUnit :: (Cell c,Register r,Word w,Instruction i) => EU i (c r w)
-moveUnit = makeUnit isMove aluDevice
-
--- Devices -------------------------------------------------------------
-jumpDevice trans@(Trans [dest] op [cond,src1,src2] _) | isJumpOp op =
-        (trans `evalTrans` 
-            (dest,alu func val1 val2))
-   where func = if (getVal cond) == 0 then z else nz
-         val1 = getVal src1
-         val2 = getVal src2
-         z = fstOp op
-         nz = sndOp op
-
-aluDevice x 
-     = map (\t@(Trans [dest] op [src1,src2] x) -> 
-              let aluFunc = aluOp op
-              in (t `evalTrans` (dest,
-                    (alu aluFunc (getVal src1) (getVal src2))))
-           ) x
-
--- Higher-order Constructors   ----------------------------------------------
-makeUnit :: Register r => (Trans i (c r w) -> Bool) -> 
-                          ([Trans i (c r w)] -> [Trans i (c r w)]) -> 
-                          EU i (c r w)
-makeUnit accept unit kill instrs
-   = lift1 (\(k,x) -> let (acceptable,rejects) = partition accept x
-                          (instr,others) = splitAt 1 acceptable
-                   in (unit instr,others ++ rejects)) $ bundle2 (kill,instrs)
-
-
-makeDelayedUnit :: Register r => Int -> (Trans i (c r w) -> Bool) -> 
-                                 ([Trans i (c r w)] -> [Trans i (c r w)]) -> 
-                                 EU i (c r w)
-makeDelayedUnit n f g kill sig = bundle2 (flush n [] kill $ delayN n [] x,y)
-  where
-  (x,y) = unbundle2 $ unit kill sig
-  unit = makeUnit f g
-
-delayN n x s = xs `before` s
-   where xs = take n (repeat x)
diff --git a/ghc/tests/programs/jeff-bug/Hawk.hs b/ghc/tests/programs/jeff-bug/Hawk.hs
deleted file mode 100644 (file)
index 6855e2d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-module Hawk
-   (
-      module Arithmetic
-     ,module Cell
-     ,module Devices
-     ,module HawkIO
-     ,module Memory
-     ,module Register
-     ,module STEx
-     ,module Signal
-     ,module Utilities
-     ,module VRegister
-     ,module Words
-     ,module Instruction
-     ,module Probe
-     ,module PipeReg
-     ,module Init
-   ) where
-
-import Arithmetic
-import Cell
-import Devices
-import HawkIO
-import Memory
-import Register
-import STEx
-import Signal
-import Utilities
-import VRegister
-import Words
-import Instruction
-import Probe
-import PipeReg
-import Init
-
-
--- This serves as the top-level module, with perhaps some instance
--- declarations:
-
-instance (Show a, Show b, Show c, Show d, Show e,Show f) => 
-              Show (a,b,c,d,e,f) where
-       showsPrec n (a,b,c,d,e,f) s = ('(' : ) $
-                                     showsPrec n a $  (',' :) $
-                                     showsPrec n b $  (',' :) $
-                                     showsPrec n c $  (',' :) $
-                                     showsPrec n d $  (',' :) $
-                                     showsPrec n e $  (',' :) $
-                                     showsPrec n f $ ')' : s
diff --git a/ghc/tests/programs/jeff-bug/HawkIO.hs b/ghc/tests/programs/jeff-bug/HawkIO.hs
deleted file mode 100644 (file)
index 595b86b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-module HawkIO
-  (
-        hawkMain
-  ) where
-
-import IO
-import Memory
-
--- Begin Signature ------------------------------------------------------
-{-
-Given a filename, and function from a memory state and a starting point to a 
-an output, "hawkMain" will open the file and parse it and apply the
-function to it.
--}
-
-
-hawkMain :: (Read a,Read w) => String -> ((MemoryState w a,w) -> IO b) -> IO b
--- End Signature ------------------------------------------------------
-
-
-hawkMain filename f = do {ps <- readInitFile filename; f ps}
-
-
-readInitFile :: (Read a,Read w) => String -> IO (MemoryState w a,w)
-readInitFile infile =
- do{ h <- openFile infile ReadMode
-   ; s <- hGetContents h
-   ; return (read s)
-   }
diff --git a/ghc/tests/programs/jeff-bug/IFU.hs b/ghc/tests/programs/jeff-bug/IFU.hs
deleted file mode 100644 (file)
index 5975e0e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-module IFU where
-
-
-import LazyST
-import Ix
-
-import Trans
-import Hawk
-import DLX
-
-import qualified PreludeSig as Signaled
-
-import Word
-
-
-
-ifu (a,b) c d = (unique',id) >< fetch (4,dlx2trans,a,b) c d
-
-unique' ts = runST (
-  do { v <- newSTRef 1
-     ; step1(ts) { mapM (\(Trans x y z i)  -> do { v' <- readSTRef v
-                                  ; writeSTRef v (v'+1)
-                                  ; return $ Trans x y z (loc v':i)
-                                  }) ts
-                 }
-     }
-  )
diff --git a/ghc/tests/programs/jeff-bug/Init.hs b/ghc/tests/programs/jeff-bug/Init.hs
deleted file mode 100644 (file)
index 1957fd8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module Init where
-
-import Signal
-
--- Begin Signature ------------------------------------------------------
-{-
-
-Very often, particularily when operating over pointed domains, each
-type has a particular value that serves well as an inital state. 
-The Init class picks that value out.  For example, the "def" value
-for lists is "[]"
-
--}
-
-class Init a where
-   def :: a
-
-{-instance Init [a]-}
-{-instance Init (Maybe a)-}
-{-instance Init Int-}
-{-instance Init Bool-}
-
-
--- delay a signal using the type's default value as the initializer
-del :: Init a => Signal a -> Signal a
-
-
--- End Signature ------------------------------------------------------
-   
-instance Init [a] where
-   def = []
-
-instance Init (Maybe a) where
-   def = Nothing
-
-instance Init Int where
-   def = 0
-
-instance Init Bool where
-   def = False
-
-del x = delay def x
diff --git a/ghc/tests/programs/jeff-bug/Instruction.hs b/ghc/tests/programs/jeff-bug/Instruction.hs
deleted file mode 100644 (file)
index c732b03..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-module Instruction where
-
-import Arithmetic
-import Memory
-
--- Begin Signature ------------------------------------------------------
-
-{- 
-
-While not knowing the details of a particular instruction set, the
-Instruction class allows code defined in arithmetic and other
-modules to do the right thing for the often-defined instructions.
-
--}
-
-
-class (Show i, Eq i) => Instruction i where
-   
-   -- is a nop instruction?
-   isNoOp :: i -> Bool
-
-   -- is an add instruction?
-   isAddOp :: i -> Bool
-   isSubOp :: i -> Bool
-   isMultOp :: i -> Bool
-   isDivOp :: i -> Bool
-   isJumpOp :: i -> Bool
-   isMemOp :: i -> Bool
-   isLoadOp :: i -> Bool
-   isStoreOp :: i -> Bool
-   isAluOp  :: i -> Bool
-   isCmpOp  :: i -> Bool
-   isBoolOp  :: i -> Bool
-   isMoveOp :: i -> Bool
-
-   -- map the instruction to an AluOp (undefined if not isAluOp)
-   aluOp :: i -> AluOp 
-
-   -- is a conditional instruction?
-   isCond :: i -> Bool
-
-   -- is a parallel instruction? 
-   -- example:  [r1,r2] <- SWAP [r1,r2] can be mapped two instruction
-   isPar :: i -> Bool
-   -- get the first instruction (if isPar)
-   fstOp :: i -> AluOp
-   -- get the second instruction (if isPar)
-   sndOp :: i -> AluOp
-
-   memOp :: i -> LoadStoreOp
-
-   noOp :: i
-
-
--- End Signature ------------------------------------------------------
-
-
-
-
-
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/Main.hs b/ghc/tests/programs/jeff-bug/Main.hs
deleted file mode 100644 (file)
index f56c1ed..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-module Main where
-
-import System
-import Hawk--(hawkMain)
-import DLX
-import DLX_Cell
-import DLX_Reg
-import DLX_Op
-import Processor
-import Signal
-import Trans
-import LazyST
-
-import Probe
-
-main =
- do { clearProbes_UNIX
-    ; args <- getArgs
-    ; case args of
-        [file]           -> run file
-        ["-count", file] -> count file    
-        ["-sample",n,file] -> sample (read n) file    
-        otherwise        -> error "Usage: pgm [-count] file\n"
-    ; return ()
-    }
-
-p :: ((ArrayDesc Int (Instr DLXReg Int), a), Int) -> Signal [Trans DLX_Op (DLX_Cell DLXReg Int)]
---p :: ((ArrayDesc Int (Instr DLXReg Int), a), Int) -> Signal [Trans DLX_Op (DLX_Cell (Virtual DLXReg Int) Int)]
-p = processor
-
-run file =
-     hawkMain file (mapM_ (putStrLn . show) . (view . p))
-count file = 
-     hawkMain file (mapM_ (putStrLn . show) . (cnt. view . p))
-
-sample n file =
-     hawkMain file (mapM_ (putStrLn . pretty) . (take n . view . p))
-
-pretty tss =
-    foldr (\x y -> show x ++ "\n" ++ y) "\n" tss
-
-cnt l = runST (
-  do n <- newSTRef 0
-     mapM (\l -> n+=(length l)) l
-  )
-
-n += v = 
-  do n' <- readSTRef n
-     let v' = v+n'
-     writeSTRef n v'
-     return v'
-
diff --git a/ghc/tests/programs/jeff-bug/Makefile b/ghc/tests/programs/jeff-bug/Makefile
deleted file mode 100644 (file)
index 9f76a7e..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts -cpp -optP-imacros -optPhawk-macros.h
-# Lack sensible input file to test it with.
-SRC_RUNTEST_OPTS += -count /dev/null
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
-
-# DO NOT DELETE: Beginning of Haskell dependencies
-AQ.o : AQ.hs
-AQ.o : ./Utils.hi
-AQ.o : ./Hawk.hi
-Arithmetic.o : Arithmetic.hs
-Arithmetic.o : ./Words.hi
-BoundedSet.o : BoundedSet.hs
-Cell.o : Cell.hs
-Cell.o : ./Register.hi
-Cell.o : ./Words.hi
-DLX.o : DLX.hs
-DLX.o : ./Hawk.hi
-DLX.o : ./Trans.hi
-DLX.o : ./DLX_Cell.hi
-DLX.o : ./DLX_Reg.hi
-DLX.o : ./DLX_Op.hi
-DLX_Cell.o : DLX_Cell.hs
-DLX_Cell.o : ./Cell.hi
-DLX_Cell.o : ./Register.hi
-DLX_Cell.o : ./Words.hi
-DLX_Op.o : DLX_Op.hs
-DLX_Op.o : ./Arithmetic.hi
-DLX_Op.o : ./Memory.hi
-DLX_Op.o : ./Instruction.hi
-DLX_Op.o : ./Probe.hi
-DLX_Reg.o : DLX_Reg.hs
-Devices.o : Devices.hs
-Devices.o : ./TransSig.hi
-Devices.o : ./Trans.hi
-Devices.o : ./PreludeSig.hi
-Devices.o : ./Signal.hi
-Devices.o : ./Words.hi
-Devices.o : ./Register.hi
-Devices.o : ./Arithmetic.hi
-Devices.o : ./Cell.hi
-Devices.o : ./Memory.hi
-Devices.o : ./Utilities.hi
-Devices.o : ./Instruction.hi
-Devices.o : ./StateArray.hi
-EUs.o : EUs.hs
-EUs.o : ./PreludeSig.hi
-EUs.o : ./Hawk.hi
-EUs.o : ./Trans.hi
-EUs.o : ./DLX.hi
-Hawk.o : Hawk.hs
-Hawk.o : ./Arithmetic.hi
-Hawk.o : ./Cell.hi
-Hawk.o : ./Devices.hi
-Hawk.o : ./HawkIO.hi
-Hawk.o : ./Memory.hi
-Hawk.o : ./Register.hi
-Hawk.o : ./STEx.hi
-Hawk.o : ./Signal.hi
-Hawk.o : ./Utilities.hi
-Hawk.o : ./VRegister.hi
-Hawk.o : ./Words.hi
-Hawk.o : ./Instruction.hi
-Hawk.o : ./Probe.hi
-Hawk.o : ./PipeReg.hi
-Hawk.o : ./Init.hi
-HawkIO.o : HawkIO.hs
-HawkIO.o : ./Memory.hi
-IFU.o : IFU.hs
-IFU.o : ./Trans.hi
-IFU.o : ./Hawk.hi
-IFU.o : ./DLX.hi
-IFU.o : ./PreludeSig.hi
-IQ.o : IQ.hs
-Init.o : Init.hs
-Init.o : ./Signal.hi
-Instruction.o : Instruction.hs
-Instruction.o : ./Arithmetic.hi
-Instruction.o : ./Memory.hi
-Main.o : Main.hs
-Main.o : ./Hawk.hi
-Main.o : ./DLX.hi
-Main.o : ./DLX_Cell.hi
-Main.o : ./DLX_Reg.hi
-Main.o : ./DLX_Op.hi
-Main.o : ./Processor.hi
-Main.o : ./Signal.hi
-Main.o : ./Trans.hi
-Main.o : ./Probe.hi
-Memory.o : Memory.hs
-Memory.o : ./Arithmetic.hi
-Memory.o : ./Words.hi
-PipeReg.o : PipeReg.hs
-PipeReg.o : ./Trans.hi
-PipeReg.o : ./Signal.hi
-PipeReg.o : ./Register.hi
-PipeReg.o : ./Instruction.hi
-Predict.o : Predict.hs
-Predict.o : ./Hawk.hi
-Predict.o : ./Trans.hi
-Predict.o : ./TransSig.hi
-Predict.o : ./DLX.hi
-PreludeSig.o : PreludeSig.hs
-PreludeSig.o : ./Signal.hi
-Probe.o : Probe.hs
-Probe.o : ./Arithmetic.hi
-Probe.o : ./Cell.hi
-Probe.o : ./Devices.hi
-Probe.o : ./Memory.hi
-Probe.o : ./Trans.hi
-Probe.o : ./VRegister.hi
-Probe.o : ./Signal.hi
-Probe.o : ./PipeReg.hi
-Probe.o : ./Trans.hi
-Processor.o : Processor.hs
-Processor.o : ./Hawk.hi
-Processor.o : ./Trans.hi
-Processor.o : ./TransSig.hi
-Processor.o : ./PreludeSig.hi
-Processor.o : ./Utils.hi
-Processor.o : ./DLX.hi
-Processor.o : ./Predict.hi
-Processor.o : ./IFU.hi
-Processor.o : ./RS.hi
-Processor.o : ./ROB.hi
-Processor.o : ./EUs.hi
-RAT.o : RAT.hs
-RAT.o : ./Hawk.hi
-RAT.o : ./DLX.hi
-RAT.o : ./Trans.hi
-RAT.o : ./Utils.hi
-RF.o : RF.hs
-RF.o : ./Utils.hi
-RF.o : ./Hawk.hi
-ROB.o : ROB.hs
-ROB.o : ./Hawk.hi
-ROB.o : ./Trans.hi
-ROB.o : ./RF.hi
-ROB.o : ./AQ.hi
-ROB.o : ./RAT.hi
-ROB.o : ./RF.hi
-ROB.o : ./AQ.hi
-ROB.o : ./RAT.hi
-ROB.o : ./ROB_insert.hi
-ROB.o : ./ROB_retire.hi
-ROB.o : ./DLX.hi
-ROB_insert.o : ROB_insert.hs
-ROB_insert.o : ./Hawk.hi
-ROB_insert.o : ./Trans.hi
-ROB_insert.o : ./RF.hi
-ROB_insert.o : ./AQ.hi
-ROB_insert.o : ./RAT.hi
-ROB_insert.o : ./AQ.hi
-ROB_insert.o : ./RAT.hi
-ROB_insert.o : ./RF.hi
-ROB_insert.o : ./Utils.hi
-ROB_insert.o : ./DLX.hi
-ROB_retire.o : ROB_retire.hs
-ROB_retire.o : ./Hawk.hi
-ROB_retire.o : ./Trans.hi
-ROB_retire.o : ./RF.hi
-ROB_retire.o : ./AQ.hi
-ROB_retire.o : ./RAT.hi
-ROB_retire.o : ./RF.hi
-ROB_retire.o : ./AQ.hi
-ROB_retire.o : ./RAT.hi
-ROB_retire.o : ./DLX.hi
-ROB_retire.o : ./Utils.hi
-RS.o : RS.hs
-RS.o : ./Hawk.hi
-RS.o : ./PreludeSig.hi
-RS.o : ./Trans.hi
-RS.o : ./TransSig.hi
-RS.o : ./BoundedSet.hi
-RS.o : ./EUs.hi
-RS.o : ./DLX.hi
-Register.o : Register.hs
-STEx.o : STEx.hs
-Signal.o : Signal.hs
-StateArray.o : StateArray.hs
-StateArray.o : ./Signal.hi
-StateArray.o : ./Memory.hi
-StateArray.o : ./Words.hi
-StateArray.o : ./Memory.hi
-StateArray.o : ./Signal.hi
-StateArray.o : ./Words.hi
-StateArray.o : ./Memory.hi
-Trans.o : Trans.hs
-Trans.o : ./Words.hi
-Trans.o : ./Arithmetic.hi
-Trans.o : ./Cell.hi
-Trans.o : ./Memory.hi
-Trans.o : ./Register.hi
-Trans.o : ./Instruction.hi
-TransSig.o : TransSig.hs
-TransSig.o : ./Instruction.hi
-TransSig.o : ./Signal.hi
-TransSig.o : ./Register.hi
-TransSig.o : ./Words.hi
-TransSig.o : ./Arithmetic.hi
-TransSig.o : ./Trans.hi
-TransSig.o : ./Trans.hi
-TransSig.o : ./Cell.hi
-Utilities.o : Utilities.hs
-Utils.o : Utils.hs
-Utils.o : ./Hawk.hi
-Utils.o : ./Trans.hi
-Utils.o : ./DLX.hi
-VRegister.o : VRegister.hs
-VRegister.o : ./Register.hi
-VRegister.o : ./Cell.hi
-VRegister.o : ./Trans.hi
-Words.o : Words.hs
-# DO NOT DELETE: End of Haskell dependencies
diff --git a/ghc/tests/programs/jeff-bug/Memory.hs b/ghc/tests/programs/jeff-bug/Memory.hs
deleted file mode 100644 (file)
index d37d7d7..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-module Memory where
-
-import Word
-import Ix
-import Maybe
-import Arithmetic
-import Array
-import Words
-
--- Begin Signature -------------------------------------------------
-
-{- 
-   Some types to describe encodings of memory state and the 
-   communication to memory
--}
-
-type ArrayDesc i v = ((i,i),[(i,i,v)])
-
-type InstrMemoryState w i = ArrayDesc w i
-type MemoryState w i = (InstrMemoryState w i,DataMemoryState w)
-type DataMemoryState w = ArrayDesc w w
-
-data WordSize = Byte | HalfWord | FullWord
-          deriving (Eq,Show, Read)
-
-data LoadStoreOp = Load WordSize Sign
-                 | Store WordSize 
-                 | NOP  -- No operation
-           deriving (Eq,Show, Read)
-
-
-
--- Array request
-data ArrReq i a  = ReadArr i |
-                  WriteArr i i a |
-                  WriteFn i (a -> a) | -- modify contents at location i
-                  FreezeArr
-                  deriving Show
-
--- Array response
-data ArrResp i a = ReadVal a |
-                  Written |
-                  WrittenFn a |
-                  ArrayVal (Array i a)
-                  deriving Show
-
--- End Signature -------------------------------------------------------
-
-
diff --git a/ghc/tests/programs/jeff-bug/PipeReg.hs b/ghc/tests/programs/jeff-bug/PipeReg.hs
deleted file mode 100644 (file)
index 7907412..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module PipeReg where
-
-
-import Trans
-import Signal 
-import Register
-import Instruction
-
--- Begin Signature ----------------------------------------------------------
-
-{- 
-  pipeReg is helpful for constructing in pipelines 
--}
-
-data PipeRegCmd = Input | Stall | Kill
-                  deriving (Eq,Ord,Enum,Bounded,Show)
-
-
--- pipeReg t cmd ts , on the first cycle return "t", in later cycles,
--- if cmd=Input then return ts, if cmd=Stall then return the previous
--- value and store the input, if cmd=Kill then return a nop
-
-pipeReg :: (Instruction a, Register b) => 
-           Trans a (c b d) -> Signal PipeRegCmd -> 
-           Signal (Trans a (c b d)) -> Signal (Trans a (c b d))
-
-input           :: Signal PipeRegCmd
-stall           :: Signal PipeRegCmd
-kill            :: Signal PipeRegCmd
-
--- End Signature ----------------------------------------------------------
-
-pipeReg init cmd incoming = out
-  where out = delay init (if' (cmd*==input) then' incoming
-                          else' (if' (cmd*==stall) then' out 
-                          else' (lift0 nop))
-                         )
-
-input = lift0 Input
-stall = lift0 Stall
-kill = lift0 Kill
-
diff --git a/ghc/tests/programs/jeff-bug/Predict.hs b/ghc/tests/programs/jeff-bug/Predict.hs
deleted file mode 100644 (file)
index 66475b3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-module Predict where
-
-import Hawk
-import Trans 
-import qualified TransSig as T
-
-import DLX
-
-annotate x = lift1 (map anno) x
-  where anno t = let Just (Reg PC (Val pc)) = getSrcPC t 
-                 in if isBranch t then addInfo (Reg SpecPC (Val pc)) t
-                    else t
-
diff --git a/ghc/tests/programs/jeff-bug/PreludeSig.hs b/ghc/tests/programs/jeff-bug/PreludeSig.hs
deleted file mode 100644 (file)
index b54bbbe..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-module PreludeSig where
-
-import Prelude(Ord,Bool,Int,($),(.))
-import qualified Prelude as P
-import qualified List
-import Monad
-import Signal
-
--- Begin Signature ----------------------------------------------------
-{- 
-   Functions in this module are functions from the Haskell
-   prelude lifted on Signals
--}
-
-last ::  Signal [a] -> Signal a
-head :: Signal [a] -> Signal a
-tail :: Signal [a] -> Signal [a]
-splitAt :: Signal Int -> Signal [a] -> (Signal [a], Signal [a])
-length :: Signal [a] -> Signal Int
-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 :: 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
-
--- End Signature -----------------------------------------------------
-last = lift1 P.last
-
-head = lift1 P.head
-
-tail = lift1 P.tail
-
-splitAt x y = unbundle2 $ lift2 P.splitAt x y
-
-length = lift1 P.length
-
-max = lift2 P.max
-
-min = lift2 P.min
-
-maximum = lift1 P.maximum
-
-minimum = lift1 P.minimum
-
-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 )
-
-fst = lift1 P.fst
-
-snd = lift1 P.snd
-
--- Begin Signature ----------------------------------------------------
diff --git a/ghc/tests/programs/jeff-bug/Probe.hs b/ghc/tests/programs/jeff-bug/Probe.hs
deleted file mode 100644 (file)
index 89225f6..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-module Probe where
-import IO
-import Arithmetic
-import Cell
-import Devices
-import Memory
-import Trans
-import VRegister
-import Word
-import Signal
-import PipeReg
-
-import Trans
-
-import IOExts
-
-import System
-
--- Begin Signature -------------------------------------------------------
-
-{- 
-   In practice it is nice to be able to place a probe on a signal.
-   Suppose that "s" is a signal.  'probe "s.output" s' has the
-   same meaning as 's' --- but s's contents have been written to 
-   the file "s.output".   This function has turned out to be
-   critical in the development of the Visio Hawk interface.
-
-   Some issues to consider:
-        * probe is a hack --- and it messes with referential 
-          trancparency.  Some Haskell compilers may wreak havoc with
-          probes.  
-       * probe is pretty careful not to change the strictness
-          behavior.
-        * Avoid using probes within unit definitions.  If you duplicate
-          the use of the unit, the output file will be written to 
-          simultaniously by both units instantiations.  Try using probe
-          only at the top-level of your microarchitecture.
-        * Probes are typically stored in a subdirectory "Probes/"
--}
-   
-
-class Show a => Probe a where
-  probe :: String -> Signal a -> Signal a
-  outp :: a -> String
-  probe n (List vals) = List (zipWith (dataOut n) [1..] vals)
-  outp = show
-
--- clear the probes subdirectory in UNIX
-clearProbes_UNIX :: IO ()
-
--- clear the probes subdirectory in Microsoft
-clearProbes_MS :: IO ()
-
-instance (Show a,Show b) => Probe (a,b)
-instance (Show a,Show b,Show c) => Probe (a,b,c)
-instance Probe Bool
-instance Probe Int
-instance Probe Word32
-instance Probe Word64
-instance Probe Char
-instance Probe a => Probe (Maybe a)
-{-instance (Probe a, Probe b) => Probe (Virtual a b )-}
-{-instance Probe PipeRegCmd-}
-{-instance Probe AluOp-}
-{-instance Probe a => Probe [a]-}
-
--- End Signature --------------------------------------------------------
-
-clearProbes_UNIX
-   = do { system "rm -f Probes/*"
-        ; return ()
-        }
-
-clearProbes_MS
-   = do { system "del \\Q Probes\\*.*"
-        ; return ()
-        }
-
-dataOut :: Probe a => String -> Int -> a -> a
-dataOut fileName clock val = unsafePerformIO $
-  do
-    {h <- openFile ("Probes/" ++ fileName) AppendMode;
-    hPutStrLn h (rjustify 3 (show clock) ++ ": " ++ outp val);
-    hClose h;
-    return val}
-
-
-
-instance (Probe a, Probe b) => Probe (Virtual a b ) where
-   outp (Virtual n (Just r)) = "V"++show n ++ "{" ++ outp r ++"}"
-   outp (Virtual n Nothing) = "V"++show n
-   outp (Real r) = outp r
-
-
-instance Probe PipeRegCmd where
-   outp Input = "Ok"
-   outp Kill  = "Kill"
-   outp Stall = "Stall"
-
-instance Probe AluOp where
-  outp (Add _) = "+"
-  outp (Sub _) = "-"
-  outp (Div _) = "/"
-  outp (Mult _) = "*"
-  outp And  = "AND"
-  outp Or  = "OR"
-  outp Xor  = "XOR"
-  outp Not  = "NOT"
-  outp Input1 = "fst"
-  outp Input2 = "snd"
-  outp x = show x
-
-
-
-instance Probe a => Probe [a] where
-   outp [] = "[]"
-   outp l = "[\t" ++ foldr1 (\x y -> x ++ "\n\t" ++ y) (map outp l) ++ "]"
-
-
-
-rjustify n s = reverse (take (max n (length s))
-                             (reverse s ++ repeat ' '))
diff --git a/ghc/tests/programs/jeff-bug/Processor.hs b/ghc/tests/programs/jeff-bug/Processor.hs
deleted file mode 100644 (file)
index 48ddac5..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module Processor where
-
-
-import Hawk
-import Trans 
-import qualified TransSig as T
-import qualified PreludeSig as Signaled
-import Word
-
-
-import Utils
-import DLX
-
-import Predict
-
-import IFU(ifu)
-import RS(rs)
-import ROB(rob)
-import EUs
-
-processor ((pgm,pgmdata),startingPC) =  retired -- retired 
-  where
-
-      (instrs,pc') = ifu (5,pgm) pc ([5,5] `before` space)
-      instrs' = probe "UFO" instrs
-
-      --testTrans = lift1 (\n -> [pcTrans n]) space
-
-      pc   = delay (pcTrans startingPC) npc
-      npc = if' miss then' (Signaled.last retired ) 
-                     else' pc'
-
-      annotated = delay [] (
-                    if' miss then' (lift0 []) 
-                             else' (annotate $ filterOut isNop $ instrs)
-                    )
-
-      (retired,ready,space,miss) = rob 100 (annotated, computed)
-      --miss' = if' miss then' (lift0 $ pcTrans 1) else' (lift0 $ pcTrans 0)
-  
-      computed = rs (150,execUnits) (delay False miss, delay [] ready)
-
-
-execUnits :: Word a => [EU DLX_Op (DLX_Cell (Virtual DLXReg Int) a)]
-execUnits = [addUnit,addUnit,subUnit,jumpUnit,jumpUnit,multUnit,divUnit,cmpUnit,moveUnit]
-
-multUnit' b s = probe "mu_out" out
-        where b' = probe "mu_cnt" b
-              s' = probe "mu_in" s
-              out = multUnit b' s'
diff --git a/ghc/tests/programs/jeff-bug/RAT.hs b/ghc/tests/programs/jeff-bug/RAT.hs
deleted file mode 100644 (file)
index b4e0d07..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module RAT where
-
-import LazyST
-
-import Prelude hiding (read)
-import Hawk
-import DLX
-import qualified Trans
-import Utils
-
-new      :: Register a => ST s (RAT s a b)
-write    :: Register a => RAT s a b -> a -> b -> ST s ()
-remove   :: Register a => RAT s a b -> a -> ST s ()
-read     :: Register a => RAT s a b -> a -> ST s (Maybe b)  
-clear    :: Register a => RAT s a b -> ST s ()
-
-type RAT s a b = (STArray s a (Maybe b),a,a)
-
-clear (xs,x1,x2)
-  = do { mapM (\x -> writeSTArray xs x Nothing) [x1 .. x2]
-       ; return ()
-       }
-
-replace rat (Reg r x) 
-  = do { a <- read rat r
-       ; let res = do { v <- a
-                      ; return (Reg (Virtual v (Just r)) x) 
-                      } 
-                   `catchEx` Reg (Real r) x
-       ; return res
-       }
-replace rat x = return $ convert x
-
-
-new
-  = do { x <- newSTArray (minBound,maxBound) Nothing
-       ; return (x,minBound,maxBound)
-       }
-
-write (xy,_,_) x y = writeSTArray xy x (return y)
-remove (xy,_,_) x = writeSTArray xy x Nothing
-read  (xy,_,_) x = readSTArray xy x
diff --git a/ghc/tests/programs/jeff-bug/RF.hs b/ghc/tests/programs/jeff-bug/RF.hs
deleted file mode 100644 (file)
index c2b6953..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module RF where
-
-import Prelude hiding (read)
-import LazyST
-import Utils
-
-import Hawk
-
-type RF s a b = STArray s a b
-
-new   :: (Register a,Num b) => ST c (RF c a b)
-read  :: Register a => RF s a b -> a -> ST s b
-write :: Register a => RF s a b -> a -> b -> ST s ()
-
-new         = newSTArray (minBound,maxBound) 0
-read        = readSTArray 
-write f x z = if readOnly x then return () 
-              else writeSTArray f x z
diff --git a/ghc/tests/programs/jeff-bug/ROB.hs b/ghc/tests/programs/jeff-bug/ROB.hs
deleted file mode 100644 (file)
index ace8b71..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-module ROB(rob)  where
-import LazyST
-
-import Hawk
-import Trans
-
-import qualified RF 
-import qualified AQ as Q
-import qualified RAT 
-import RF(RF)
-import AQ(AQ)
-import RAT(RAT)
-import ROB_insert(insert)
-import ROB_retire(retire)
-
-import DLX
-
-
-{-
-type ROB s i r w =  Int ->                                         
-              (s [Trans i r w], s [VTrans r w]) ->
-              (s [Trans i r w], s [VTrans r w], s Int,s Bool)
--}
-
---rob :: (Signal s,Register r,Word w) => ROB s StandardOp r w
-rob n (fetched,computed)
-  = unbundle4 $ runST (
-    do { q <- Q.new n
-       ; rat <- RAT.new
-       ; regfile <- RF.new 
-       ; step2(fetched,computed)
-           { update q computed
-           ; instrs <- insert rat q regfile fetched
-           ; (retired,missed) <- retire rat q regfile
-           ; inCase missed $ do { Q.clear q
-                                ; RAT.clear rat
-                                }
-           ; capacity <- Q.space q
-           ; let ready = if missed then [] else instrs
-           ; return (retired,ready,capacity,missed)
-           }
-       }
-   )   
-    where 
-    inCase x y = if x then y else return ()
-
-
--- assumes single register dest ops (not a good assumption)
---update :: (Register r,Word w) => AQ s (VTrans r w) -> [VTrans r w] -> ST s ()
-update q
-  = mapM_ $ \t ->
-    do { let [Reg (Virtual v (Just r)) val] = getDst t 
-       ; Q.insert q v t
-       }
-
-
diff --git a/ghc/tests/programs/jeff-bug/ROB_insert.hs b/ghc/tests/programs/jeff-bug/ROB_insert.hs
deleted file mode 100644 (file)
index d443fd4..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-module ROB_insert(insert)  where
-
-import Hawk
-import Trans
-import LazyST
-
-import qualified RF 
-import qualified AQ as Q
-import qualified RAT
-import AQ(AQ)
-import RAT(RAT)
-import RF(RF) 
-import Utils
-
-
-import DLX
-
-
-{-
-insert :: (Register r,Word w) => 
-     RAT st r Int -> AQ st (VTrans r w) -> 
-     RF st r w -> [Trans StandardOp r w] -> ST st [VTrans r w] 
--}
-insert rat q regfile instrs 
-  = mapM setAndSubst instrs
-   where 
-   setAndSubst t  =
-       do { (reg,alias) <- bind q t
-          ; src <- mapM (RAT.replace rat) $ getSrc t
-          ; let info = map convert $ getInfo t
-          ; let op = getOp t
-          ; RAT.write rat reg alias
-          ; dest <- mapM (RAT.replace rat) $ getDst t
-          ; new <- regRead q regfile $ Trans dest op src info
-          ; Q.enQueue q new
-          ; return $ new
-          }
-   bind q trans = Q.assignAddr q (head . getDstRegs $ trans)
-
-{-
-regRead :: (Register r,Word w) => AQ s (VTrans r w) -> RF s r w -> 
-                         VTrans r w -> ST s (VTrans r w)
--}
-regRead q file t  
-  = do { cells <- mapM subst (getSrcRegs t)
-       ; return $ fillInSrcCells t cells
-       }
-   where 
-   subst (Virtual n x) 
-     = do { v <- liftST $ Q.getQVal q n
-          ; t <- liftEx v
-          ; [Reg _ val] <- return $ getDst t
-          ; return $ Reg (Virtual n x) val
-          }
-       `handle` (Reg (Virtual n x) NotKnown)
-   subst (Real r) 
-     = do { val <- RF.read file r
-          ; return $ Reg (Real r) (Val val)
-          }
-
diff --git a/ghc/tests/programs/jeff-bug/ROB_retire.hs b/ghc/tests/programs/jeff-bug/ROB_retire.hs
deleted file mode 100644 (file)
index b00c78d..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-module ROB_retire(retire)  where
-
-import LazyST
-import Hawk
-import Trans
-
-import qualified RF
-import qualified AQ as Q
-import qualified RAT 
-import RF(RF)
-import AQ(AQ)
-import RAT(RAT)
-
-import DLX
-import Monad
-import Utils
-
-
-
-retire rat q regfile
-  = do { perhaps <- retireable q
-       ; let (retired,missed) = jumpHazard perhaps
-       ; mapM (writeOut regfile rat) retired
-       ; return (cleanUp retired,missed)
-       }
-  where cleanUp = map removeVirtuals
-
---retireable :: Register r => AQ s (Trans i r w) -> ST s [Trans i r w]
-retireable q = Q.deQueueWhile q complete
-
---jumpHazard :: (Register r,Word w) => [VTrans r w] -> ([VTrans r w],Bool)
-jumpHazard [] = ([],False)
-jumpHazard (instr:is) 
-  = if branchMissed instr then ([instr],True)
-       else (instr:is',False || die)
-  where (is',die) = jumpHazard is
-
---branchMissed :: (Register r,Word w) => VTrans r w -> Bool
-branchMissed t = 
-  do { Reg (Virtual _ (Just pc)) (Val x) <- getDstPC t
-     ; Reg (Real spc) (Val y) <- getSpecPC t
-     ; guard $ ispc pc
-     ; guard $ isspecpc spc
-     ; return $ x /= y
-     }
-   `catchEx` False
-
---writeOut :: Register r => RF s r w -> RAT s r Int -> 
---                          VTrans r w -> ST s ()
-writeOut file rat t
-  = do { let [Reg (Virtual vr (Just real)) (Val x)] = getDst t
-       ; RF.write file real x
-       ; a <- RAT.read rat real
-       ; do {v <- a
-            ; guard $ v == vr
-            ; return $ RAT.remove rat real
-            }
-         `catchEx` return ()
-       }
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/RS.hs b/ghc/tests/programs/jeff-bug/RS.hs
deleted file mode 100644 (file)
index dc10d74..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-module RS
-  (
-       rs
-  )  where
-
-import LazyST
-
-import Hawk
-import qualified PreludeSig as Sig
-import Trans
-import qualified TransSig as T
-import qualified BoundedSet as Set
-
-import EUs
-import DLX
-
-
-type RS i c r w = (Int,[EU i (c (VReg r) w)]) ->
-            (Signal Bool,Signal [VTrans r w]) -> 
-            Signal [VTrans r w]
-
-
---rs :: (Register r,Word w) => RS StandardOp c r w
-rs (n,execUnits) (mispredicted,input)
-  = computed
-   where
-   ready = runST (
-        do { set <- Set.new n
-           ; loop wires $ 
-                \(instrs,mispredicted,computed,rejected) -> 
-                           if mispredicted 
-                             then do { Set.clear set
-                                     ; return []
-                                     }
-                             else do { Set.insert set instrs
-                                     ; Set.insert set rejected
-                                     ; broadcast' set computed
-                                     ; ready <- Set.rmSuch set isComputable
-                                     ; return ready
-                                     }
-          }
-        )
-   wires = bundle4 (input,mispredicted,computed,rejected)
-   (computed,rejected) = unbundle2 $ delay ([],[]) $ 
-                         execUnit mispredicted ready
-
-   execUnit = schedule execUnits
-
-broadcast' set computed
-  = do { s <- Set.read set
-       ; let dests = concat $ map getDst computed
-       ; Set.iterateSet set (flip fillInSrcCells dests)
-       }
-
diff --git a/ghc/tests/programs/jeff-bug/Register.hs b/ghc/tests/programs/jeff-bug/Register.hs
deleted file mode 100644 (file)
index 337d1d3..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-module Register where
-
-import Ix
-
-
--- Begin Signature -------------------------------------------------
-{- 
-
-   Register captures the common instances and methods that is 
-   usually required of a register-set like type.  Register 
-   supports PCs, speculative PCs, and predicate registers.
-
--}
-
-
-class (Ix a,Eq a,Ord a,Bounded a,Show a,Read a,Enum a) => Register a where
-
-        -- is the register read only?   for example, in DLX 
-        --  r0 <- r0 + r0  is equivilant to a nop because r0 is read only
-        readOnly :: a -> Bool
-
-        -- pick out the PC register
-        pc :: a 
-
-        -- pick out the speculative PC register
-        specpc :: a 
-
-        ispc :: a -> Bool
-        isspecpc :: a -> Bool 
-
-        -- is the register a predicate register?
-        ispred :: a -> Bool
-
-        readOnly x = False
-        ispred x = False
-
--- End Signature -------------------------------------------------
-        -- ispc and isspec should probably be defined as :
-       --       ispc r = pc == r.  havent tested this though....
diff --git a/ghc/tests/programs/jeff-bug/STEx.hs b/ghc/tests/programs/jeff-bug/STEx.hs
deleted file mode 100644 (file)
index 76ed6fb..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-module STEx where
-import LazyST
-import Monad
-
-infixl 1 `handle`
-
--- Begin Signature ----------------------------------------------------------
-
-{-
-  STEx synthesizes the state and exception monads.  
--}
-
-{-data STEx s a-}
-
-{-instance Monad (STEx s)-}
-{-instance MonadPlus (STEx s)-}
-
--- c `handle` x, return x if c raises an exception
-handle :: STEx a b -> b -> ST a b
-
--- lift an exception or st monad thing or into STEx
-liftEx :: Maybe a -> STEx s a
-liftST :: ST s a -> STEx s a
-
--- raise an exception if Bool is False
-assert :: Bool -> STEx s ()
-
--- the following functions have the same meaning as their corresponding
--- state monad functions
-{-readVarSTEx :: MutVar a b -> STEx a b-}
-{-writeVarSTEx :: MutVar a b -> b -> STEx a ()-}
-{-newVarSTEx :: a -> STEx b (MutVar b a)-}
-
-{-readArraySTEx :: Ix b => MutArr a b c -> b -> STEx a c-}
-{-writeArraySTEx :: Ix b => MutArr a b c -> b -> c -> STEx a ()-}
-{-newArraySTEx :: Ix a => (a,a) -> b -> STEx c (MutArr c a b)-}
-
--- End Signature -----------------------------------------------------------
-
-newtype STEx s a = STEx (ST s (Maybe a))
-
-instance Monad (STEx s) where
-       return = STEx . return . return
-       (STEx x) >>= f 
-             = STEx $ do y <- x
-                         case y of 
-                           Just z -> let STEx z' = f z 
-                                      in z'
-                            Nothing -> return Nothing
-
-instance MonadPlus (STEx s) where
-       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
-
-
-handle (STEx m) x 
-    = do y <- m 
-         case y of 
-           Just z -> return z
-            Nothing -> return x
-
-readVarSTEx v    = liftST $ readSTRef v
-writeVarSTEx v x = liftST $ writeSTRef v x
-newVarSTEx x     = liftST $ newSTRef x
-
-readArraySTEx v n    = liftST $ readSTArray v n
-writeArraySTEx v x n = liftST $ writeSTArray v x n
-newArraySTEx x n     = liftST $ newSTArray x n
-
-{- example 
-f x = do y <- liftEx x
-         v <- newVarSTEx y
-         readVarSTEx v
-
-g x = runST (handle (f x) 2)
--}
-
-assert True = liftEx $ Just ()
-assert False = liftEx $ Nothing
-
diff --git a/ghc/tests/programs/jeff-bug/Signal.hs b/ghc/tests/programs/jeff-bug/Signal.hs
deleted file mode 100644 (file)
index 47d885f..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-module Signal where
-import Monad
-import LazyST
-import List
-import Random
-import IOExts
-import Int
-
--- infixl 9 *!
-
--- Begin Signature -------------------------------------------------------
-{-
-  In essence Hawk is Haskell with built-in Lustre-like signals.  The
-  rest are libraries built upon this structure.  In the event of
-  circuit synthesis, the Signal type and its operators represent
-  the residule of elaboration (partial-evaluation).
--}
-
-{-data Signal a-}
-
-infix  4 *==, */=, *<, *<=, *>=, *>
-infixr 3 *&&
-infixr 2 *||
-infixr 5  *:, *++
-infixl 9 `at`
-infixr 0 `delay`
-infixr 0 `before`
-
-at     :: Signal a -> Int -> a
-
--- [1,3,2] `before` <10 .. > = <1,3,2,10 .. >
-before :: [a] -> Signal a -> Signal a
-
--- loop s f, apply f to s at each cycle, saving the state....
-loop   :: Signal a -> (a -> ST st c)-> ST st (Signal c)
-
-view   :: Signal a -> [a]
-
--- delay x <x1,x2 .. >  = <x,x1,x2 .. >
-delay  :: a -> Signal a -> Signal a
-
--- if,then,else lifted on signals...
-cond   :: Signal Bool -> Signal a -> Signal a -> Signal a
-
--- apply a function pointwise to a signal
-lift0  :: a -> Signal a 
-lift1  :: (a -> b) -> Signal a -> Signal b
-lift2  :: (a->b->c)          -> Signal a -> Signal b -> Signal c
-lift3  :: (a->b->c->d)       -> Signal a -> Signal b -> Signal c -> Signal d
-lift4  :: (a->b->c->d->e)    -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e
-lift5  :: (a->b->c->d->e->f) -> Signal a -> Signal b -> Signal c -> Signal d -> Signal e -> Signal f
-
--- make a single signal of tuples out of tuple of signals
-bundle2 :: (Signal a,Signal b) -> Signal (a,b)
-bundle3 :: (Signal a,Signal b,Signal c) -> Signal (a,b,c)
-bundle4 :: (Signal a,Signal b,Signal c,Signal d) -> Signal (a,b,c,d)
-bundle5 :: (Signal a,Signal b,Signal c,Signal d,Signal e) -> Signal (a,b,c,d,e)
-bundle6 :: (Signal a,Signal b,Signal c,Signal d,Signal e,Signal f) -> 
-           Signal (a,b,c,d,e,f)
-bundleList :: [Signal a] -> Signal [a]
-
--- make a tuple of signals from a signal of tuples
-unbundle2 :: Signal (a,b)       -> (Signal a,Signal b)
-unbundle3 :: Signal (a,b,c)     -> (Signal a,Signal b,Signal c)
-unbundle4 :: Signal (a,b,c,e)   -> (Signal a,Signal b,Signal c,Signal e)
-unbundle5 :: Signal (a,b,c,e,d) -> 
-             (Signal a,Signal b,Signal c,Signal e,Signal d)
-
--- careful using this function.  the size of the list of the input
--- must be the same at each cycle.
-unbundleList :: Signal [a] -> [Signal a]
-
-
--- corresponding functions lifted on signals.
-(*==)           :: Eq a => Signal a -> Signal a -> Signal Bool
-(*/=)           :: Eq a => Signal a -> Signal a -> Signal Bool
-(*<)            :: Ord a => Signal a -> Signal a -> Signal Bool
-(*<=)           :: Ord a => Signal a -> Signal a -> Signal Bool
-(*>)            :: Ord a => Signal a -> Signal a -> Signal Bool
-(*>=)           :: Ord a => Signal a -> Signal a -> Signal Bool
-(*&&)           :: Signal Bool -> Signal Bool -> Signal Bool
-(*||)           :: Signal Bool -> Signal Bool -> Signal Bool
-(*++)           :: MonadPlus m => Signal (m a) -> Signal (m a) -> Signal (m a)
-(*:)            :: Signal a -> Signal [a] -> Signal [a]
-
-
-{-instance Eq a => Eq (Signal a)-}
-{-instance Ord a => Ord (Signal a)-}
-{-instance Enum a => Enum (Signal a)-}
-{-instance Bounded a => Bounded (Signal a)-}
-{-instance Num a => Num (Signal a)-}
-{-instance Real a => Real (Signal a)-}
-{-instance Integral a => Integral (Signal a)-}
-{-instance Functor Signal where-}
-
--- make the trivial superscalar circuit from a scalar circuit by
--- applying it sequentially (left to right) 
-superscalar :: (Signal a -> Signal b) -> Signal [a] -> Signal [b]
-
-{-
-   The following functions will give different streams for every use ----
-   giving a form of non-determinism.
-
-   NOTE that these functions should be used carefully.  They
-   break referential transparency
-
--}
-
-ints :: (Int,Int) -> Signal Int
-integers :: (Integer,Integer) -> Signal Integer
--- End Signature ------------------------------------------------------
-
-
-
--- End Signature -------------------------------------------------------
-
-
-delay i s = [i] `before` s
-cond x y z = lift3 (\x y z -> if x then y else z) x y z
-
-
-
-
-bundle2 (a,b)       = lift2 (,) a b
-bundle3 (a,b,c)     = lift3 (,,) a b c
-bundle4 (a,b,c,d)   = lift4 (,,,) a b c d
-bundle5 (a,b,c,d,e) = lift5 (,,,,) a b c d e
-bundle6 (a,b,c,d,e,f) = lift6 (,,,,,) a b c d e f
-
-bundleList []     = lift0 []
-bundleList (s:ss) = lift2 (:) s (bundleList ss)
-unbundle2 s = (a,b)
-        where a = lift1 (\(x,_) -> x) s
-              b = lift1 (\(_,x) -> x) s
-unbundle3 s = (a,b,c)
-        where a = lift1 (\(x,_,_) -> x) s
-              b = lift1 (\(_,x,_) -> x) s
-              c = lift1 (\(_,_,x) -> x) s
-unbundle4 s = (a,b,c,d)
-        where a = lift1 (\(x,_,_,_) -> x) s
-              b = lift1 (\(_,x,_,_) -> x) s
-              c = lift1 (\(_,_,x,_) -> x) s
-              d = lift1 (\(_,_,_,x) -> x) s
-unbundle5 s = (a,b,c,d,e)
-        where a = lift1 (\(x,_,_,_,_) -> x) s
-              b = lift1 (\(_,x,_,_,_) -> x) s
-              c = lift1 (\(_,_,x,_,_) -> x) s
-              d = lift1 (\(_,_,_,x,_) -> x) s
-              e = lift1 (\(_,_,_,_,x) -> x) s
-
-    -- not particularily safe....
-unbundleList s = map (nth s) szs
-        where sz =  length $ head $ view s
-              szs = [0 .. sz-1]
-              nth s n = lift1 (!!n) s
-
-
-
-instance Eq a => Eq (Signal a) where
-    (==) = error "Cannot compare two signals for equality in general"
-
-instance Ord a => Ord (Signal a) where
-    compare = error "Cannot compare two signals in general"
-    min     = lift2 min
-    max     = lift2 max
-
-instance Enum a => Enum (Signal a) where
-    toEnum               = lift0 . toEnum
-    fromEnum             = error "Trying to convert a Signal to an Enum"
-    enumFrom             = unbundleList . lift1 enumFrom
-    enumFromThen n m     = unbundleList $ lift2 enumFromThen n m
-    enumFromTo n m       = unbundleList $ lift2 enumFromTo n m
-    enumFromThenTo n n' m = unbundleList $ lift3 enumFromThenTo n n' m
-
-instance Bounded a => Bounded (Signal a) where
-    minBound = lift0 minBound
-    maxBound = lift0 maxBound
-
-instance Num a => Num (Signal a) where
-    (+)                = lift2 (+)
-    (-)                = lift2 (-)
-    (*)                = lift2 (*)
-    negate     = lift1 negate
-    fromInteger        = lift0 . fromInteger
-    fromInt    = lift0 . fromInt
-    abs                = lift1 abs
-    signum     = lift1 signum
-
-instance Real a => Real (Signal a) where
-    toRational = error "Trying to convert a signal to a Rational"
-
-instance Integral a => Integral (Signal a) where
-    quot       = lift2 quot
-    rem                = lift2 rem
-    div                = lift2 div
-    mod                = lift2 mod
-    x `quotRem` y      = unbundle2 (lift2 quotRem x y)
-    x `divMod` y       = unbundle2 (lift2 divMod x y)
-    toInteger  = error "Trying to convert a Signal to an Integer"
-    toInt              = error "Trying to convert a Signal to an Int"
-
-
-------------------------------------------------------------------
--- definitons
-
-
-
-(*==) = lift2 (==)
-(*/=) = lift2 (/=)
-(*<)  = lift2 (<)
-(*<=) = lift2 (<=)
-(*>)  = lift2 (>)
-(*>=) = lift2 (>=)
-(*&&) = lift2 (&&)
-(*||) = lift2 (||)
-(*++) = lift2 mplus
-(*:)  = lift2 (:)
-
-data Then = Then
-data Else = Else
-
-if' x Then y Else z = cond x y z
-
-{-
-if' ~(Sig x) Then ~(Sig y) Else ~(Sig z) = Sig (cond x y z)
-  where
-   cond  ~(x:xs) ~(y:ys) ~(z:zs) =
-          let v = if x then y else z
-              vs = cond  xs ys zs
-          in (v:vs)
--}
-
-
-then' = Then
-else' = Else
-
-------------------------------------------------------------------------
--- Specific to List implementation:
-
-
-newtype Signal a = List [a]
-        deriving Show
-
-instance Functor Signal where
-  fmap f ~(List as) = List (map f as)
-
-
-at ~(List l) n = l!!n
-before l ~(List l') = List (l ++ l')
-loop ~(List l) f = do {l' <- mapM f l; return $ List l'}
-
-lift0 x = List (repeat x)
-
-
-----------------------------
--- UGH!!  the lazy pattern matching found in lazyMap  is pretty important when 
--- using signals to communicate with closely timed mutually dependant
--- signal transducers.  Probably, lazy versions of zipWith should be
--- used too.   
----  Byron , Sun Dec  6 16:46:09 PST 1998
-
-lift1 f (List xs) = List $ lazyMap f xs
-     where
-     lazyMap f ~(x:xs) = f x :  lazyMap f xs
-
-lift2 f ~(List as) ~(List bs)
-     = List (zipWith f as bs)
-
-lift3 f ~(List as) ~(List bs) ~(List cs)
-     = List (zipWith3 f as bs cs)
-
-lift4 f ~(List as) ~(List bs) ~(List cs) ~(List ds)
-     = List (zipWith4 f as bs cs ds)
-
-lift5 f ~(List as) ~(List bs) ~(List cs) ~(List ds) ~(List es)
-     = List (zipWith5 f as bs cs ds es)
-
-lift6 f ~(List as) ~(List bs) ~(List cs) ~(List ds) ~(List es) ~(List fs)
-     = List (zipWith6 f as bs cs ds es fs)
-
-view ~(List s) = s
-
-superscalar f (List input) = List (chop lens output)
-  where
-  lens = map length input
-  List output = f (List $ concat input)
-  chop (n:ns) l = let (l',l'') = splitAt n l
-                  in l' : chop ns l''
-
-
-------------------------------------------------------------------------
--- Non-determinism
-
--- integers :: (Integer,Integer) -> Signal Integer
-integers rng = List (unsafePerformIO (do { g <- newStdGen ;
-                                          return (randomRs rng g) }))
-
-ints = fmap toInt . integers . toIntegers
-    where
-    toIntegers (x,y) = (toInteger x,toInteger y)
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/StateArray.hs b/ghc/tests/programs/jeff-bug/StateArray.hs
deleted file mode 100644 (file)
index 0224b01..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-module StateArray ( stateArray,updateArray) where
-
-import List
-import Signal
-import LazyST
-
-import Array
-import Memory
-import Words
-import Array
-import Memory
-import Signal
-import LazyST 
-import Words
-import Memory
-
-{- 
-  these functions accept vectors of Array requests (reads or writes)
-  and services them.
--}
-
-stateArray :: (Ix a, Enum a) => ((a,a),[(a,a,b)]) -> 
-              Signal [ArrReq a b] -> Signal [ArrResp a b]
-
-updateArray :: Ix a => Signal (Array a b) -> 
-                       [(Signal Bool,(Signal a,Signal b))] -> 
-                       Signal (Array a b)
-
-
--- BEWARE --- unless you're really digging deep into the 
--- library you've probably made a wrong turn.
--- Unless you know what you're doing dont be here.
-
-
-stateArray (bounds@(loBound,hiBound),initWrites) input =
-    runST (
-            do arr <- newSTArray bounds initVal
-              initArray arr
-               loop (input) $ \input -> performRequests arr input
-          )
-      where
-      -- Determine what the array should be initialized to; remove
-      --  some of the writes that would initialize the array to the
-      --  same value to speed up the initialization process.
-      contigWrites = contigWriteRanges 
-                      (loBound,hiBound,
-                       error "uninitialized value read from stateArray") 
-                      initWrites
-      maxRange@(_,_,initVal) = maxWriteRange contigWrites
-      reducedInitWrites = removeWriteRange maxRange contigWrites
-
-
-      -- Initialize the array according to 'initWrites'
-      initArray arr
-       = strictSequence [ writeSTArray arr index val |
-                               (lowIdx,hiIdx,val) <- reducedInitWrites,
-                               index <- range (lowIdx,hiIdx) ]
-
-   -- Perform the requested writes, reads, and freezes for each clock cycle
-performRequests arr reqs = performReqs reqs
-         where
-           performReqs reqs
-             = mapM performReq reqs
-
-           performReq (ReadArr i)
-             = do val <- readSTArray arr i
-                  return (ReadVal val)
-
-           performReq (WriteArr loAddr hiAddr val)
-             = do sequence [ writeSTArray arr loc val |
-                               loc <- range (loAddr,hiAddr) ]
-                  return Written
-
-           performReq (WriteFn loc f)
-             = do readVal <- readSTArray arr loc
-                  let writeVal = f readVal
-                  writeSTArray arr loc writeVal
-                  return (WrittenFn writeVal)
-
-           performReq FreezeArr
-             = do arr <- freezeSTArray arr
-                  return (ArrayVal arr)
-
--- Forces each action in its argument list by pattern-matching
---  on the action's output unit. This function is useful in preventing
---  large sequences of actions from being built.
-strictSequence :: Monad m => [m ()] -> m ()
-strictSequence = foldr (\m n -> do { () <- m; n }) (return ())
-
-{-
-       The following functions dealing with write-ranges are
-       needed because the hugs interpreter is very slow in evaluating
-       lazy monadic expressions involving lots of writes to a MutArr.
-       Even simple programs output by dlxgcc ask to have about 16K-words
-       of data to be initialized to zero, while other areas of memory
-       should be initialized to an error value. These routines
-       allow me to isolate what the majority of array locations should
-       be initialized to; I can pass this initialization value to
-       newArr (which is implemented as a primitive) to avoid most
-       of the initial writes.
--}
-
--- Given a write-range and a list of contiguous sorted write ranges,
---  this function outputs a contiguous sorted write range that would
---  result when the first write range is written to an array after the other
---  write ranges are written to an array. Note that the write-range to
---  be inserted must overlap or be contiguous to the write-range list.
-insertWrite :: (Ix i,Enum i) => (i,i,a) -> [(i,i,a)] -> [(i,i,a)]
-insertWrite writeRange []
-  = [writeRange]
-insertWrite writeRange@(lo,hi,v) (first@(firstLo,firstHi,firstVal):rest)
-  -- empty writeRange
-  | hi < lo                    = first : rest
-  -- writeRange is completely less than first element
-  | hi < firstLo               = writeRange : first : rest
-  -- writeRange is completely greater than first element
-  | firstHi < lo               = first : insertWrite writeRange rest
-  -- writeRange completely overlaps the first element
-  | lo <= firstLo && hi >= firstHi = insertWrite writeRange rest
-  -- writeRange partially overlaps the first element; the leading
-  --  edge of writeRange is less than or equal to the leading edge
-  --  of the first element.
-  | lo <= firstLo              = writeRange : (succ hi,firstHi,firstVal) : rest
-  -- writeRange partially overlaps the first element; the leading
-  --  edge of writeRange is greater than the leading edge of the
-  --  first element.
-  | firstLo < lo               = (firstLo,pred lo,firstVal) : insertWrite writeRange ((lo,firstHi,firstVal):rest)
-  | True                       = error "bug in insertWrite"
-
-
--- Given a write range 'writeRange' and a list of write-ranges 'ranges' whose
---  elements are subranges of 'writeRange', this function outputs a contiguous,
---  non-overlapping list of write-ranges that is equivalent to writing
---  'writeRange' to an array, followed by writing the elements of 'ranges'
---  in order to the same array.
-contigWriteRanges :: (Ix i,Enum i) => (i,i,a) -> [(i,i,a)] -> [(i,i,a)]
-contigWriteRanges writeRange ranges
-  = foldr insertWrite [writeRange] (reverse ranges)
-
-
--- Finds the largest write-range in a list of write-ranges.
-maxWriteRange :: (Ix i,Enum i) => [(i,i,a)] -> (i,i,a)
-maxWriteRange
-  = foldr1 (\a@(loA,hiA,_) b@(loB,hiB,_) ->
-               if rangeSize (loA,hiA) >= rangeSize (loB,hiB)
-                 then a
-                 else b)
-
--- removes a given write-range from a list of write-ranges
-removeWriteRange :: (Ix i,Enum i) => (i,i,a) -> [(i,i,a)] -> [(i,i,a)]
-removeWriteRange (lo,hi,_) = filter (\(loA,hiA,_) -> lo /= loA || hi /= hiA)
-         
-
-
---  Updates an array Signal, given a static list of updaters. Each
---  updater consists of a Boolean enable signal, and a signal pair
---  of the update address and update value.
-updateArray arr updaters
-  = foldr (\(updateEnable,updater) prevArray ->
-               if' updateEnable 
-                   then' (lift2 (//) prevArray (singleton (bundle2 updater)))
-                  else' prevArray
-          )
-         arr
-         updaters
-    where singleton = lift1 $ \x -> [x]
-
-
diff --git a/ghc/tests/programs/jeff-bug/Trans.hs b/ghc/tests/programs/jeff-bug/Trans.hs
deleted file mode 100644 (file)
index 62cb987..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-module Trans where
-
-import List
-import Words
-import Word
-import Arithmetic
-import Cell
-import Memory
-import Register
-import Instruction
-
--- Begin Signature ----------------------------------------------------------
-{-
-
-  We have used Transactions to represent instructions w/ their data.
-  These have been particularly useful in pipelined and out-of-order 
-  superscalar machines.  
-
--}
-
-data Trans i c = Trans [c] i [c] [c]
-                  deriving (Eq,Show,Read)
-
--- Convention: if Trans d op s i
--- we say that d is the destination, op is the instruction
--- s is the source, and i is the information
-
--- return a nop-like transaction
-nop             :: (Instruction i,Register r) => Trans i (c r w)
-
--- return a PC transaction
-pcTrans         :: (Cell c,Instruction i,Register r, Word w) => 
-                       w -> Trans i (c r w)
-
-isNop           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isAdd           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isAlu           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isCmp           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isBool          :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isSub           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isMul           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isDiv           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isJump          :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isMove          :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isMem           :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isLoad          :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isStore         :: (Instruction i,Register r) => Trans i (c r w) -> Bool
-isBranch        :: (Cell c,Register r,Word w) => Trans i (c r w) -> Bool
-isComputable    :: (Cell c,Register r,Word w) => Trans i (c r w) -> Bool
-
--- update destination fields
-updDst          :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
--- apply a function to the destination fields
-repDst          :: Register r => (c r w -> c r w -> Bool) ->
-                                 Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
--- add to the destination
-addDst          :: Register r => c r w -> Trans i (c r w) -> Trans i (c r w)
-
--- get the destination
-getDst          :: Register r => Trans i (c r w) -> [c r w]
-
--- replace the dest fields
-putDst          :: Register r => Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
-
-updSrc          :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> [c r w] -> Trans i (c r w)
-addSrc          :: Register r => c r w -> Trans i (c r w) -> Trans i (c r w)
-getSrc          :: Register r => Trans i (c r w) -> [c r w]
-putSrc          :: Register r => Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
-addInfo         :: Register r => c r w -> Trans i (c r w) -> Trans i (c r w)
-getInfo         :: Register r => Trans i (c r w) -> [c r w]
-putInfo         :: Register r => Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
-getOp           :: Trans i (c r w) -> i
-putOp           :: Trans i (c r w) -> i -> Trans i (c r w)
-
-
--- return the speculative PC from the info area
-getSpecPC       :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Maybe (c r w)
-
--- return the PC from the destination area
-getDstPC        :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Maybe (c r w)
-getSrcPC        :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Maybe (c r w)
-
--- return the instructions location from memory from the destination
--- area
-getLoc          :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Maybe (c r w)
-
--- get register references
-getSrcRegs      :: (Cell c,Register r,Word w) => Trans i (c r w) -> [r]
-getDstRegs      :: (Cell c,Register r,Word w) => Trans i (c r w) -> [r]
-
--- get register reference values
-getSrcRegVals   :: (Cell c,Register r,Word w) => Trans i (c r w) -> [w]
-putDstRegVal    :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> w -> Trans i (c r w)
-
--- evalTrans t (c,w) update the destination fields in t with w if they match
--- c
-evalTrans       :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> (c r w,Maybe w) -> Trans i (c r w)
-
--- is there a Read-After-Write hazard between two transactions?
-rawHazard       :: (Cell c,Register r,Word w) => 
-                   (Trans i (c r w),Trans i (c r w)) -> Bool
-
--- bypass t t2 source operands of t with the dest operands of t2
--- if the references match.
-
-bypass          :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Trans i (c r w) -> Trans i (c r w)
-
--- bypass the dest. operands instead of the source operands.
-bypassDst       :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Trans i (c r w) -> Trans i (c r w)
-
--- bypass with multiple transactions
-bypassMany      :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> [Trans i (c r w)] -> Trans i (c r w)
-bypassDstMany   :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> [Trans i (c r w)] -> Trans i (c r w)
-
--- bypass to multiple transaction with multiple transactions
-broadcast       :: (Cell a, Register b, Word c) => 
-                   [Trans e (a b c)] -> [Trans e (a b c)] -> [Trans e (a b c)]
-
---source operands and dest operands all filled in?
-complete        :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> Bool
-
--- if (x,y) = readyToRetire z, then
--- x is the lift of transactions that are "complete"
-readyToRetire   :: (Cell c,Register r,Word w) => 
-                   [Trans i (c r w)] -> ([Trans i (c r w)],[Trans i (c r w)])
-
-
--- if (x,y) = readyToCompute z, then
--- x is the lift of transactions with all of their source operands filled in
-readyToCompute  :: (Cell c,Register r,Word w) => 
-                   [Trans i (c r w)] -> ([Trans i (c r w)],[Trans i (c r w)])
-
-
-updatePC        :: Register r => c r w -> Trans i (c r w) -> Trans i (c r w)
-
-
-getPredicate   :: (Cell c,Register r,Word w) => Trans i (c r w) -> c r w
-isPredicated   :: (Cell c,Register r,Word w) => Trans i (c r w) -> Bool
-
-evalPredicate  :: (Cell c,Register r,Word w) => Trans i (c r w) -> w
-
--- End Signature ----------------------------------------------------------
-
-
-updCells        :: (Cell c,Register r,Word w) => [c r w] -> [c r w] -> [c r w]
-repCells        :: Register r => (c r w -> c r w -> Bool) ->
-                                  [c r w] -> [c r w] -> [c r w]
-
--- perhaps these functions can go?
-filterDst       :: Register r => (c r w -> Bool) -> Trans i (c r w) -> [c r w]
-
-fillInCells     :: (Cell c,Register r,Word w) => [c r w] -> [c r w] -> [c r w]
-
-fillInSrcCells  :: (Cell c,Register r,Word w) => 
-                   Trans i (c r w) -> [c r w] -> Trans i (c r w)
-
-filterOut       :: (Register r,Functor m) => 
-                   (Trans i (c r w) -> Bool) -> m [Trans i (c r w)] -> 
-                   m [Trans i (c r w)]
-
-
-
-nop = Trans [] noOp [] []
-
-pcTrans addr = Trans [putVal pcNothing (Just addr)] noOp [] []
-isNop t = isNoOp (getOp t)
-isAdd t = isAddOp (getOp t)
-isAlu t = isAluOp (getOp t)
-isCmp t = isCmpOp (getOp t)
-isBool t = isBoolOp (getOp t)
-isSub t = isSubOp (getOp t)
-isMul t = isMultOp (getOp t)
-isDiv t = isDivOp (getOp t)
-isJump t = isJumpOp (getOp t)
-isMem t = isMemOp (getOp t)
-isMove t = isMoveOp (getOp t)
-isLoad t = isLoadOp (getOp t)
-isStore t = isStoreOp (getOp t)
-
-isBranch (Trans d _ _ _) = any search d where
-        search r = if isReg r then ispc (getReg r)
-                   else False
-
-isComputable = and . map isComputed . getSrc
-
-
-
-
-repCells replFunc cells replacements
-  = map (\cell -> foldr bypassCell cell replacements) cells
-    where
-      bypassCell bypassed argCell
-       = if replFunc bypassed argCell
-           then bypassed
-           else argCell
-
-
-updCells cells bypassCells = repCells cellHazard cells bypassCells
-
-
-repDst repFunc (Trans d o s i) cells = Trans (repCells repFunc d cells) o s i
-updDst = repDst cellHazard
-addDst c t = putDst t (c:getDst t)
-getDst (Trans d o s i) = d
-putDst (Trans _ o s i) d = Trans d o s i
-
-updSrc (Trans d o s i) cells = Trans d o (updCells s cells) i
-addSrc c t = putSrc t (c:getSrc t)
-getSrc (Trans d o s i) = s
-putSrc (Trans d o _ i) s = Trans d o s i
-
-addInfo c t = putInfo t (c:getInfo t)
-getInfo (Trans d o s i) = i
-putInfo (Trans d o s _) i = Trans d o s i 
-
-getOp (Trans d o s i) = o
-putOp (Trans d _ s i) o = Trans d o s i
-
-getSpecPC      = find isSpecPC . getInfo
-getDstPC       = find isPC . getDst
-getSrcPC       = find isPC . getSrc
-getLoc         = find isLoc . getInfo
-
-getSrcRegs t = map getReg $ filter isReg $ getSrc t
-getDstRegs t = map getReg $ filter isReg $ getDst t
-
-getSrcRegVals t = map getVal $ 
-                       filter isReg $ getSrc t
-
-{-
-putDstRegVal (Trans [Reg r _] o s i) n
-                       = Trans [Reg r (Val n)] o s i
--}
-putDstRegVal (Trans [r] o s i) n
-                       = Trans [putVal r (Just n)] o s i
-
-getPredicate (Trans _ _ l _) = last (filter isPred l)
-
-getPredicate' t = if isPredicated t then Just (getPredicate t)
-                  else Nothing
-
-isPredicated (Trans _ _ x _) 
-    = case filter isPred  x of
-               [] -> False
-                _ -> True
-
-
-evalPredicate t =
-   case getPredicate' t of
-              Just c -> if isAss c then getVal c
-                   --     else error $ "evalPredicate" ++ show t
-                        else error "evalPredicate" 
-              Nothing -> 1
-
-bypass tran bypassT = --updSrc tran $ getDst bypassT
-                      if evalPredicate bypassT /= 0
-                          then updSrc tran $ getDst bypassT
-                          else tran
-
-bypassDst tran bypassT = if evalPredicate bypassT /= 0 
-                            then updDst tran $ getDst bypassT
-                            else tran
-
-bypassMany tran bypassT = foldr (\a b -> b `bypass` a) tran bypassT
-
-bypassDstMany tran bypassT = foldr (\a b -> b `bypassDst` a) tran bypassT
-
-broadcast xs ys = map (`bypassMany` ys) xs
-
-{- PRE-predication
-bypass tran bypassT = updSrc tran $ getDst bypassT
-
-bypassDst tran bypassT = updDst tran $ getDst bypassT
-
-bypassTrans tran bypassT = foldr (\a b -> b `bypass` a) tran bypassT
-
-broadcast xs ys = map (`bypassTrans` ys) xs
--}
-
-
-readyToRetire  = partition $ and . map isComputed . getDst
-
-complete = and . map isComputed . getDst
-
-readyToCompute =  partition $ and . map isComputed . getSrc
-
-tran `evalTrans` (dest,val) = repDst sameLoc tran [putVal dest val]
-
-rawHazard (preceeding,following)
-  = or [ cellHazard precCell followCell |
-          precCell <- getDst preceeding,
-          followCell <- getSrc following]
-
-filterDst f (Trans d _ _ _) = filter f d
-
---added 19 Nov
-filterOut f = fmap (filter $ not . f)
-
-fillInCells cells bypassCells
-  = repCells (\x y -> (not $ isAss y) && cellHazard x y) cells bypassCells
-  
-fillInSrcCells (Trans d o s i) cells = Trans d o (fillInCells s cells) i
-
-fillInCells' cells bypassCells
-  = repCells cellHazard cells bypassCells
-  
-fillInSrcCells' (Trans d o s i) cells = Trans d o (fillInCells' s cells) i
-  
--- TEMPORARY --- NOT ROBUST!
-updatePC c (Trans _ o s i) = Trans [c] o s i
-
-
-
-
-
-
-
-
-
-
diff --git a/ghc/tests/programs/jeff-bug/TransSig.hs b/ghc/tests/programs/jeff-bug/TransSig.hs
deleted file mode 100644 (file)
index afe0f8e..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-module TransSig
-  (     Trans(..)
-
-       ,nop
-
-       ,isNop
-       ,isAdd
-       ,isAlu
-       ,isCmp
-       ,isBool
-       ,isSub
-       ,isMul
-       ,isDiv
-       ,isJump
-       ,isMem
-       ,isMove
-       ,isLoad
-       ,isStore
-       ,isBranch
-
-       ,updCells
-       ,repCells
-
-       ,updDst
-        ,repDst
-        ,addDst
-       ,getDst
-        ,putDst
-
-       ,updSrc
-        ,addSrc
-        ,getSrc
-        ,putSrc
-
-       ,addInfo
-        ,getInfo
-        ,putInfo
-
-        ,getOp
-       ,putOp
-
-       ,getSpecPC
-       ,getDstPC
-       ,getSrcPC
-        ,getLoc 
-
-        ,getSrcRegs 
-        ,getDstRegs
-        ,getSrcRegVals 
-        ,putDstRegVal
-
-        ,bypass
-       ,bypassDst
-       ,bypassMany
-       ,bypassDstMany
-       ,broadcast
-
-       ,readyToRetire 
-       ,complete
-       ,readyToCompute
-
-       ,evalTrans
-        ,rawHazard
-       ,filterDst
-
-        ,pcTrans
-        , getPredicate
-        , isPredicated 
-        , evalPredicate
-
-
-
-  ) where
-
-import List
-import Instruction
-import Signal
-import Register
-import Words
-import Arithmetic
-import qualified Trans as T
-import Trans(Trans(..))
-import Cell
-
-
--- Begin Signature ---------------------------------------------------
-{- 
-  The functions in TransSig are identical to Trans, except
-  that they have been lifted on Signals
--}
-
-
-nop            :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w))
-isNop          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isAdd          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isAlu          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isCmp          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isBool         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isSub          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isMul          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isDiv          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isJump         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isMem          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isMove         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isLoad         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isStore                :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-isBranch       :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-updCells       :: (Cell c, Word w, Register r) => 
-                    Signal [c r w] -> Signal [c r w] -> Signal [c r w]
-repCells       :: (Cell c, Word w, Register r) => 
-                    (c r w -> c r w -> Bool) -> 
-                   Signal [c r w] -> Signal [c r w] -> Signal [c r w]
-
-updDst         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-repDst         :: (Instruction i,Cell c,Register r,Word w) => 
-                   (c r w -> c r w -> Bool) ->
-                  Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-addDst         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (c r w) -> Signal (Trans i (c r w)) -> 
-                   Signal (Trans i (c r w))
-getDst         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w]
-putDst         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-updSrc         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-addSrc         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (c r w) -> Signal (Trans i (c r w)) -> 
-                   Signal (Trans i (c r w))
-getSrc         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w]
-putSrc         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-
-addInfo                :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (c r w) -> Signal (Trans i (c r w)) -> 
-                   Signal (Trans i (c r w))
-getInfo                :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w]
-putInfo                :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [c r w] -> 
-                   Signal (Trans i (c r w))
-
-getOp          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal i
-putOp          :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal i -> 
-                   Signal (Trans i (c r w))
-
-getSpecPC      :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal (Maybe (c r w))
-getDstPC       :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal (Maybe (c r w))
-getSrcPC       :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal (Maybe (c r w))
-getLoc         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal (Maybe (c r w))
-
-getSrcRegs     :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [r]
-getDstRegs     :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [r]
-getSrcRegVals  :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal [w]
-putDstRegVal   :: (Instruction i,Cell c,Register r,Word w) =>  
-                   Signal (Trans i (c r w)) -> Signal w -> 
-                   Signal (Trans i (c r w))
-bypass         :: (Instruction i,Cell c,Register r,Word w) =>
-                   Signal (Trans i (c r w)) -> Signal (Trans i (c r w)) -> 
-                   Signal (Trans i (c r w))
-bypassDst      :: (Instruction i,Cell c,Register r,Word w) =>
-                   Signal (Trans i (c r w)) -> Signal (Trans i (c r w)) ->
-                  Signal (Trans i (c r w))
-bypassMany     :: (Instruction i,Cell c,Register r,Word w) =>
-                   Signal (Trans i (c r w)) -> Signal [Trans i (c r w)] ->
-                  Signal (Trans i (c r w))
-bypassDstMany  :: (Instruction i,Cell c,Register r,Word w) =>
-                   Signal (Trans i (c r w)) -> Signal [Trans i (c r w)] ->
-                  Signal (Trans i (c r w))
-broadcast ::       (Cell a, Register b, Word c) => 
-                   Signal [Trans e (a b c)] -> Signal [Trans e (a b c)] -> 
-                   Signal [Trans e (a b c)]
-
-
-readyToRetire  :: (Instruction i,Cell c,Register r,Word w) =>
-                   Signal [Trans i (c r w)] -> 
-                   Signal ([Trans i (c r w)],[Trans i (c r w)])
-complete       :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal Bool
-readyToCompute :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal [Trans i (c r w)] -> 
-                   Signal ([Trans i (c r w)],[Trans i (c r w)])
-
-evalTrans      :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal (Trans i (c r w)) -> Signal (c r w, Maybe w) -> 
-                   Signal (Trans i (c r w))
-rawHazard      :: (Instruction i,Cell c,Register r,Word w) => 
-                   (Signal (Trans i (c r w)),Signal (Trans i (c r w))) 
-                   -> Signal Bool
-filterDst      :: (Instruction i,Cell c,Register r,Word w) => 
-                   (c r w -> Bool) -> Signal (Trans i (c r w)) -> 
-                  Signal [c r w]
-
-pcTrans         :: (Instruction i,Cell c,Register r,Word w) => 
-                   Signal w -> Signal (Trans i (c r w))
-
-
-
-getPredicate   :: (Cell c,Register r,Word w) => 
-                  Signal (Trans i (c r w)) -> Signal (c r w)
-isPredicated   :: (Cell c,Register r,Word w) => 
-                  Signal (Trans i (c r w)) -> Signal Bool
-
-evalPredicate   :: (Cell c,Register r,Word w) => 
-                  Signal (Trans i (c r w)) -> Signal w
-
-
--- End Signature -------------------------------------------------------------
-nop                    = lift0 $ T.nop
-
-isNop                  = lift1 T.isNop
-isAdd                  = lift1 T.isAdd
-isAlu                  = lift1 T.isAlu
-isCmp                  = lift1 T.isCmp
-isBool                 = lift1 T.isBool
-isSub                  = lift1 T.isSub
-isMul                  = lift1 T.isMul
-isDiv                  = lift1 T.isDiv
-isJump                 = lift1 T.isJump
-isMem                  = lift1 T.isMem
-isMove                 = lift1 T.isMove
-isLoad                 = lift1 T.isLoad
-isStore                        = lift1 T.isStore
-isBranch               = lift1 T.isBranch
-
-updCells               = lift2 T.updCells
-repCells f             = lift2 $ T.repCells f
-
-updDst                 = lift2 T.updDst
-repDst f               = lift2 $ T.repDst f
-addDst                 = lift2 T.addDst
-getDst                 = lift1 T.getDst
-putDst                 = lift2 T.putDst
-
-updSrc                 = lift2 T.updSrc
---repSrc               =
-addSrc                 = lift2 T.addSrc
-getSrc                 = lift1 T.getSrc
-putSrc                 = lift2 T.putSrc
-
-addInfo                        = lift2 T.addInfo
-getInfo                        = lift1 T.getInfo
-putInfo                        = lift2 T.putInfo
-
-getOp                  = lift1 T.getOp
-putOp                  = lift2 T.putOp
-
-getSpecPC              = lift1 T.getSpecPC
-getDstPC               = lift1 T.getDstPC
-getSrcPC               = lift1 T.getSrcPC
-getLoc                 = lift1 T.getLoc
-
-getSrcRegs             = lift1 T.getSrcRegs
-getDstRegs             = lift1 T.getDstRegs
-getSrcRegVals          = lift1 T.getSrcRegVals
-putDstRegVal           = lift2 T.putDstRegVal
-
-evalTrans              = lift2 T.evalTrans
-rawHazard ts           = lift1 T.rawHazard (bundle2 ts)
-
-bypass                 = lift2 T.bypass
-bypassDst              = lift2 T.bypassDst
-bypassMany             = lift2 T.bypassMany
-bypassDstMany          = lift2 T.bypassDstMany
-broadcast              = lift2 T.broadcast
-
-readyToRetire          = lift1 T.readyToRetire
-complete               = lift1 T.complete
-readyToCompute         = lift1 T.readyToCompute
-
-filterDst f            = lift1 $ T.filterDst f
-
-
-pcTrans = lift1 T.pcTrans
-
--- Predicated instructions
-getPredicate = lift1 T.getPredicate
-isPredicated = lift1 T.isPredicated
-evalPredicate = lift1 T.evalPredicate
diff --git a/ghc/tests/programs/jeff-bug/Utilities.hs b/ghc/tests/programs/jeff-bug/Utilities.hs
deleted file mode 100644 (file)
index 6b0ba79..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module Utilities where
-
-import Maybe
-
-
--- Begin Signature -------------------------------------------------
-
-infixr 1 `catchEx`
-
-catchEx :: Maybe a -> a -> a
-(><) :: (a -> b,c -> d) -> (a,c) -> (b,d)
-
--- End Signature -------------------------------------------------
-
-catchEx = flip fromMaybe
-(f,g) >< (x,y) = (f x, g y)
-
-
diff --git a/ghc/tests/programs/jeff-bug/Utils.hs b/ghc/tests/programs/jeff-bug/Utils.hs
deleted file mode 100644 (file)
index ed7b872..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-module Utils where
-
-import Hawk
-import Trans
-import DLX
-import Maybe
-import LazyST
-
---(f,g) >< (x,y) = (f x, g y)
-
-
-
-unique x = x
-{-
-unique (Sig xs) = runST (
-  do { x <- newSTRef 0
-     ; l <- mapM (anno x) xs
-     ; return $ Sig l
-     }
-  )
-  where anno x xs = mapM (anno' x) xs 
-        anno' x y = do { v <- readSTRef x 
-                       ; writeSTRef x (v+1)
-                       ; return $ addInfo (Loc (Word v)) y
-                       }
--}
-
-convert (Loc y) = Loc y
-convert (Imm y)    = Imm y
-convert (Reg r x) = Reg (Real r) x
-
-convertBack (Loc y) = Loc y
-convertBack (Imm y)    = Imm y
-convertBack (Reg (Real r) x) = Reg r x
-convertBack (Reg (Virtual _ (Just r)) x) = Reg r x
-convertBack t@(Reg (Virtual r Nothing) x) = error "ConvertBack"
-
-removeVirtuals t = Trans dest op src info
-      where src = map convertBack $ getSrc t
-            dest = map convertBack $ getDst t
-            info = map convertBack $ getInfo t
-            op = getOp t
-
diff --git a/ghc/tests/programs/jeff-bug/VRegister.hs b/ghc/tests/programs/jeff-bug/VRegister.hs
deleted file mode 100644 (file)
index 3d25f34..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-module VRegister where
-
-import Ix
-import Register
-import Cell
-import Trans
-
-
--- Begin Signature -------------------------------------------------
-
-{- 
-  Given two register sets, VRegister facilitates the mapping
-  between them.  See the P6 model for an example of register renaming
-  with VRegister
--}
-
-data Virtual r v 
-   = Real r
-   | Virtual v (Maybe r)
-        deriving (Read,Show,Ord)
-
-isReal         :: Virtual a b -> Bool
-isVirtual      :: Virtual a b -> Bool
-
-{-instance (Ix a, Ix b,Bounded a,Bounded b) => Ix (Virtual a b)-}
-{-instance (Enum a,Bounded a,Enum b,Bounded b) => Enum (Virtual a b)-}
-{-instance (Bounded a,Bounded b) => Bounded (Virtual a b)-}
-{-instance (Register a,Register b) => Register (Virtual a b)-}
-{-instance Eq Virtual r v-}
-{-instance Register Int-}
-
-
-
-
--- End Signature -------------------------------------------------
-
-instance Register Int where
-        pc = error "Int does not have a PC"
-        specpc = error "Int does not have a SPECPC"
-        isspecpc _ = False
-        ispc _ = False
-
-
-
-virtual x = Virtual x Nothing
-
-isReal (Real _) = True
-isReal  _       = False
-
-isVirtual (Virtual _ _) = True
-isVirtual  _       = False
-
------------------------Instances--------------------------------
-
-instance (Eq a,Eq b) => Eq (Virtual a b) where
-  (Virtual x _) == (Virtual y _) = x == y 
-  (Real x) == (Real y) = x == y 
-  _ == _  = False
-  (Virtual x _) /= (Virtual y _) = x /= y 
-  (Real x) /= (Real y) = x /= y 
-  _ /= _  = True
-
-instance (Register a,Register b) => Register (Virtual a b) where
-  readOnly (Virtual v x) = readOnly v
-  readOnly (Real v) = readOnly v
-  ispc (Virtual n (Just x)) = ispc x
-  ispc (Real x) = ispc x
-  isspecpc (Virtual n (Just x)) = isspecpc x
-  isspecpc (Real x) = isspecpc x
-  pc = Real pc
-  specpc = Real specpc
-
-
-instance (Ix a, Ix b,Bounded a,Bounded b) => Ix (Virtual a b) where
---  range :: (a,a) -> [a]
-    range (Real r, Real r')       = map Real $ range (r,r')
-    range (Virtual r _, Virtual r' _) = map (\x -> Virtual x Nothing) $ range (r,r')
-    range (Real r, Virtual r' _) = range1 ++ range2
-         where range1 = map Real $ range (r,maxBound)
-               range2 = map (\x -> Virtual x Nothing) $ range (minBound,r')
-    range (Virtual r _, Real r') = []
---  index :: (a,a) -> a -> Int
-    index (Virtual r _,Virtual r' _) (Virtual r'' _) = index (r,r') r''
-    index (Real r,Real r') (Real r'') = index (r,r') r''
-    index (Virtual r _,Virtual r' _) _ = error "index: Real Reg out of range"
-    index (Real r,Real r') _ = error "index: Virtual Reg out of range"
-    index (Virtual r _,Real r') _ = error "index: Virtual Reg out of range"
-    index (Real r,Virtual r' _) (Real x) = index(r,maxBound) x
-    index (Real r,Virtual r' _) (Virtual x _) = index(minBound,r') x
---  inRange :: (a,a) -> a -> Bool
-    inRange (Virtual x _,Virtual y _) (Virtual z _) = inRange (x,y) z
-    inRange (Real x,Real y) (Real z) = inRange (x,y) z
-    inRange (Virtual x _,Virtual y _) _ = False
-    inRange (Real x,Real y) _ = False
-    inRange (Virtual x _,Real y) _ = False
-    inRange (Real y,_) (Real r) = inRange (y,maxBound) r
-    inRange (_,Virtual y _) (Virtual r _) = inRange (minBound,y) r
-
-
-instance (Enum a,Bounded a,Enum b,Bounded b) => Enum (Virtual a b) where
---  toEnum :: Int -> a
---  toEnum = Virtual . toEnum
-    toEnum x = error "Virtual.toEnum"
-
---  fromEnum :: a -> Int
---  fromEnum (Virtual x) = fromEnum x
-    fromEnum x = error "Virtual.fromEnum"
-
---  enumFrom :: a -> [a]
-    enumFrom (Virtual x _) = map virtual (enumFrom x)
-    enumFrom (Real x) = map Real (enumFrom x) ++ enumFrom (virtual minBound)
-
---  enumFromThen :: a -> a -> [a]
-    enumFromThen  _ _ = error "Virtual.enumFromThen"
-
---  enumFromTo :: a -> a -> [a]
-    enumFromTo (Virtual x _) (Virtual y _)  
-              = map virtual (enumFromTo x y)
-    enumFromTo (Real x) (Real y)  
-              = map Real (enumFromTo x y)
-    enumFromTo (Real x) (Virtual y z)  
-              = enumFrom (Real x) ++ 
-                enumFromTo (Virtual minBound Nothing) (Virtual y z)
---  enumFromThenTo :: a -> a -> a -> [a]
-    enumFromThenTo _ _ _ = error "Virtual.enumFromThenTo"
-
-instance (Bounded a,Bounded b) => Bounded (Virtual a b) where
--- minBound :: a
-   minBound = Real minBound
--- maxBound :: a
-   maxBound = Virtual maxBound Nothing
-
diff --git a/ghc/tests/programs/jeff-bug/Words.hs b/ghc/tests/programs/jeff-bug/Words.hs
deleted file mode 100644 (file)
index 201e45d..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-module Words where
-
-import Word
-import Int
-import Ix
-
--- Begin Signature ---------------------------------------------------------
-
-{- 
-The Word class captures both the common operations and class instances
-that you would want from words of different sizes.  
--}
-
-class (Ix w,Num w,Integral w,Bounded w, Eq w) => Word w where
-  --intToWord       :: Int -> w
-  num_half        :: w
-  num_bytes       :: w
-  max_signed      :: w
-  min_signed      :: w
-  max_signed_half :: w
-  sign            :: w -> w
-  unsign          :: w -> w
-  --toWord          :: Integral a => a -> w
-  sign_half       :: w -> w
-
-  --toWord      = intToWord . toInt
-  sign_half n = n `signedModulus` num_half
-
-class Word w => Word2 i w where
-  toWord :: i -> w
-
-{-instance Word Int-}
-{-instance Word Word8-}
-{-instance Word Word32-}
-
--- This isn't set yet because Word64 is not set to Num in Hugs
--- instance Word Word64 
-
--- End Signature ---------------------------------------------------------
-
-
-
-
-instance Word Int where
-  num_half        = mk_num_half 31
-  num_bytes       = mk_num_bytes 31
-  max_signed      = mk_max_signed 31
-  min_signed      = mk_min_signed 31
-  max_signed_half = mk_max_signed_half 31
-  sign            = mk_sign 31
-  unsign          = mk_unsign 31
-
-instance Integral i => Word2 i Int where
-  toWord          = toInt
-
-instance Word Word8 where
-  num_half        = mk_num_half 8 
-  num_bytes       = mk_num_bytes 8      
-  max_signed      = mk_max_signed 8
-  min_signed      = mk_min_signed 8
-  max_signed_half = mk_max_signed_half 8
-  sign            = mk_sign 8
-  unsign          = mk_unsign 8
-
-instance Integral i => Word2 i Word8 where
-  toWord          = intToWord8 . toInt
-
-
-instance Word Word32 where
-  num_half        = mk_num_half 32
-  num_bytes       = mk_num_bytes 32      
-  max_signed      = mk_max_signed 32
-  min_signed      = mk_min_signed 32
-  max_signed_half = mk_max_signed_half 32
-  sign            = mk_sign 32
-  unsign          = mk_unsign 32
-
-instance Integral i => Word2 i Word32 where
-  toWord          = intToWord32 . toInt
-
-mk_num_half  x       = 2^(x `div` 2)
-mk_num_bytes x       = 2^(x `div` 4)
-mk_max_signed x      = 2^(x-1) - 1
-mk_min_signed x      = -2^(x-1)
-mk_max_signed_half x = 2^((x `div` 2) - 1) - 1
-mk_sign x n          = fromInteger $ n' `signedModulus` ((2^x)::Integer)
-   where n' = toInteger n
-mk_unsign x n        = fromInteger $ if n' >=0 then n' else n' + 2^x'
-   where n' = toInteger n
-         x' = toInteger x 
-
-signedModulus x m
-  = if modNum <= (m `div` 2) - 1
-      then modNum
-      else m - modNum
-    where
-      modNum = x `mod` m
-
-
diff --git a/ghc/tests/programs/jeff-bug/hawk-macros.h b/ghc/tests/programs/jeff-bug/hawk-macros.h
deleted file mode 100644 (file)
index bf61cdc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define step4(w,x,y,z) loop(bundle4(w,x,y,z)) $ \ ~(w,x,y,z) -> do
-#define step3(x,y,z) loop(bundle3(x,y,z)) $ \ ~(x,y,z) -> do
-#define step2(x,y) loop(bundle2 (x,y)) $ \ ~(x,y) -> do {- stp2(x,y) -}
-#define step1(x) loop(x) $ \ ~x -> do
-#define step loop(lift0 ()) $ \ ~() -> do
-#define _probeST () <- stpProbe
diff --git a/ghc/tests/programs/jl_defaults/Main.hs b/ghc/tests/programs/jl_defaults/Main.hs
deleted file mode 100644 (file)
index 7264c53..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-d=25637784375346753+0158409406114519728029864689069987389733-25637784375346753
-
-cox(n)=foldr   (\x(y)->128*      y+x)0(n)
-de(n)=un(\x->  (x`mod`128,x    `div`128),(                  ==0))n
-coll=    un(\  zs->(          take(   35)zs,          drop(35)zs),(==""))
-pe(n,m)x=s(p(  n`div`2,m)x)  `mod`m   --2323         -- john launchbury --
-p(n,m)x=if(    n==0)then(1)  else(if(even(n))    then(pe(n,m)x)else(po(n,m)x))
-po(n,  m)x=           (x*p(  n-1,m)   x)`mod`                 m
-un(f,   p)n=   if(p(n))then  []else   (let(a,       b)=f(n)in(a:un(f,p)b))
-(g,s)    =(\x  ->x,\x->x*x)  --v(f)   t*g+172
-
-e=4998372704153806867349631861645896723396264061670520817438963311707989737197
-n=6133011105483442903214719346445720362447680717496623906453276570566830154479
-
-a=g
-  (concat.map(map(chr.fromIntegral).de.p(d,n).read).lines)
-main=interact
-  (unlines.map(show.p(e,n).cox.map(fromIntegral.ord)).coll)
-b=g
---p::(Integer,Integer)->Integer->Integer
-default (Integer)
--- 1.3
-ord = (fromEnum :: Char -> Int)
-chr = (toEnum   :: Int  -> Char)
diff --git a/ghc/tests/programs/jl_defaults/Makefile b/ghc/tests/programs/jl_defaults/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jl_defaults/jl_defaults.stdin b/ghc/tests/programs/jl_defaults/jl_defaults.stdin
deleted file mode 100644 (file)
index 9f42b3c..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-module Main
-where
-
-import Rsa
-
-main = interact (decrypt 2036450659413645137870851576872812267542175329986469156678671505255564383842535488743101632280716717779536712424613501441720195827856504007305662157107
-                         5282760067491066073559694937813662322539426172665930660813609694132726350877)
-module Main
-where
-
-import Rsa
-
-main = interact (prompt . keys . lines)
-
-keys (x:y:xs) = makeKeys (read x) (read y)
-prompt ks = "\nEnter two random numbers on separate lines:\n" ++
-            case ks of
-              (n,e,d) -> "The numbers n, e, and d are:\n" ++
-                         unlines (map show [n,e,d]) ++ "\n"
-
-
-
-module Main
-where
-
-import Rsa
-
-main = interact (encrypt 2036450659413645137870851576872812267542175329986469156678671505255564383842535488743101632280716717779536712424613501441720195827856504007305662157107
-
-                         387784473137902876992546516170169092918207676456888779623592396031349415024943784869634893342729620092877891356118467738167515879252473323905128540213) 
-module Rsa (encrypt, decrypt, makeKeys)
-where
-
-
-encrypt, decrypt :: Integer -> Integer -> String -> String
-encrypt n e = unlines . map (show . power e n . code) . collect (size n)
-decrypt n d = concat . map (decode . power d n . read) . lines
-
-
--------- Converting between Strings and Integers -----------
-
-code :: String -> Integer
-code = foldl accum 0
-  where accum x y = (128 * x) + fromIntegral (ord y)
-
-decode :: Integer -> String
-decode n = reverse (expand n)
-   where expand 0 = []
-         expand x = chr (fromIntegral (x `mod` 128)) : expand (x `div` 128)
-
-collect :: Int -> [a] -> [[a]]
-collect 0 xs = []
-collect n [] = []
-collect n xs = take n xs : collect n (drop n xs)
-
-size :: Integer -> Int
-size n = (length (show n) * 47) `div` 100      -- log_128 10 = 0.4745
-
-
-------- Constructing keys -------------------------
-
-makeKeys :: Integer -> Integer -> (Integer, Integer, Integer)
-makeKeys p' q' = (n, invert phi d, d)
-   where   p = nextPrime p'
-           q = nextPrime q'
-          n = p*q              
-          phi = (p-1)*(q-1)
-          d = nextPrime (p+q+1)
-
-nextPrime :: Integer -> Integer
-nextPrime a = head (filter prime [odd,odd+2..])
-  where  odd | even a = a+1
-             | True   = a
-         prime p = and [power (p-1) p x == 1 | x <- [3,5,7]]
-
-invert :: Integer -> Integer -> Integer
-invert n a = if e<0 then e+n else e
-  where  e=iter n 0 a 1
-
-iter :: Integer -> Integer -> Integer -> Integer -> Integer
-iter g v 0  w = v
-iter g v h w = iter h w (g - fact * h) (v - fact * w)
-    where  fact = g `div` h 
-
-
-------- Fast exponentiation, mod m -----------------
-
-power :: Integer -> Integer -> Integer -> Integer
-power 0 m x          = 1
-power n m x | even n = sqr (power (n `div` 2) m x) `mod` m
-           | True   = (x * power (n-1) m x) `mod` m
-
-sqr :: Integer -> Integer
-sqr x = x * x
-
-
diff --git a/ghc/tests/programs/jl_defaults/jl_defaults.stdout b/ghc/tests/programs/jl_defaults/jl_defaults.stdout
deleted file mode 100644 (file)
index 96af88d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-4920809715423652126833300223898584158049941072841886687495995700883334743100
-5432330858306872686500084883710596485987545962633593608556693314985929397278
-4339248871826075716689365252959383603865108452038731242628114027468386889392
-5093536091168354561903967261876376065518631989366599364453052968769674546808
-452255175131343471422777502400803159982075304884934452744062890985998925579
-5651794710074432381863213344353720104403137760112806914487431596242938363430
-3061160482336986047106286569124179361131165975312875785380225174897705056247
-3707532298830907015078026151401521396408816523701073885235911174226183847616
-1672527229229602085474445755878025438634885550315976736763448691537272636397
-2694095939000995014017603368080556297555174784041262508235371067342645255524
-374377465877617758578798366250540382775835183912685973484329204081752413108
-70670677534061236024006132424883477045800689401223889299851269113903609674
-4000628399955471904243661544397767048125987794908180173183625871229892876397
-4906565929095346836492941810877575932437495191179616117416632984168943509597
-5516346249998806624976191380102290469940913229929556365185124042458931748107
-3249082870923755215225394643296748590367123662573818411184222619514686103707
-1491720335558719705869091168528404980739494271046932349218229579321184830523
-1686737417317757855955298010512776238712753331633604323753903197890876799373
-1805585126801071079811419697627136537113089029403553023028612722432622665752
-3511736403324390887823438889080816442699457593665362088272279450694662350325
-3059090617697805984966883699385391457394972451765807015618308229682170754691
-1791469209415048698889701534711117102841920419919199191251466207775050401648
-4909486343080247382855393243376373590835553788279147318500120102235277324688
-6105584463845350869346463822943556344444743115967948397202046370564408862801
-3101811255702323827681538739391405240305979676311679950655332212164728286905
-502301603479002276983794250287799138413539671219594405716785181026407853070
-4358061173842713923727596635618515537510627182560600542063351264350418316626
-164453598598861572154717095227623488925677211321244997860334336257326798364
-4394558632435728786563083951771397684083785946746450795656358634203698441707
-6006851346698376668509905281824701381916163461685508740794674441125858788140
-3867538230503966184572683721734208947665221540440622466928061154772391187329
-5338109760830381076911983869920441650716477560575467116072876135764595748095
-3743970364360709692565346166809854918016520774549917187253761579957026935285
-5338885389104874014929439098775791103906923949376645756253431737471221283700
-2348178884706827085411484833459920161135814667852004573467265439960241493131
-5254623865012121523980274965685942704689624593023469438181719491186136936015
-3986275158016351977835439147155809957999996272270283467743293472532115583617
-526935137060210001028448464377173261084183239425747466381941443743544027195
-507273794051233348674698212476241189139986916720908541050194948680762996344
-1033556763489852311463603207019927285083136108137572596117745744242871916900
-3446795433667187698189441512959300936201773618507473942386709884930451135074
-545931880879424996206435364533933413676207664131244784634909342311706884452
-2795801327214218413435627230002144566845535290174353455844445456463875729434
-2931834269644667286282273161824736012205083677965116753449411073863166504357
-4321226293197008552166855291951448174194860947478057945983594070230611540335
-2915201550606214604494324179626096006121149723557886610883841340815238149840
-4811620416165033750799620419212417505145222669364398338747204968522878524911
-1466224263109815153902563034416239744965838185919402925858674448761002454779
-2438889162050605487686752760988810450126857080767315726495753536171323863054
-5998821980800057085636781495295707864684178467171746799651972228599139201266
-6089567412803075636381417941158119969114523106164962143432961423089887792292
-3050021010531468802113118367257671370659795560347299789117728278864278450131
-5945718375382831109423632944705128211793085885913633593861683167159528782591
-3026204398245236798354704986302023975861815145437855415245441815308415387953
-2676529366868155998394698157879317295826322813777929555458747920862958367966
-2510144819506913011833805684069407453087501420718601429525528464579648027945
-927261031293985730579168798603066378051891567746020053024936290977579745443
-5915344780625405584011111029616932649698677975010841120923573679748044000720
-3148048140163124147500328788647215500539594107393850553079025886755275538822
-2287692746592755607916955694183169908842703620578310343535165175569710544053
-1063693689244866698553354251617273211405432367453924577142357801317603990975
-3849377130782157501991218894503189735241973306948618262933858934701817306449
-4936383948961571782723042323182925874145007039724697967700967643799136008113
-1509617705803393270808477952473702864659023851066698294243357961717765168672
-5472216837765373996121128218666257320756026383617272333703957906641519754263
-4780254190063899712174761115854857641499167561602339838395636904013647414584
-5581514826041367626669555434100028158983453767987104047095662205070800757827
-5309252036506593340513508392734823467337429965923448711237185191264932184860
-4583433054186756079090681370045250784557808030067459137931281644720019191362
-5575463174094526452776738273855782291534405989081458614218391164048773471067
-5852605354443026555410261612196443374066160991330461866108439516671532034102
-1874394262755169898049882304381434185778432126556225514931962873197932483312
-788055637358938666586632974037948121627136430004899534614992989099047141460
-2622180375354647151274534995106977971178016843195527033965282744574806644939
-4796950796491327077781445701993257220109214573739662989797578674154036157406
-233413414192494514986495864446565635199384720742811236012866416296376677246
-2347993888467688740232778654271044706092005506762442826710421788460808408534
-91161250689328982701754090976033028590711392587459602281964712770783938325
-1819439705826650262304124492559936132802903570523631190847187428885890378612
-2856891250452648545493984485566790848211215232771965243626157791018496330646
-1757223836152519443955234766296600906372788951356756698651751141731568824792
diff --git a/ghc/tests/programs/jon_polycase/Foo.lhs b/ghc/tests/programs/jon_polycase/Foo.lhs
deleted file mode 100644 (file)
index daa9c3d..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-{- 
-       Date: Wed, 3 Sep 1997 10:25:35 +0200 (MET DST)
-       From: Jon Mountjoy <jon@wins.uva.nl>
-
-Hello Bug Hunters,
-
-The following program (rather condensed as it comes from something
-much larger), crashes the compiler. I am using ghc-2.05 on a Solaris
-box, with one or two patches(including the WwLib one which Simon gave
-me, but this error occured before applying this patch).
-
-It seems to be some rather subtle dependency problem.  Compiling with
--O solves the problem, compiling with ghc -c Foo.lhs should highlight
-it.  The error message is appended below the file.  What are the new
-"discarding polymorphic case" warnings about?
-
-If you change any line in reallyFlatten, the program compiles fine.  
-Likewise if you change the type of LinearCode to Int!
-
--}
-
-> -- SNIP START
-
-> module Foo where
-
-> import Array
-> import Monad
-
-> reallyFlatten ::  Int -> Int -> Interpreter ()
-> reallyFlatten x t
->  = do
->     let f  = goo x
->     out $ show x
->     setIStatus (IFlattened f f)
->     return ()
-
-> goo :: Int -> LinearCode
-> goo = \x -> listArray (0,1) []
-
-%---------------------------------------------------------------------
-
-> type LinearCode = Array Int Int
-
-> data InterpStatus = IFlattened !LinearCode !LinearCode 
-> data SM = SM { interpStatus :: InterpStatus }
-> initialState = SM { interpStatus = IFlattened undefined undefined }
-
-> newtype Interpreter a = RepInterp ((SM,Int) -> IO (Error ((SM,Int),a)))
-> getRepInterp (RepInterp a ) = a
-
-> instance Functor Interpreter where
->  fmap f (RepInterp intp ) 
->   = RepInterp (\s -> case intp s of
->                       g -> g >>= \q -> 
->                        case q of
->                         Error mes  -> return $ Error mes
->                         Ok (s',a') -> return $ Ok (s',f a'))
-
-> instance Monad Interpreter where
->  return x = RepInterp (\s -> return (Ok (s,x)))
->  (RepInterp intp) >>= g 
->    = RepInterp(\s -> case intp s of
->                      p -> p >>= \q ->
->                       case q of
->                        Error mes  -> return $ Error mes
->                        Ok (s',x') -> getRepInterp (g x') s' )
-
-> instance OutputMonad Interpreter where
->  out s = RepInterp (\st -> putStr s >> 
->                           return (Ok (st,())))
-
-> updateSM :: (SM -> SM) -> Interpreter SM
-> updateSM f = RepInterp (\s@(sm,ty) -> return $ Ok ((f sm,ty), sm))
-
-> setIStatus :: InterpStatus -> Interpreter InterpStatus
-> setIStatus is = updateSM (\sm -> sm {interpStatus = is}) >>= 
->                 return.interpStatus
-
-> data Error a = Ok a | Error String 
->     
-> class Monad m => OutputMonad m  where   
->   out      :: String -> m ()
-> instance OutputMonad IO where
->  out s = catch (putStr s) (\_ ->  ioError $ userError "Oh MY")
diff --git a/ghc/tests/programs/jon_polycase/Makefile b/ghc/tests/programs/jon_polycase/Makefile
deleted file mode 100644 (file)
index 7e5f406..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-
-# The bug was delicate: only happens without -O
-SRC_HC_OPTS += -Onot
-
-# Just compiling Foo successfully is OK
-all :: Foo.o
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jq_readsPrec/Main.hs b/ghc/tests/programs/jq_readsPrec/Main.hs
deleted file mode 100644 (file)
index 360a411..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module Main where
-
-data Vertex = V Int deriving (Read, Show)
-
-main = do
-    userInput <- getContents
-    (parseVertex.lines) userInput report
-
-report::Vertex -> IO ()
-report int = putStr (show int)
-
-parseVertex::[String] -> (Vertex -> IO ()) -> IO ()
-parseVertex inputLines cont
- = case inputLines of
-      (l1:rest) -> case (reads l1) of
-                     [(x,"")] -> cont x
-                     other    -> putStr
-                                      ((showString "Error - retype the edges\n".                                      shows other) "")
-      _         -> putStr "No Vertex"
-
diff --git a/ghc/tests/programs/jq_readsPrec/Makefile b/ghc/tests/programs/jq_readsPrec/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdin b/ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdin
deleted file mode 100644 (file)
index 8cc78bf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(V 1)
diff --git a/ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdout b/ghc/tests/programs/jq_readsPrec/jq_readsPrec.stdout
deleted file mode 100644 (file)
index 725c38e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-V 1
\ No newline at end of file
diff --git a/ghc/tests/programs/jtod_circint/Bit.hs b/ghc/tests/programs/jtod_circint/Bit.hs
deleted file mode 100644 (file)
index be11a6f..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-module Bit where
-import LogFun
-import Signal
-
-data Bit = Bot | WeakZero | WeakOne | Zero | One | Top
-  deriving (Eq,Show{-was:Text-})
-
-instance Static Bit where
-  intToSig = intToSigBit
-  sigToInt = sigToIntBit
-  showStaticSig = showBit
-
-instance Lattice Bit where
-  bot = Bot
-  top = Top
-  weakZero = WeakZero
-  weakOne = WeakOne
-  lub = lubBit
-  pass = passBit
-
-instance Signal Bit where
-  showSig = showBit
-  initial = Zero
-  zerO    = Zero
-  one     = One
-  tt1     = tt1Bit
-  tt2     = tt2Bit
-
-instance Log Bit where
-  dumLog = Zero
-
-tt1Bit :: TT1 -> Bit -> Bit
-tt1Bit (a,b) =
-  let p = intBit a
-      q = intBit b
-      f x = case x of
-              Bot  -> Bot
-              Zero -> p
-              One  -> q
-              Top  -> Top
-  in f
-
-tt2Bit :: TT2 -> Bit -> Bit -> Bit
-tt2Bit (a,b,c,d) = f
-  where p = intBit a
-        q = intBit b
-        r = intBit c
-        s = intBit d
-        f x y = case x of
-                  Bot  ->     case y of
-                                Bot      -> Bot
-                                WeakZero -> Bot
-                                WeakOne  -> Bot
-                                Zero     -> Bot
-                                One      -> Bot
-                                Top      -> Top
-                  WeakZero -> case y of
-                                Bot      -> Bot
-                                WeakZero -> p
-                                WeakOne  -> q
-                                Zero     -> p
-                                One      -> q
-                                Top      -> Top
-                  WeakOne  -> case y of
-                                Bot      -> Bot
-                                WeakZero -> r
-                                WeakOne  -> s
-                                Zero     -> r
-                                One      -> s
-                                Top      -> Top
-                  Zero     -> case y of
-                                Bot      -> Bot
-                                WeakZero -> p
-                                WeakOne  -> q
-                                Zero     -> p
-                                One      -> q
-                                Top      -> Top
-                  One      -> case y of
-                                Bot      -> Bot
-                                WeakZero -> r
-                                WeakOne  -> s
-                                Zero     -> r
-                                One      -> s
-                                Top      -> Top
-                  Top      -> case y of
-                                Bot      -> Top
-                                WeakZero -> Top
-                                WeakOne  -> Top
-                                Zero     -> Top
-                                One      -> Top
-                                Top      -> Top
-
-lubBit :: Bit -> Bit -> Bit
-lubBit a b =
-  case a of
-    Bot      -> case b of
-                  Bot      -> Bot
-                  WeakZero -> WeakZero
-                  WeakOne  -> WeakOne
-                  Zero     -> Zero
-                  One      -> One
-                  Top      -> Top
-    WeakZero -> case b of
-                  Bot      -> Zero
-                  WeakZero -> WeakZero
-                  WeakOne  -> Top
-                  Zero     -> Zero
-                  One      -> One
-                  Top      -> Top
-    WeakOne  -> case b of
-                  Bot      -> WeakOne
-                  WeakZero -> Top
-                  WeakOne  -> WeakOne
-                  Zero     -> Zero
-                  One      -> One
-                  Top      -> Top
-    Zero     -> case b of
-                  Bot      -> Zero
-                  WeakZero -> Zero
-                  WeakOne  -> Zero
-                  Zero     -> Zero
-                  One      -> Top
-                  Top      -> Top
-    One      -> case b of
-                  Bot      -> One
-                  WeakZero -> One
-                  WeakOne  -> One
-                  Zero     -> Top
-                  One      -> One
-                  Top      -> Top
-    Top      -> case b of
-                  Bot      -> Top
-                  WeakZero -> Top
-                  WeakOne  -> Top
-                  Zero     -> Top
-                  One      -> Top
-                  Top      -> Top
-
-showBit :: Bit -> String
-showBit Bot      = "v"
-showBit WeakZero = "z"
-showBit WeakOne  = "o"
-showBit Zero     = "0"
-showBit One      = "1"
-showBit Top      = "^"
-
-
-intBit :: Int -> Bit
-intBit 0 = Zero
-intBit 1 = One
-intBit x =
-  error ("\nintBit received bad Int " ++ show x ++ ".\n")
-
-intToSigBit :: Int -> Bit
-intToSigBit i
-  | i==0  =  Zero
-  | i==1  =  One
-  | i==8  =  Bot
-  | i==9  =  Top
-
-sigToIntBit :: Bit -> Int
-sigToIntBit Zero = 0
-sigToIntBit One  = 1
-sigToIntBit Bot  = 8
-sigToIntBit Top  = 9
-
-passBit :: Bit -> Bit -> Bit
-passBit c a =
-  case c of
-    Bot  -> Bot
-    Zero -> Bot
-    One  -> a
-    Top  -> Top
-
-instance Num Bit where
-  (+) = or2
-  (*) = and2
-  a - b  = xor a b
-  negate = inv
-  abs    = error "abs not defined for Signals"
-  signum = error "signum not defined for Signals"
-  fromInteger = error "fromInteger not defined for Signals"
-
diff --git a/ghc/tests/programs/jtod_circint/LogFun.hs b/ghc/tests/programs/jtod_circint/LogFun.hs
deleted file mode 100644 (file)
index b9a5bf1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-module LogFun where
-
-type TT1 = (Int,Int)
-type TT2 = (Int,Int,Int,Int)
-
-tt_con10, tt_id, tt_inv, tt_con11 :: TT1
-
-tt_con10 = (0,0)
-tt_id    = (0,1)
-tt_inv   = (1,0)
-tt_con11 = (1,1)
-
-tt_con20, tt_and2, tt_nimp,  tt_id21   :: TT2
-tt_nimp', tt_id22, tt_xor,   tt_or2    :: TT2
-tt_nor2,  tt_equ2, tt_inv22, tt_imp'   :: TT2
-tt_inv21, tt_imp,  tt_nand2, tt_con21  :: TT2
-
-tt_con20 = (0,0,0,0)
-tt_and2  = (0,0,0,1)
-tt_nimp  = (0,0,1,0)
-tt_id21  = (0,0,1,1)
-tt_nimp' = (0,1,0,0)
-tt_id22  = (0,1,0,1)
-tt_xor   = (0,1,1,0)
-tt_or2   = (0,1,1,1)
-tt_nor2  = (1,0,0,0)
-tt_equ2  = (1,0,0,1)
-tt_inv22 = (1,0,1,0)
-tt_imp'  = (1,0,1,1)
-tt_inv21 = (1,1,0,0)
-tt_imp   = (1,1,0,1)
-tt_nand2 = (1,1,1,0)
-tt_con21 = (1,1,1,1)
-
diff --git a/ghc/tests/programs/jtod_circint/Main.hs b/ghc/tests/programs/jtod_circint/Main.hs
deleted file mode 100644 (file)
index a1907dc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module Main where
-import Signal
-import Bit
-
-main = putStr test
-
-test = stest
-
-type B =  Stream Bit
-
-stest = take 80 (shows z "\n")
-  where z = one :: B
diff --git a/ghc/tests/programs/jtod_circint/Makefile b/ghc/tests/programs/jtod_circint/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jtod_circint/Signal.hs b/ghc/tests/programs/jtod_circint/Signal.hs
deleted file mode 100644 (file)
index 38a1fc8..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-module Signal where
-
-import LogFun
-
-class (Eq a, Show{-was:Text-} a, Num a) => Signal a where
-  showSig :: a -> String
-
-  zerO, one, initial :: a
-
-  tt1 :: TT1 -> a -> a
-  tt2 :: TT2 -> a -> a -> a
-
-  con10, buf, inv, con11 :: a -> a
-
-  con20, and2, nimp,  id21  :: a -> a -> a
-  nimp', id22, xor,   or2   :: a -> a -> a
-  nor2,  equ2, inv22, imp'  :: a -> a -> a
-  inv21, imp,  nand2, con21 :: a -> a -> a
-  and3,  or3,  nand3, nor3  :: a -> a -> a -> a
-  and4,  or4,  nand4, nor4  :: a -> a -> a -> a -> a
-
-  con10 = tt1 tt_con10
-  buf   = tt1 tt_id
-  inv   = tt1 tt_inv
-  con11 = tt1 tt_con11
-
-  con20 = tt2 tt_con20
-  and2  = tt2 tt_and2
-  nimp  = tt2 tt_nimp
-  id21  = tt2 tt_id21
-  nimp' = tt2 tt_nimp'
-  id22  = tt2 tt_id22
-  xor   = tt2 tt_xor
-  or2   = tt2 tt_or2
-  nor2  = tt2 tt_nor2
-  equ2  = tt2 tt_equ2
-  inv22 = tt2 tt_inv22
-  imp'  = tt2 tt_imp'
-  inv21 = tt2 tt_inv21
-  imp   = tt2 tt_imp
-  nand2 = tt2 tt_nand2
-  con21 = tt2 tt_con21
-
-  and3  a b c = a*b*c
-  or3   a b c = a+b+c
-  nand3 a b c = nand2 a (nand2 b c)
-  nor3  a b c = nor2 a (nor2 b c)
-
-  and4  a b c d = (a*b)*(c*d)
-  or4   a b c d = (a+b)+(c+d)
-  nand4 a b c d = nand2 (nand2 a b) (nand2 c d)
-  nor4  a b c d = nor2 (nor2 a b) (nor2 c d)
-
-class (Signal a) => Lattice a where
-  bot, top, weakZero, weakOne :: a
-  lub  :: a -> a -> a
-  pass :: a -> a -> a
-
-class (Signal a) => Static a where
-  intToSig :: Int -> a
-  sigToInt :: a -> Int
-  showStaticSig :: a -> String
-
-class (Signal a) => Dynamic a where
-  latch, dff :: a -> a
-
-class (Lattice a, Static a) => Log a where
-  dumLog :: a
-
-class (Lattice a, Dynamic a) => Sig a where
-  dumSig :: a
-
-data Stream a = Snil | Scons a (Stream a)  deriving (Eq,Show{-was:Text-})
-
-shead :: Stream a -> a
-shead (Scons x xs) = x
-
-stail :: Stream a -> Stream a
-stail (Scons x xs) = xs
-
-snull :: Stream a -> Bool
-snull Snil = True
-snull (Scons x xs) = False
-
-smap :: (a->b) -> Stream a -> Stream b
-smap f Snil = Snil
-smap f (Scons x xs) = Scons (f x) (smap f xs)
-
-stake, sdrop :: Int -> Stream a -> Stream a
-
-stake 0 xs = xs
---should be: stake (i+1) (Scons x xs) = Scons x (stake i xs)
-stake i (Scons x xs) | i < 0     = error "Signal.stake: < 0"
-                    | otherwise = Scons x (stake (i-1) xs)
-
-sdrop 0 xs = xs
---should be:sdrop (i+1) (Scons x xs) = sdrop i xs
-sdrop i (Scons x xs) | i < 0    = error "Signal.sdrop: < 0"
-                    | otherwise = sdrop i xs
-
-smap2 :: (a->b->c) -> Stream a -> Stream b -> Stream c
-smap2 f as bs =
-  case as of
-    Snil -> Snil
-    Scons a as' ->
-      case bs of
-        Snil -> Snil
-        Scons b bs' -> Scons (f a b) (smap2 f as' bs')
-
-srepeat :: (Static a) => a -> Stream a
-srepeat x = xs where xs = Scons x xs
-
-stream :: [a] -> Stream a
-stream [] = Snil
-stream (x:xs) = Scons x (stream xs)
-
-instance (Signal a, Static a) => Dynamic (Stream a) where
-  latch xs = Scons initial xs
-  dff xs = Scons initial xs
-
-instance (Lattice a, Static a) => Lattice (Stream a) where
-  bot      = srepeat bot
-  top      = srepeat top
-  weakZero = srepeat weakZero
-  weakOne  = srepeat weakOne
-  lub      = smap2 lub
-  pass     = smap2 pass
-
-instance (Signal a, Static a) => Signal (Stream a) where
-  zerO = srepeat zerO
-  one  = srepeat one
-  tt1  = smap . tt1
-  tt2  = smap2 . tt2
-
-instance (Lattice a, Static a) => Sig (Stream a) where
-  dumSig = bot  -- ??? shouldn't be necessary, check compiler
-
-instance (Static a) => Num (Stream a) where
-  (+) = or2
-  (*) = and2
-  a - b  = xor a b
-  negate = inv
-  abs    = error "abs not defined for Signals"
-  signum = error "signum not defined for Signals"
-  fromInteger = error "fromInteger not defined for Signals"
-
diff --git a/ghc/tests/programs/jtod_circint/jtod_circint.stdout b/ghc/tests/programs/jtod_circint/jtod_circint.stdout
deleted file mode 100644 (file)
index bc629da..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Scons One (Scons One (Scons One (Scons One (Scons One (Scons One (Scons One (Sco
\ No newline at end of file
diff --git a/ghc/tests/programs/jules_xref/Main.hs b/ghc/tests/programs/jules_xref/Main.hs
deleted file mode 100644 (file)
index b9126f4..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
--- !!! a performance-problem test from Jules.
---  further comment at the end
--- 
-module Main where 
-
-import Char -- 1.3
-
---1.3:data Maybe a = Nothing | Just a
-
-data ATree a b = ALeaf
-               | ABranch (ATree a b) a [b] (ATree a b) Int
-                 -- deriving (Eq)
-
-type SymTable = ATree String Int
-
-
-pp_tree :: SymTable -> String
-pp_tree ALeaf = ""
-pp_tree (ABranch l k vs r h)
-  = pp_tree l ++ show (k,reverse vs) ++ "\n" ++ pp_tree r
-
-{-
-avAdd :: Ord a  =>  ATree a b -> 
-                    a -> 
-                    b -> 
-                    ATree a b
--}
-avAdd ALeaf xk xv = ABranch ALeaf xk [xv] ALeaf 1
-
-avAdd (ABranch l yk yv r hy) xk xv
-   | yk > xk = let (ABranch l1 zk zv l2 _) = avAdd l xk xv
-               in avCombine l1 (f l1) l2 (f l2) r (f r) zk zv yk yv
-   | xk > yk = let (ABranch r1 zk zv r2 _) = avAdd r xk xv
-               in avCombine l (f l) r1 (f r1) r2 (f r2) yk yv zk zv
-   | otherwise  = ABranch l yk (xv:yv) r hy
-   where
-      f :: ATree a b -> Int
-      f ALeaf = 0
-      f (ABranch _ _ _ _ d) = d
-      
-
-
--- ==========================================================--
---
-{-
-avLookup :: Ord a  =>  ATree a b -> 
-                       a -> 
-                       Maybe b
--}
-avLookup ALeaf _ = Nothing
-
-avLookup (ABranch l k v r _) kk
-   | kk < k     = avLookup l kk
-   | kk > k     = avLookup r kk
-   | otherwise  = Just v
-
-
-
--- ==========================================================--
---
-avCombine :: ATree a b -> 
-             Int -> 
-             ATree a b -> 
-             Int -> 
-             ATree a b -> 
-             Int -> 
-             a -> 
-             [b] -> 
-             a -> 
-             [b] -> 
-             ATree a b
-
-avCombine t1 h1 t2 h2 t3 h3 ak av ck cv
-   | h2 > h1 && h2 > h3
-      = ABranch (ABranch t1 ak av t21 (h1+1)) bk bv 
-                (ABranch t22 ck cv t3 (h3+1)) (h1+2)
-   | h1 >= h2 && h1 >= h3
-      = ABranch t1 ak av (ABranch t2 ck cv t3 (max1 h2 h3)) 
-                (max1 h1 (max1 h2 h3))
-   | h3 >= h2 && h3 >= h1
-      = ABranch (ABranch t1 ak av t2 (max1 h1 h2)) ck cv t3 
-                (max1 (max1 h1 h2) h3)
-   where
-      (ABranch t21 bk bv t22 _) = t2
-      max1 :: Int -> Int -> Int
-      max1 n m = 1 + (if n > m then n else m)
-
-
--- ==========================================================--
--- === end                                     AVLTree.hs ===--
--- ==========================================================--
-
-
-
-
-xref :: SymTable -> Int -> String -> SymTable
-
-xref stab lineno [] = stab
-xref stab lineno ('\n':cs) = xref stab (lineno+1) cs
-xref stab lineno (c:cs) 
-   = if isAlpha c then 
-        let (word, rest) = span isAlphaNum cs
-        in  xref (avAdd stab (c:word) lineno) lineno rest
-     else xref stab lineno cs
-
-main = do
-    s <- getContents
-    putStr (pp_tree (xref ALeaf 1 s))
-
-{-
-Date: Thu, 29 Oct 92 19:38:31 GMT
-From: Julian Seward (DRL PhD) <sewardj@uk.ac.man.cs>
-Message-Id: <9210291938.AA27685@r6b.cs.man.ac.uk>
-To: partain@uk.ac.glasgow.dcs
-Subject: More ghc vs hbc fiddling (OR: nofib ephemeral contribution (unsolicited :-))
-
-Will,
-
-There are still some very simple programs for which ghc's performance
-falls far behind that of hbc's -- even with ghc using a better
-GC.  The stat files below are from a 
-crude cross reference program we hacked together for the purposes
-of an internal "what-language-to-teach-first-year-undergrads" debate.
-
-Is this something to do with dictionary zapping?
-
-Program included below.  Use as a pipe.  Suggest you feed it any
-large Haskell source file (I used TypeCheck5.hs from Anna).
-
-Jules
-
----------------------------------------------------------
-
-a.out -H9000000 -S 
-Nw Heap Tt Heap   Stk    GC(real) GC acc (real)     tot (real) newheap    in -dupl  -new  -del  +stk   out  mcode
-  99192   99192    20  0.06   0.1   0.06    0.1    0.16    0.4  396768     0     0     0     0     0     0
- 247752  247752    14  0.13   0.1   0.19    0.2    0.44    0.8  991008     0     0     0     0     0     0
- 623104  623104    34  0.32   0.3   0.51    0.5    1.08    1.5 2492416     0     0     0     0     0     0
-1433968 1433968 15879  0.62   0.8   1.13    1.4    2.66    3.6 5735872     0     0     0     0     0     0
-3009700 3009700  2382  1.56   1.6   2.69    3.0    6.88    8.6 9000000     0     0     0     0     0     0
-         5 GCs,
-      8.69 (13.1) seconds total time,
-      2.69 (3.0) seconds GC time (31.0(23.1)% of total time)
-      0.00 (0.0) seconds major GC time ( 0.0( 0.0)% of total time)
-   9303816 bytes allocated from the heap.
-
-------------------------------------------------
-
-xref +RTS -H9M -S -K200k 
-
-Collector: APPEL  HeapSize: 9,437,184 (bytes)
-
-  Alloc   Live   Live   Astk   Bstk OldGen   GC    GC     TOT     TOT  Page Flts  Collec  Resid
-  bytes   bytes    %   bytes  bytes  roots  user  elap    user    elap   GC  TOT   tion   %heap
-4718580  786672  16.7     40    220    424  0.37  0.52    3.67    4.68    0    0   Minor
-4325248  808804  18.7  62724  62820 564968  0.50  0.60    6.63    8.05    0    0   Minor
-3920848  743508  19.0  47512  47600 743220  0.47  0.60    8.60   10.17    0    0   Minor
-3549096  681464  19.2  34644  34892 680820  0.46  0.53   10.43   12.13    0    0   Minor
-3208348  604892  18.9  23564  23676 604512  0.41  0.48   12.07   13.89    0    0   Minor
-2905900  528584  18.2  14164  14396 527952  0.35  0.41   13.53   15.42    0    0   Minor
-2641592  490812  18.6   5228   5388 490476  0.30  0.37   14.85   16.82    0    0   Minor
-2396204  534400  22.3     16     40 534380  0.28  0.32   16.41   18.75    0    0   Minor
-2129016  691708  32.5     36    144 691420  0.33  0.39   18.38   21.68    0    0   Minor
-1090480
-
-30,885,312 bytes allocated in the heap
-         9 garbage collections performed
-
-  Total time  19.29s  (23.06s elapsed)
-  GC time      3.47s  (4.22s elapsed)
-  %GC time    18.0%
-
---------------------------------------------------
--}
diff --git a/ghc/tests/programs/jules_xref/Makefile b/ghc/tests/programs/jules_xref/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jules_xref/jules_xref.stdin b/ghc/tests/programs/jules_xref/jules_xref.stdin
deleted file mode 100644 (file)
index a43907d..0000000
+++ /dev/null
@@ -1,1105 +0,0 @@
---==========================================================--
---=== A type-checker -- v5        File: TypeCheck5.m (1) ===--
---=== Corrected version for 0.210a                       ===--
---==========================================================--
-
-module TypeCheck5 where
-import BaseDefs
-import Utils
-import MyUtils
-
---==========================================================--
---=== Formatting of results                              ===--
---==========================================================--
-
-tcMapAnnExpr :: (a -> b) ->
-                AnnExpr c a ->
-                AnnExpr c b
-
-tcMapAnnExpr f (ann, node) 
-   = (f ann, mapAnnExpr' node)
-     where
-        mapAnnExpr' (AVar v) = AVar v
-        mapAnnExpr' (ANum n) = ANum n
-        mapAnnExpr' (AConstr c) = AConstr c
-        mapAnnExpr' (AAp ae1 ae2) 
-           = AAp (tcMapAnnExpr f ae1) (tcMapAnnExpr f ae2)
-        mapAnnExpr' (ALet recFlag annDefs mainExpr)
-           = ALet recFlag (map mapAnnDefn annDefs) (tcMapAnnExpr f mainExpr)
-        mapAnnExpr' (ACase switchExpr annAlts)
-           = ACase (tcMapAnnExpr f switchExpr) (map mapAnnAlt annAlts)
-        mapAnnExpr' (ALam vs e) = ALam vs (tcMapAnnExpr f e)
-
-        mapAnnDefn (naam, expr) 
-           = (naam, tcMapAnnExpr f expr)
-
-        mapAnnAlt (naam, (pars, resExpr))
-           = (naam, (pars, tcMapAnnExpr f resExpr))
-
-
---======================================================--
---
-tcSubstAnnTree :: Subst -> 
-                  AnnExpr Naam TExpr -> 
-                  AnnExpr Naam TExpr
-
-tcSubstAnnTree phi tree = tcMapAnnExpr (tcSub_type phi) tree
-
-
---======================================================--
---
-tcTreeToEnv :: AnnExpr Naam TExpr ->
-               TypeEnv
-
-tcTreeToEnv tree
-   = t2e tree
-     where
-        t2e (nodeType, node) = t2e' node
-
-        t2e' (AVar v) = []
-        t2e' (ANum n) = []
-        t2e' (AConstr c) = []
-        t2e' (AAp ae1 ae2) = (t2e ae1) ++ (t2e ae2)
-        t2e' (ALam cs e) = t2e e
-        t2e' (ALet rf dl me) 
-           = (concat (map aFN dl)) ++ (t2e me)
-        t2e' (ACase sw alts)
-           = (t2e sw) ++ (concat (map (t2e.second.second) alts))
-   
-        aFN (naam, (tijp, body)) 
-          = (naam, tijp):(t2e' body)
-
-
-
---======================================================--
---
-tcShowtExpr :: TExpr ->
-               [Char]
-
-tcShowtExpr t 
-   = pretty' False t
-     where 
-       pretty' b (TVar tvname) = [' ', chr (96+(lookup tvname tvdict))]
-       pretty' b (TCons "int" []) = " int"
-       pretty' b (TCons "bool" []) = " bool"
-       pretty' b (TCons "char" []) = " char"
-       pretty' True (TArr t1 t2) 
-          = " (" ++ (pretty' True t1) ++ " -> " ++
-            (pretty' False t2) ++ ")" 
-       pretty' False (TArr t1 t2) 
-          = (pretty' True t1) ++ " -> " ++
-            (pretty' False t2)
-       pretty' b (TCons notArrow cl) 
-          = " (" ++ notArrow ++ 
-             concat (map (pretty' True) cl) ++ ")"
-       lookup tvname [] 
-          = panic "tcShowtExpr: Type name lookup failed"
-       lookup tvname (t:ts) | t==tvname = 1
-                           | otherwise = 1 + (lookup tvname ts)
-       tvdict = nub (tvdict' t)
-       tvdict' (TVar t) = [t]
-       tvdict' (TCons c ts) = concat (map tvdict' ts)
-       tvdict' (TArr t1 t2) = tvdict' t1 ++ tvdict' t2
-
-
---======================================================--
---
-tcPretty :: (Naam, TExpr) -> 
-            [Char]
-
-tcPretty (naam, tipe)
-   = "\n   " ++ (ljustify 25 (naam ++ " :: ")) ++ 
-            (tcShowtExpr tipe)
-
-
---======================================================--
-tcCheck :: TcTypeEnv -> 
-           TypeNameSupply ->
-           AtomicProgram -> 
-           ([Char],  Reply (AnnExpr Naam TExpr, TypeEnv) Message)
-
-tcCheck baseTypes ns (tdefs, expr)
-   = if good tcResult 
-         then (fullEnvWords,  Ok (rootTree, fullEnv))
-         else ("",            Fail "No type")
-     where
-        tcResult = tc (tdefs++builtInTypes)
-                   (baseTypes++finalConstrTypes) finalNs expr
-
-        good (Ok x) = True
-        good (Fail x2) = False
-        
-        (rootSubst, rootType, annoTree) = f tcResult where f (Ok x) = x
-
-        rootTree = tcSubstAnnTree rootSubst annoTree
-
-        rootEnv = tcTreeToEnv rootTree
-
-        fullEnv = rootEnv ++ map f finalConstrTypes
-                  where
-                     f (naam, (Scheme vs t)) = (naam, t)
-
-        fullEnvWords = concat (map tcPretty fullEnv)
-
-        (finalNs, constrTypes) = 
-           mapAccuml tcConstrTypeSchemes ns (tdefs++builtInTypes)
-        finalConstrTypes = concat constrTypes
-
-        builtInTypes 
-           = [ ("bool", [], [("True", []), ("False", [])]) ]
-        
-
-
---==========================================================--
---=== 9.2 Representation of type expressions             ===--
---==========================================================--
-
-----======================================================--
---tcArrow :: TExpr -> 
---           TExpr -> 
---           TExpr
---
---tcArrow t1 t2 = TArr t1 t2
-
-
-
---======================================================--
-tcInt :: TExpr
-
-tcInt = TCons "int" []
-
-
-
---======================================================--
-tcBool :: TExpr
-
-tcBool = TCons "bool" []
-
-
-
---======================================================--
-tcTvars_in :: TExpr -> 
-              [TVName]
-
-tcTvars_in t = tvars_in' t []
-               where
-                  tvars_in' (TVar x) l = x:l
-                  tvars_in' (TCons y ts) l = foldr tvars_in' l ts
-                  tvars_in' (TArr t1 t2) l = tvars_in' t1 (tvars_in' t2 l)
-
-
---==========================================================--
---=== 9.41 Substitutions                                 ===--
---==========================================================--
-
---======================================================--
-tcApply_sub :: Subst ->
-               TVName ->
-               TExpr
-
-tcApply_sub phi tvn 
-   = if TVar tvn == lookUpResult
-        then TVar tvn
-        else tcSub_type phi lookUpResult
-     where
-        lookUpResult = utLookupDef phi tvn (TVar tvn)
-
-
---======================================================--
-tcSub_type :: Subst -> 
-              TExpr -> 
-              TExpr
-
-tcSub_type phi (TVar tvn) = tcApply_sub phi tvn
-
-tcSub_type phi (TCons tcn ts) = TCons tcn (map (tcSub_type phi) ts)
-
-tcSub_type phi (TArr t1 t2) = TArr (tcSub_type phi t1) (tcSub_type phi t2)
-
-
---======================================================--
-tcScomp :: Subst -> 
-           Subst -> 
-           Subst
-
-tcScomp sub2 sub1 = sub1 ++ sub2
-
-
-
---======================================================--
-tcId_subst :: Subst
-
-tcId_subst = []
-
-
-
---======================================================--
-tcDelta :: TVName -> 
-           TExpr -> 
-           Subst
--- all TVar -> TVar substitutions lead downhill
-tcDelta tvn (TVar tvn2) 
-   | tvn == tvn2   = []
-   | tvn >  tvn2   = [(tvn, TVar tvn2)]
-   | tvn <  tvn2   = [(tvn2, TVar tvn)]
-
-tcDelta tvn non_var_texpr = [(tvn, non_var_texpr)]
-
-
---==========================================================--
---=== 9.42 Unification                                   ===--
---==========================================================--
-
---======================================================--
-tcExtend :: Subst -> 
-            TVName -> 
-            TExpr -> 
-            Reply Subst Message
-
-tcExtend phi tvn t 
-    | t == TVar tvn   
-    = Ok phi
-    | tvn `notElem` (tcTvars_in t)
-    = Ok ((tcDelta tvn t) `tcScomp` phi)
-    | otherwise
-    = fail
-         (   "Type error in source program:\n\n"         ++
-             "Circular substitution:\n      "            ++
-             tcShowtExpr (TVar tvn)                     ++ 
-              "\n   going to\n"                          ++
-             "      "                                   ++ 
-              tcShowtExpr t                              ++ 
-              "\n")
-
-
-
---======================================================--
-tcUnify :: Subst -> 
-           (TExpr, TExpr) -> 
-           Reply Subst Message
-
-tcUnify phi (TVar tvn, t) 
-  = if phitvn == TVar tvn
-       then tcExtend phi tvn phit
-       else tcUnify phi (phitvn, phit)
-     where
-       phitvn = tcApply_sub phi tvn
-       phit = tcSub_type phi t
-
-tcUnify phi (p@(TCons _ _), q@(TVar _))
-   = tcUnify phi (q, p)
-
-tcUnify phi (p@(TArr _ _), q@(TVar _))
-   = tcUnify phi (q, p)
-
-tcUnify phi (TArr t1 t2, TArr t1' t2')
-   = tcUnifyl phi [(t1, t1'), (t2, t2')]
-
-tcUnify phi (TCons tcn ts, TCons tcn' ts') 
-   | tcn == tcn' 
-   = tcUnifyl phi (ts `zip` ts')
-
-tcUnify phi (t1, t2)
-   = fail
-        (   "Type error in source program:\n\n"          ++
-            "Cannot unify\n      "                       ++
-            tcShowtExpr t1                               ++
-            "\n   with\n      "                          ++
-            tcShowtExpr t2                               ++
-            "\n"
-        )
-
-
-
---======================================================--
-tcUnifyl :: Subst ->  
-            [(TExpr, TExpr)] -> 
-            Reply Subst Message
-
-tcUnifyl phi eqns 
-   = foldr unify' (Ok phi) eqns
-     where
-       unify' eqn (Ok phi) = tcUnify phi eqn
-       unify' eqn (Fail m) = Fail m
-
-
-
---==========================================================--
---=== 9.42.2 Merging of substitutions                    ===--
---==========================================================--
-
---======================================================--
-tcMergeSubs :: Subst ->
-               Subst
-
-tcMergeSubs phi 
-   = if newBinds == []
-        then unifiedOlds
-        else tcMergeSubs (unifiedOlds ++ newBinds)
-     where
-        (newBinds, unifiedOlds) = tcMergeSubsMain phi
-
-
-
---======================================================--
-tcMergeSubsMain :: Subst -> 
-                   (Subst, Subst)   -- pair of new binds, unified olds
-
-tcMergeSubsMain phi
-   = (concat newUnifiersChecked,
-      zip oldVars (tcOldUnified newUnifiersChecked oldGroups))
-     where
-        oldVars = nub (utDomain phi)
-        oldGroups = map (utLookupAll phi) oldVars
-        newUnifiers = map (tcUnifySet tcId_subst) oldGroups
-        newUnifiersChecked = map tcCheckUnifier newUnifiers
-
-
-
---======================================================--
-tcCheckUnifier :: Reply Subst Message -> Subst
-
-tcCheckUnifier (Ok r) = r
-tcCheckUnifier (Fail m) 
-   = panic ("tcCheckUnifier: " ++ m)
-
-
-
---======================================================--
-tcOldUnified :: [Subst] -> [[TExpr]] -> [TExpr]
-
-tcOldUnified [] [] = []
-tcOldUnified (u:us) (og:ogs) 
-      = (tcSub_type u (head og)): tcOldUnified us ogs
-
-
---==========================================================--
---=== 9.5 Keeping track of types                         ===--
---==========================================================--
-
---======================================================--
-tcUnknowns_scheme :: TypeScheme -> 
-                     [TVName]
-
-tcUnknowns_scheme (Scheme scvs t) = tcTvars_in t `tcBar` scvs
-
-
-
---======================================================--
-tcBar :: (Eq a) => [a] -> 
-                   [a] -> 
-                   [a]
-
-tcBar xs ys = [ x | x <- xs,  not (x `elem` ys)]
-
-
-
---======================================================--
-tcSub_scheme :: Subst -> 
-                TypeScheme -> 
-                TypeScheme
-
-tcSub_scheme phi (Scheme scvs t)
-    = Scheme scvs (tcSub_type (tcExclude phi scvs) t)
-      where
-         tcExclude phi scvs = [(n,e) | (n,e) <- phi,  not (n `elem` scvs)]
-
-
-
---==========================================================--
---=== 9.53 Association lists                             ===--
---==========================================================--
-
---======================================================--
-tcCharVal :: AList Naam b -> Naam -> b
-
-tcCharVal al k
-   = utLookupDef al k (panic ("tcCharVal: no such variable: " ++ k))
-
-
---======================================================--
-tcUnknowns_te :: TcTypeEnv -> 
-                 [TVName]
-
-tcUnknowns_te gamma = concat (map tcUnknowns_scheme (utRange gamma))
-
-
-
---======================================================--
-tcSub_te :: Subst -> 
-            TcTypeEnv -> 
-            TcTypeEnv
-
-tcSub_te phi gamma = [(x, tcSub_scheme phi st) | (x, st) <- gamma]
-
-
---==========================================================--
---=== 9.6 New variables                                  ===--
---==========================================================--
-
---======================================================--
-tcNext_name :: TypeNameSupply -> 
-               TVName
-
-tcNext_name ns@(f, s) = ns
-
-
-
---======================================================--
-tcDeplete :: TypeNameSupply -> 
-             TypeNameSupply
-
-tcDeplete (f, s) = (f, tcNSSucc s)
-
-
-
---======================================================--
-tcSplit :: TypeNameSupply -> 
-           (TypeNameSupply, TypeNameSupply)
-
-tcSplit (f, s) = ((f2, [0]), (tcNSSucc f2, [0]))
-                 where f2 = tcNSDouble f
-
-
-
---======================================================--
-tcName_sequence :: TypeNameSupply -> 
-                   [TVName]
-
-tcName_sequence ns = tcNext_name ns: tcName_sequence (tcDeplete ns)
-
-
---======================================================--
-tcNSSucc :: [Int] ->
-            [Int]
-
-tcNSSucc []     = [1]
-tcNSSucc (n:ns) | n < tcNSslimit  = n+1: ns
-                | otherwise       = 0: tcNSSucc ns
-
-
---======================================================--
-tcNSDouble :: [Int] ->
-              [Int]
-
-tcNSDouble []   = []
-tcNSDouble (n:ns) 
-    = 2*n': ns'
-       where n' | n > tcNSdlimit  = n - tcNSdlimit
-               | otherwise       = n
-            ns' | n' == n    = tcNSDouble ns
-                | otherwise  = tcNSSucc (tcNSDouble ns)
-
-                       
-tcNSdlimit :: Int
-tcNSdlimit = 2^30
-
-tcNSslimit :: Int
-tcNSslimit = tcNSdlimit + (tcNSdlimit - 1)
-
-
---==========================================================--
---=== 9.7 The type-checker                               ===--
---==========================================================--
-
-
---======================================================--
-tc :: [TypeDef] ->
-      TcTypeEnv -> 
-      TypeNameSupply -> 
-      CExpr -> 
-      Reply TypeInfo Message
-
-tc tds gamma ns (ENum n) 
-   = Ok (tcId_subst, TCons "int" [], (TCons "int" [], ANum n))
-
-tc tds gamma ns (EVar x) 
-   = tcvar tds gamma ns x
-
-tc tds gamma ns (EConstr c)
-   = tcvar tds gamma ns c
-
-tc tds gamma ns (EAp e1 e2)
-   = tcap tds gamma ns e1 e2
-
-tc tds gamma ns (ELam [] e)
-   = tc tds gamma ns e
-tc tds gamma ns (ELam [x] e)
-   = tclambda tds gamma ns x e
-tc tds gamma ns (ELam (x:y:xs) e)
-   = tclambda tds gamma ns x (ELam (y:xs) e)
-
-tc tds gamma ns (ELet recursive dl e)
-   = if not recursive
-        then tclet tds gamma ns xs es e
-        else tcletrec tds gamma ns xs es e
-     where
-       (xs, es) = unzip2 dl
-
-tc tds gamma ns (ECase switch alts)
-   = tccase tds gamma ns switch constructors arglists exprs
-     where
-        (constructors, alters) = unzip2 alts
-        (arglists, exprs) = unzip2 alters
-
---==========================================================--
---=== 0.00 Type-checking case-expressions                ===--
---==========================================================--
-
-tcConstrTypeSchemes :: TypeNameSupply ->
-                       TypeDef ->
-                       (TypeNameSupply, AList Naam TypeScheme)
-
-tcConstrTypeSchemes ns (tn, stvs, cal)
-   = (finalNameSupply, map2nd enScheme cAltsCurried)
-     where
-        -- associates new type vars with each poly var
-        -- in the type
-        newTVs = tcNewTypeVars (tn, stvs, cal) ns
-
-        -- the actual type variables themselves
-        tVs = map second newTVs
-
-        -- the types of the constructor functions         
-        cAltsCurried = map2nd (foldr TArr tdSignature) cAltsXLated
-        cAltsXLated = map2nd (map (tcTDefSubst newTVs)) cal
-        tdSignature = TCons tn (map TVar tVs)
-        enScheme texp = Scheme ((nub.tcTvars_in) texp) texp
-
-        -- the revised name supply
-        finalNameSupply = applyNtimes ( length tVs + 2) tcDeplete ns
-
-        -- apply a function n times to an arg
-        applyNtimes n func arg 
-           | n ==0       = arg
-           | otherwise   = applyNtimes (n-1) func (func arg)
-                    
-
-
---======================================================--
---
-tccase :: [TypeDef] ->         -- constructor type definitions
-          TcTypeEnv ->         -- current type bindings
-          TypeNameSupply ->    -- name supply
-          CExpr ->             -- switch expression
-          [Naam] ->            -- constructors
-          [[Naam]] ->          -- argument lists
-          [CExpr] ->           -- resulting expressions
-          Reply TypeInfo Message
-
-
-tccase tds gamma ns sw cs als res
--- get the type definition in use, & an association of
--- variables therein to type vars & pass
--- Also, reorder the argument lists
--- and resulting expressions so as to reflect the 
--- sequence of constructors in the definition
- = if length tdCNames /=  length (nub cs)
-      then  fail
-            "Error in source program: missing alternatives in CASE"
-      else tccase1 tds gamma ns1 sw reOals reOres newTVs tdInUse
-     where
-        tdInUse = tcGetTypeDef tds cs
-        newTVs = tcNewTypeVars tdInUse ns2
-        (ns1, ns2) = tcSplit ns
-        merge = zip cs (zip als res)
-        tdCNames = map first (tcK33 tdInUse)
-        (reOals, reOres) = unzip2 (tcReorder tdCNames merge)
-
-
-
---======================================================--
---
-tcReorder :: [Naam] -> [(Naam,b)] -> [b]
-
-tcReorder []     uol =  []
-tcReorder (k:ks) uol 
-   = (utLookupDef uol k 
-        (fail
-            ("Error in source program: undeclared constructor '" ++ k ++
-               "' in CASE") ) )
-        : tcReorder ks uol 
-
-
---======================================================--
--- Projection functions and similar rubbish.
-tcDeOksel (Ok x) = x
-tcDeOksel (Fail m) = panic ("tcDeOkSel: " ++ m)
-tcOk13sel (Ok (a, b, c)) = a
-tcOk13sel (Fail m) = panic ("tcOk13sel: " ++ m)
-tcOk23sel (Ok (a, b, c)) = b
-tcOk23sel (Fail m) = panic ("tcOk23sel: " ++ m)
-tcOk33sel (Ok (a, b, c)) = c
-tcOk33sel (Fail m) = panic ("tcOk33sel: " ++ m)
-tcK31sel (a, b, c) = a
-tcK33 (a,b,c) = c
-
-
-
---======================================================--
---
-tccase1 :: [TypeDef] ->
-           TcTypeEnv -> 
-           TypeNameSupply ->
-           CExpr -> 
-           [[Naam]] ->
-           [CExpr] ->
-           AList Naam TVName ->
-           TypeDef ->
-           Reply TypeInfo Message
-
-tccase1 tds gamma ns sw reOals reOres newTVs tdInUse
--- calculate all the gammas for the RHS's
--- call tc for each RHS, so as to gather all the
--- sigmas and types for each RHS, then pass on
-   = tccase2 tds gamma ns2 sw reOals newTVs tdInUse rhsTcs
-     where
-        rhsGammas = tcGetAllGammas newTVs (tcK33 tdInUse) reOals
-        rhsTcs = rhsTc1 ns1 rhsGammas reOres
-        rhsTc1 nsl []     []     = []
-        rhsTc1 nsl (g:gs) (r:rs) 
-           = tc tds (g++gamma) nsl1 r : rhsTc1 nsl2 gs rs
-             where (nsl1, nsl2) = tcSplit nsl
-        (ns1, ns2) = tcSplit ns  
-        
-
---======================================================--
---
-tccase2 :: [TypeDef] ->
-           TcTypeEnv -> 
-           TypeNameSupply ->
-           CExpr -> 
-           [[Naam]] ->
-           AList Naam TVName ->
-           TypeDef ->
-           [Reply TypeInfo Message] ->
-           Reply TypeInfo Message
-
-tccase2 tds gamma ns sw reOals newTVs tdInUse rhsTcs
--- get the unifiers for T1 to Tk and hence the unifier for all
--- type variables in the type definition.  Also compute the
--- unifier of the result types.
-   = tccase3 tds gamma ns sw reOals newTVs tdInUse rhsTcs 
-             phi_1_to_n tau_1_to_n phi_rhs
-     where
-        phi_1_to_n = map tcOk13sel rhsTcs
-        tau_1_to_n = map tcOk23sel rhsTcs
-        phi_rhs = tcDeOksel (tcUnifySet tcId_subst tau_1_to_n)
-
-
---======================================================--
---
-tccase3 :: [TypeDef] ->                    -- tds
-           TcTypeEnv ->                    -- gamma
-           TypeNameSupply ->               -- ns
-           CExpr ->                        -- sw
-           [[Naam]] ->                     -- reOals
-           AList Naam TVName ->            -- newTVs
-           TypeDef ->                      -- tdInUse
-           [Reply TypeInfo Message] ->     -- rhsTcs
-           [Subst] ->                      -- phi_1_to_n
-           [TExpr] ->                      -- tau_1_to_n
-           Subst ->                        -- phi_rhs
-           Reply TypeInfo Message
-
-tccase3 tds gamma ns sw reOals newTVs tdInUse rhsTcs
-        phi_1_to_n tau_1_to_n phi_rhs
--- make up substitutions for each of the unknown tvars
--- merge the substitutions into one
--- apply the substitution to the typedef's signature to get the
--- most general allowable input type
--- call tc to get the type of the switch expression
--- check that this is an instance of the deduced input type
--- gather the new bindings from the RHSs and switch expression
--- return Ok (the big substitution, the result type, gathered bindings)
-   = Ok (phi_Big, tau_final, 
-            (tau_final, ACase tree_s 
-                        (zip tdCNames (zip reOals annotatedRHSs))))
-     where
-        phi_sTau_sTree_s = tc tds gamma ns sw 
-        phi_s  = tcOk13sel phi_sTau_sTree_s
-        tau_s  = tcOk23sel phi_sTau_sTree_s
-        tree_s = tcOk33sel phi_sTau_sTree_s
-        
-        phi = tcMergeSubs (concat phi_1_to_n ++ phi_rhs ++ phi_s)
-
-        tau_lhs = tcSub_type phi tdSignature
-
-        phi_lhs = tcUnify tcId_subst (tau_lhs, tau_s) -- reverse these?
-
-        phi_Big = tcMergeSubs (tcDeOksel phi_lhs ++ phi) 
-
-        tau_final = tcSub_type phi_Big (head (map tcOk23sel rhsTcs))
-
-        annotatedRHSs = map tcOk33sel rhsTcs
-        tVs = map second newTVs
-        tdSignature = TCons (tcK31sel tdInUse) (map TVar tVs)
-        tdCNames = map first (tcK33 tdInUse)
-
-
---======================================================--
---
-tcUnifySet :: Subst -> 
-              [TExpr] -> 
-              Reply Subst Message
-
-tcUnifySet sub (e1:[]) = Ok sub
-tcUnifySet sub (e1:e2:[]) 
-   = tcUnify sub (e1, e2)
-tcUnifySet sub (e1:e2:e3:es) 
-   = tcUnifySet newSub (e2:e3:es)
-     where 
-        newSub = tcDeOksel (tcUnify sub (e1, e2))
-
-
---======================================================--
---
-tcNewTypeVars :: TypeDef -> 
-                 TypeNameSupply ->
-                 AList Naam TVName
-
-tcNewTypeVars (t, vl, c) ns = zip vl (tcName_sequence ns)
-
-
-
---======================================================--
---
-tcGetGammaN :: AList Naam TVName ->
-               ConstrAlt -> 
-               [Naam] ->
-               AList Naam TypeScheme
-
-tcGetGammaN tvl (cname, cal) cparams 
-   = zip cparams (map (Scheme [] . tcTDefSubst tvl) cal)
-
-
-
---======================================================--
---
-tcTDefSubst :: AList Naam TVName ->
-               TDefExpr ->
-               TExpr
-
-tcTDefSubst nameMap (TDefVar n)
-   = f result 
-     where
-        f (Just tvn) = TVar tvn
-        f Nothing    = TCons n []
-        result = utLookup nameMap n
-
-tcTDefSubst nameMap (TDefCons c al)
-   = TCons c (map (tcTDefSubst nameMap) al)
-
-
---======================================================--
---
-tcGetAllGammas :: AList Naam TVName ->
-                  [ConstrAlt] ->
-                  [[Naam]] ->
-                  [AList Naam TypeScheme]
-
-tcGetAllGammas tvl []           [] = []
--- note param lists cparamss must be ordered in
--- accordance with calts
-tcGetAllGammas tvl (calt:calts) (cparams:cparamss) = 
-      tcGetGammaN tvl calt cparams : 
-         tcGetAllGammas tvl calts cparamss
-
-
---======================================================--
---
-tcGetTypeDef :: [TypeDef] ->    -- type definitions
-                [Naam] ->       -- list of constructors used here
-                TypeDef
-
-tcGetTypeDef tds cs 
-   = if length tdefset == 0 
-        then fail "Undeclared constructors in use"
-     else if length tdefset > 1
-        then fail "CASE expression contains mixed constructors"
-     else head tdefset
-     where
-        tdefset = nub
-                  [ (tname, ftvs, cl) |
-                    (tname, ftvs, cl) <- tds,
-                    usedc <- cs,
-                    usedc `elem` (map first cl) ]
-
-
---==========================================================--
---=== 9.71 Type-checking lists of expressions            ===--
---==========================================================--
-
---======================================================--
---
-tcl :: [TypeDef] ->
-       TcTypeEnv     -> 
-       TypeNameSupply  -> 
-       [CExpr]       -> 
-       Reply (Subst, [TExpr], [AnnExpr Naam TExpr]) Message
-
-tcl tds gamma ns []
-   = Ok (tcId_subst, [], [])
-tcl tds gamma ns (e:es) 
-   = tcl1 tds gamma ns0 es (tc tds gamma ns1 e)
-     where
-        (ns0, ns1) = tcSplit ns
-
-
---======================================================--
---
-tcl1 tds gamma ns es (Fail m) = Fail m
-tcl1 tds gamma ns es (Ok (phi, t, annotatedE)) 
-   = tcl2 phi t (tcl tds (tcSub_te phi gamma) ns es) annotatedE
-
-
---======================================================--
---
-tcl2 phi t (Fail m) annotatedE = Fail m
-tcl2 phi t (Ok (psi, ts, annotatedEs)) annotatedE 
-   = Ok (psi `tcScomp` phi, (tcSub_type psi t):ts, 
-         annotatedE:annotatedEs)
-
-
---==========================================================--
---=== 9.72 Type-checking variables                       ===--
---==========================================================--
-
---======================================================--
---
-tcvar :: [TypeDef] ->
-         TcTypeEnv     -> 
-         TypeNameSupply  -> 
-         Naam        -> 
-         Reply TypeInfo Message
-
-tcvar tds gamma ns x = Ok (tcId_subst, finalType, (finalType, AVar x))
-                       where
-                          scheme = tcCharVal gamma x
-                          finalType = tcNewinstance ns scheme
-
-
---======================================================--
---
-tcNewinstance :: TypeNameSupply -> 
-                 TypeScheme -> 
-                 TExpr
-
-tcNewinstance ns (Scheme scvs t) = tcSub_type phi t
-                                   where 
-                                      al  = scvs `zip` (tcName_sequence ns)
-                                      phi = tcAl_to_subst al
-
-
---======================================================--
---
-tcAl_to_subst :: AList TVName TVName -> 
-                 Subst
-
-tcAl_to_subst al = map2nd TVar al
-
-
---==========================================================--
---=== 9.73 Type-checking applications                    ===--
---==========================================================--
-
---======================================================--
---
-tcap :: [TypeDef] ->
-        TcTypeEnv     -> 
-        TypeNameSupply  -> 
-        CExpr         -> 
-        CExpr         -> 
-        Reply TypeInfo Message
-
-tcap tds gamma ns e1 e2 = tcap1 tvn (tcl tds gamma ns' [e1, e2])
-                          where
-                             tvn = tcNext_name ns
-                             ns' = tcDeplete ns
-
-
---======================================================--
---
-tcap1 tvn (Fail m)
-   = Fail m
-tcap1 tvn (Ok (phi, [t1, t2], [ae1, ae2])) 
-   = tcap2 tvn (tcUnify phi (t1, t2 `TArr` (TVar tvn))) [ae1, ae2]
-
-
---======================================================--
---
-tcap2 tvn (Fail m) [ae1, ae2]
-   = Fail m
-tcap2 tvn (Ok phi) [ae1, ae2] 
-   = Ok (phi, finalType, (finalType, AAp ae1 ae2))
-     where
-        finalType = tcApply_sub phi tvn
-
-
---==========================================================--
---=== 9.74 Type-checking lambda abstractions             ===--
---==========================================================--
-
---======================================================--
---
-tclambda :: [TypeDef] ->
-            TcTypeEnv     -> 
-            TypeNameSupply  -> 
-            Naam        -> 
-            CExpr         -> 
-            Reply TypeInfo Message
-
-tclambda tds gamma ns x e = tclambda1 tvn x (tc tds gamma' ns' e)
-                            where
-                               ns' = tcDeplete ns
-                               gamma' = tcNew_bvar (x, tvn): gamma
-                               tvn = tcNext_name ns
-
-
---======================================================--
---
-tclambda1 tvn x (Fail m) = Fail m
-
-tclambda1 tvn x (Ok (phi, t, annotatedE)) = 
-   Ok (phi, finalType, (finalType, ALam [x] annotatedE))
-   where
-      finalType = (tcApply_sub phi tvn) `TArr` t
-
-
---======================================================--
---
-tcNew_bvar (x, tvn) = (x, Scheme [] (TVar tvn))
-
-
---==========================================================--
---=== 9.75 Type-checking let-expressions                 ===--
---==========================================================--
-
---======================================================--
---
-tclet :: [TypeDef] ->
-         TcTypeEnv     -> 
-         TypeNameSupply  -> 
-         [Naam]       -> 
-         [CExpr]       -> 
-         CExpr         -> 
-         Reply TypeInfo Message
-
-tclet tds gamma ns xs es e 
-   = tclet1 tds gamma ns0 xs e rhsTypes
-     where
-        (ns0, ns1) = tcSplit ns
-        rhsTypes = tcl tds gamma ns1 es
-        
-
---======================================================--
---
-tclet1 tds gamma ns xs e (Fail m) = Fail m
-
-tclet1 tds gamma ns xs e (Ok (phi, ts, rhsAnnExprs)) 
-   = tclet2 phi xs False (tc tds gamma'' ns1 e) rhsAnnExprs
-     where
-        gamma'' = tcAdd_decls gamma' ns0 xs ts
-        gamma'  = tcSub_te phi gamma
-        (ns0, ns1) = tcSplit ns
-
-
---======================================================--
---
-tclet2 phi xs recFlag (Fail m) rhsAnnExprs = Fail m
-
-tclet2 phi xs recFlag (Ok (phi', t, annotatedE)) rhsAnnExprs
-   = Ok (phi' `tcScomp` phi, t, (t, ALet recFlag (zip xs rhsAnnExprs) annotatedE))
-
-
---======================================================--
---
-tcAdd_decls :: TcTypeEnv     ->
-               TypeNameSupply  -> 
-               [Naam]       ->
-               [TExpr]   ->
-               TcTypeEnv
-
-tcAdd_decls gamma ns xs ts = (xs `zip` schemes) ++ gamma
-                             where
-                                schemes = map (tcGenbar unknowns ns) ts
-                                unknowns = tcUnknowns_te gamma
-
-
---======================================================--
---
-tcGenbar unknowns ns t = Scheme (map second al) t'
-                         where
-                            al = scvs `zip` (tcName_sequence ns)
-                            scvs = (nub (tcTvars_in t)) `tcBar` unknowns
-                            t' = tcSub_type (tcAl_to_subst al) t
-
-
-
---==========================================================--
---=== 9.76 Type-checking letrec-expressions              ===--
---==========================================================--
-
---======================================================--
---
-tcletrec :: [TypeDef] ->
-            TcTypeEnv     -> 
-            TypeNameSupply  -> 
-            [Naam]       -> 
-            [CExpr]       -> 
-            CExpr         -> 
-            Reply TypeInfo Message
-
-tcletrec tds gamma ns xs es e 
-   = tcletrec1 tds gamma ns0 xs nbvs e 
-               (tcl tds (nbvs ++ gamma) ns1 es)
-     where
-        (ns0, ns') = tcSplit ns
-        (ns1, ns2) = tcSplit ns'
-        nbvs = tcNew_bvars xs ns2
-
-
---======================================================--
---
-tcNew_bvars xs ns = map tcNew_bvar (xs `zip` (tcName_sequence ns))
-
-
-
---======================================================--
---
-tcletrec1 tds gamma ns xs nbvs e (Fail m) = (Fail m)
-
-tcletrec1 tds gamma ns xs nbvs e (Ok (phi, ts, rhsAnnExprs)) 
-   = tcletrec2 tds gamma' ns xs nbvs' e (tcUnifyl phi (ts `zip` ts')) rhsAnnExprs
-     where
-        ts' = map tcOld_bvar nbvs'
-        nbvs' = tcSub_te phi nbvs
-        gamma' = tcSub_te phi gamma
-
-
---======================================================--
---
-tcOld_bvar (x, Scheme [] t) = t
-
-
---======================================================--
---
-tcletrec2 tds gamma ns xs nbvs e (Fail m) rhsAnnExprs = (Fail m)
-
-tcletrec2 tds gamma ns xs nbvs e (Ok phi) rhsAnnExprs
-   = tclet2 phi xs True (tc tds gamma'' ns1 e) rhsAnnExprs 
-     where
-        ts = map tcOld_bvar nbvs'
-        nbvs' = tcSub_te phi nbvs
-        gamma' = tcSub_te phi gamma
-        gamma'' = tcAdd_decls gamma' ns0 (map first nbvs) ts
-        (ns0, ns1) = tcSplit ns
-        subnames = map first nbvs
-
-
---==========================================================--
---=== End                               TypeCheck5.m (1) ===--
---==========================================================--
diff --git a/ghc/tests/programs/jules_xref/jules_xref.stdout b/ghc/tests/programs/jules_xref/jules_xref.stdout
deleted file mode 100644 (file)
index 8a8af9e..0000000
+++ /dev/null
@@ -1,500 +0,0 @@
-("A",[3])
-("AAp",[26,27,63,937])
-("ACase",[30,31,67,719])
-("AConstr",[25,25,62])
-("ALam",[32,32,64,967])
-("ALet",[28,29,65,1015])
-("AList",[415,553,649,675,700,762,770,773,782,799,802,899])
-("ANum",[24,24,61,515])
-("AVar",[23,23,60,879])
-("Also",[596,682])
-("AnnExpr",[17,18,44,45,52,120,842])
-("Association",[411])
-("AtomicProgram",[119])
-("BaseDefs",[8])
-("Big",[718,733,735])
-("CASE",[601,622,822])
-("CExpr",[511,586,589,646,648,673,698,841,914,915,952,987,988,1052,1053])
-("Cannot",[306])
-("Char",[78,109,120])
-("Circular",[268])
-("ConstrAlt",[771,800])
-("Corrected",[4])
-("EAp",[523])
-("ECase",[540])
-("EConstr",[520])
-("ELam",[526,528,530,531])
-("ELet",[533])
-("ENum",[514])
-("EVar",[517])
-("End",[1104])
-("Eq",[390])
-("Error",[601,621])
-("Fail",[125,131,324,324,364,629,631,633,635,854,854,861,861,926,927,934,935,964,964,1000,1000,1012,1012,1073,1073,1090,1090])
-("False",[81,89,90,92,131,150,1003])
-("File",[3])
-("Formatting",[13])
-("Int",[474,475,483,484,495,498])
-("Just",[789])
-("Keeping",[378])
-("Merging",[329])
-("Message",[120,258,280,318,361,512,590,651,677,678,702,706,747,842,877,916,953,989,1054])
-("MyUtils",[10])
-("Naam",[44,45,52,108,120,415,415,553,587,588,615,615,647,649,674,675,699,700,762,770,772,773,782,799,801,802,815,842,876,951,986,1022,1051])
-("New",[438])
-("No",[125])
-("Nothing",[790])
-("Ok",[124,130,133,262,264,321,323,363,515,628,630,632,634,717,718,749,845,855,862,863,879,928,936,937,966,967,1002,1014,1015,1075,1092])
-("Projection",[627])
-("RHS",[654,655,656])
-("RHSs",[716])
-("Reply",[120,258,280,318,361,512,590,651,677,678,702,706,747,842,877,916,953,989,1054])
-("Representation",[155])
-("Scheme",[141,385,403,404,569,776,891,974,1034,1085])
-("Subst",[43,197,210,222,223,224,231,240,255,258,278,280,316,318,333,334,346,347,347,361,361,370,399,430,703,705,745,747,842,900])
-("Substitutions",[193])
-("T1",[681])
-("TArr",[87,90,103,163,189,218,218,293,296,296,566,929,969])
-("TCons",[84,85,86,93,102,170,177,188,216,216,290,299,299,515,515,568,739,790,794])
-("TDefCons",[793])
-("TDefExpr",[783])
-("TDefVar",[786])
-("TExpr",[44,45,52,77,108,120,159,160,161,168,175,182,199,211,212,239,257,279,279,317,317,370,370,704,746,784,842,842,889,1023])
-("TVName",[183,198,238,256,383,423,443,468,649,675,700,762,770,782,799,899,899])
-("TVar",[83,101,187,202,203,206,214,241,241,242,244,245,261,269,282,283,290,293,568,739,789,902,929,974])
-("TcTypeEnv",[117,422,431,432,509,584,644,671,696,839,874,912,949,984,1020,1024,1049])
-("The",[503])
-("Tk",[681])
-("True",[87,88,91,95,130,150,1093])
-("Type",[97,267,305,548,833,868,906,943,978,1043])
-("TypeCheck5",[3,7,1104])
-("TypeDef",[508,552,583,643,650,670,676,695,701,760,814,816,838,873,911,948,983,1048])
-("TypeEnv",[53,120])
-("TypeInfo",[512,590,651,677,678,702,706,877,916,953,989,1054])
-("TypeNameSupply",[118,442,450,451,458,459,459,467,510,551,553,585,645,672,697,761,840,875,887,913,950,985,1021,1050])
-("TypeScheme",[382,400,401,553,773,802,888])
-("Undeclared",[820])
-("Unification",[251])
-("Utils",[9])
-("a",[4,16,17,390,390,391,392,574,630,630,632,634,636,636,637])
-("aFN",[66,70])
-("abstractions",[943])
-("accordance",[806])
-("actual",[562])
-("ae1",[26,27,63,63,928,929,934,936,937])
-("ae2",[26,27,63,63,928,929,934,936,937])
-("al",[417,418,793,794,893,894,902,902,1034,1036,1038])
-("all",[241,654,655,681])
-("allowable",[713])
-("als",[593,607])
-("alternatives",[601])
-("alters",[543,544])
-("alts",[67,68,540,543])
-("an",[574,594,715])
-("and",[597,627,656,681,716])
-("ann",[20,21])
-("annAlts",[30,31])
-("annDefs",[28,29])
-("annoTree",[133,135])
-("annotatedE",[855,856,861,862,864,966,967,1014,1015])
-("annotatedEs",[862,864])
-("annotatedRHSs",[720,737])
-("applications",[906])
-("apply",[574,712])
-("applyNtimes",[572,575,577])
-("arg",[574,575,576,577])
-("arglists",[541,544])
-("argument",[588,596])
-("as",[597,655])
-("associates",[558])
-("association",[594])
-("b",[16,18,83,84,85,86,93,415,415,615,615,630,632,632,634,636,637])
-("baseTypes",[122,128])
-("be",[805])
-("big",[717])
-("bindings",[584,716,717])
-("binds",[347])
-("body",[70,71])
-("bool",[85,85,150,177])
-("builtInTypes",[127,146,149])
-("bvar",[958,974,1067,1078,1085,1095])
-("bvars",[1062,1067])
-("c",[17,18,25,25,62,102,520,521,630,632,634,634,636,637,637,764,793,794])
-("cAltsCurried",[556,566])
-("cAltsXLated",[566,567])
-("cal",[555,560,567,775,776])
-("calculate",[654])
-("call",[655,714])
-("calt",[807,808])
-("calts",[806,807,809])
-("case",[548])
-("char",[86,86])
-("check",[715])
-("checker",[3,503])
-("checking",[548,833,868,906,943,978,1043])
-("chr",[83])
-("cl",[93,95,826,827,829])
-("cname",[775])
-("compute",[682])
-("concat",[66,68,95,102,143,147,350,425,727])
-("constrTypes",[145,147])
-("constructor",[565,583,621])
-("constructors",[541,543,587,598,815,820,822])
-("contains",[822])
-("cparams",[775,776,807,808])
-("cparamss",[805,807,809])
-("cs",[64,593,599,604,607,818,828])
-("current",[584])
-("decls",[1005,1020,1026,1098])
-("deduced",[715])
-("definition",[594,598,682])
-("definitions",[583,814])
-("dl",[65,66,533,538])
-("downhill",[241])
-("e",[32,32,64,64,406,406,526,527,528,529,530,531,533,535,536,846,847,955,955,991,992,1000,1002,1003,1056,1057,1073,1075,1076,1090,1092,1093])
-("e1",[523,524,749,750,751,752,755,918,918])
-("e2",[523,524,750,751,752,753,755,918,918])
-("e3",[752,753])
-("each",[558,655,656,710])
-("elem",[394,406,829])
-("else",[125,204,285,339,536,602,821,823])
-("enScheme",[556,569])
-("eqn",[323,323,324])
-("eqns",[320,321])
-("error",[267,305])
-("es",[535,536,538,752,753,846,847,854,855,856,991,995,1056,1058])
-("expr",[34,35,122,128])
-("expression",[586,714,716,822])
-("expressions",[155,548,589,597,833,978,1043])
-("exprs",[541,544])
-("f",[20,21,27,27,29,31,32,35,38,133,133,139,141,445,453,453,461,462,787,789,790])
-("f2",[461,461,462])
-("fail",[266,304,600,620,820,822])
-("failed",[97])
-("final",[718,719,735])
-("finalConstrTypes",[128,139,147])
-("finalNameSupply",[556,572])
-("finalNs",[128,145])
-("finalType",[879,879,882,937,937,939,967,967,969])
-("first",[608,740,829,1098,1100])
-("foldr",[188,321,566])
-("for",[4,654,655,656,681,681,710])
-("from",[716])
-("ftvs",[826,827])
-("fullEnv",[124,139,143])
-("fullEnvWords",[124,143])
-("func",[575,577,577])
-("function",[574])
-("functions",[565,627])
-("g",[662,663])
-("gamma",[425,425,434,434,514,517,518,520,521,523,524,526,527,528,529,530,531,533,535,536,540,541,593,602,653,657,663,680,684,696,708,722,844,846,847,847,854,855,856,879,881,918,918,955,955,958,958,991,992,995,1000,1002,1003,1005,1005,1006,1006,1026,1026,1029,1056,1057,1058,1073,1075,1076,1080,1080,1090,1092,1093,1097,1097,1098,1098])
-("gammas",[654])
-("gather",[655,716])
-("gathered",[717])
-("general",[713])
-("get",[594,681,712,714])
-("going",[270])
-("good",[123,130,131])
-("gs",[662,663])
-("head",[374,735,823])
-("hence",[681])
-("here",[815])
-("if",[123,202,283,337,534,599,819,821])
-("import",[8,9,10])
-("in",[182,185,185,187,188,188,189,189,189,263,267,305,385,559,569,594,598,601,601,621,622,682,805,820,1037])
-("input",[713,715])
-("instance",[715])
-("int",[84,84,170,515,515])
-("into",[711])
-("is",[715])
-("k",[417,418,418,618,619,621])
-("ks",[618,623])
-("l",[187,187,188,188,189,189])
-("lambda",[943])
-("lead",[241])
-("length",[572,599,599,819,821])
-("let",[978])
-("letrec",[1043])
-("lhs",[729,731,731,733])
-("list",[815])
-("lists",[411,588,596,805,833])
-("ljustify",[112])
-("lookUpResult",[202,204,206])
-("lookup",[83,96,97,98,99])
-("m",[3,324,324,364,365,629,629,631,631,633,633,635,635,854,854,861,861,926,927,934,935,964,964,1000,1000,1012,1012,1073,1073,1090,1090,1104])
-("mainExpr",[28,29])
-("make",[710])
-("map",[29,31,66,68,95,102,139,143,216,354,355,356,425,563,567,568,608,687,688,735,737,738,739,740,776,794,829,1028,1034,1067,1078,1095,1098,1100])
-("map2nd",[556,566,567,902])
-("mapAccuml",[146])
-("mapAnnAlt",[31,37])
-("mapAnnDefn",[29,34])
-("mapAnnExpr",[21,23,24,25,26,28,30,32])
-("me",[65,66])
-("merge",[607,609,711])
-("missing",[601])
-("mixed",[822])
-("module",[7])
-("most",[713])
-("must",[805])
-("n",[24,24,61,112,267,267,268,270,270,273,305,305,306,308,308,310,406,406,406,478,478,478,487,488,489,489,489,490,491,491,514,515,574,575,576,577,685,685,687,688,689,703,704,709,709,727,786,790,791])
-("naam",[34,35,37,38,70,71,111,112,141,141])
-("name",[97,442,445,470,571,585,920,959])
-("nameMap",[786,791,793,794])
-("nbvs",[1057,1058,1062,1073,1075,1076,1078,1079,1079,1090,1092,1095,1096,1096,1098,1100])
-("new",[347,558,716])
-("newBinds",[337,339,341])
-("newSub",[753,755])
-("newTVs",[560,563,567,602,605,653,657,659,680,684,700,708,738])
-("newUnifiers",[355,356])
-("newUnifiersChecked",[350,351,356])
-("no",[418])
-("node",[20,21,58,58])
-("nodeType",[58])
-("non",[247,247])
-("not",[394,406,534])
-("notArrow",[93,94])
-("notElem",[263])
-("note",[805])
-("ns",[122,146,445,445,470,470,470,478,478,479,487,488,491,491,492,514,517,518,520,521,523,524,526,527,528,529,530,531,533,535,536,540,541,555,560,572,593,606,653,665,680,684,697,708,722,764,764,844,846,849,854,855,856,879,882,891,893,918,918,920,921,921,955,955,957,957,959,991,994,1000,1002,1007,1026,1028,1034,1036,1056,1060,1060,1061,1067,1067,1073,1075,1076,1090,1092,1099])
-("ns0",[847,849,992,994,1005,1007,1057,1060,1098,1099])
-("ns1",[602,606,660,665,847,849,994,995,1003,1007,1058,1061,1093,1099])
-("ns2",[605,606,657,665,1061,1062])
-("nsl",[661,662,664])
-("nsl1",[663,664])
-("nsl2",[663,664])
-("nub",[100,353,569,599,825,1037])
-("of",[13,155,329,347,378,565,594,598,683,710,714,715,815,833])
-("og",[373,374])
-("ogs",[373,374])
-("oldGroups",[351,354,355])
-("oldVars",[351,353,354])
-("olds",[347])
-("on",[656])
-("one",[711])
-("ordered",[805])
-("otherwise",[99,265,479,490,492,577])
-("p",[290,291,293,294])
-("pair",[347])
-("panic",[97,365,418,629,631,633,635])
-("param",[805])
-("pars",[37,38])
-("pass",[595,656])
-("phi",[47,47,201,204,206,214,214,216,216,218,218,218,260,262,264,282,284,285,287,288,290,291,293,294,296,297,299,301,303,320,321,323,323,336,341,349,353,354,403,404,406,406,434,434,685,685,687,689,703,705,709,709,718,722,723,723,724,725,727,727,727,727,729,731,733,733,733,735,855,856,856,861,862,863,891,894,928,929,936,937,939,966,967,969,1002,1003,1006,1012,1014,1014,1015,1015,1075,1076,1079,1080,1092,1093,1096,1097])
-("phit",[284,285,288])
-("phitvn",[283,285,287])
-("poly",[558])
-("pretty",[81,83,84,85,86,87,88,89,90,91,92,93,95])
-("program",[267,305,601,621])
-("psi",[862,863,863])
-("q",[290,291,293,294])
-("r",[363,363,662,663])
-("reOals",[602,609,653,657,659,680,684,699,708,720])
-("reOres",[602,609,653,660])
-("recFlag",[28,29,1012,1014,1015])
-("recursive",[533,534])
-("reflect",[597])
-("reorder",[596])
-("res",[593,607])
-("resExpr",[37,38])
-("result",[683,717,787,791])
-("resulting",[589,597])
-("results",[13])
-("return",[717])
-("reverse",[731])
-("revised",[571])
-("rf",[65])
-("rhs",[685,689,705,709,727])
-("rhsAnnExprs",[1002,1003,1012,1014,1015,1075,1076,1090,1092,1093])
-("rhsGammas",[659,660])
-("rhsTc1",[660,661,662,663])
-("rhsTcs",[657,660,680,684,687,688,702,708,735,737])
-("rhsTypes",[992,995])
-("rootEnv",[137,139])
-("rootSubst",[133,135])
-("rootTree",[124,135,137])
-("rootType",[133])
-("rs",[662,663])
-("rubbish",[627])
-("s",[445,453,453,461,654,712,719,722,723,723,724,724,725,725,727,731])
-("sTau",[722,723,724,725])
-("sTree",[722,723,724,725])
-("scheme",[382,385,399,403,425,434,881,882])
-("schemes",[1026,1028])
-("scvs",[385,385,403,404,404,406,406,891,893,1036,1037])
-("second",[68,68,563,738,1034])
-("sequence",[467,470,470,598,764,893,1036,1067])
-("sigmas",[656])
-("signature",[712])
-("similar",[627])
-("so",[597,655])
-("source",[267,305,601,621])
-("st",[434,434])
-("stvs",[555,560])
-("sub",[197,201,214,287,749,749,750,751,752,755,939,969])
-("sub1",[226,226])
-("sub2",[226,226])
-("subnames",[1100])
-("subst",[231,233,355,515,689,731,845,879,894,899,902,1038])
-("substitution",[268,712,717])
-("substitutions",[241,329,710,711])
-("such",[418])
-("supply",[571,585])
-("sw",[67,68,593,602,653,657,680,684,698,708,722])
-("switch",[540,541,586,714,716])
-("switchExpr",[30,31])
-("t",[80,81,98,98,100,101,101,141,141,185,185,260,261,263,264,272,282,288,385,385,403,404,764,855,856,861,862,863,891,891,966,969,1014,1015,1015,1034,1034,1037,1038,1038,1085,1085])
-("t1",[87,88,90,91,103,103,163,163,189,189,218,218,296,296,297,297,303,307,928,929])
-("t2",[87,89,90,92,103,103,163,163,189,189,218,218,296,296,297,297,303,309,928,929])
-("t2e",[56,58,58,60,61,62,63,63,63,64,64,65,66,67,68,68,71])
-("tVs",[563,568,572,738,739])
-("tau",[685,688,689,704,709,718,719,724,729,731,731,735])
-("tc",[127,508,514,517,520,523,526,527,528,530,533,540,655,663,714,722,847,955,1003,1093])
-("tcAdd",[1005,1020,1026,1098])
-("tcAl",[894,899,902,1038])
-("tcApply",[197,201,214,287,939,969])
-("tcArrow",[159,163])
-("tcBar",[385,390,394,1037])
-("tcBool",[175,177])
-("tcCharVal",[415,417,418,881])
-("tcCheck",[117,122])
-("tcCheckUnifier",[356,361,363,364,365])
-("tcConstrTypeSchemes",[146,551,555])
-("tcDeOkSel",[629])
-("tcDeOksel",[628,629,689,733,755])
-("tcDelta",[238,242,247,264])
-("tcDeplete",[450,453,470,572,921,957])
-("tcExclude",[404,406])
-("tcExtend",[255,260,284])
-("tcGenbar",[1028,1034])
-("tcGetAllGammas",[659,799,804,807,809])
-("tcGetGammaN",[770,775,808])
-("tcGetTypeDef",[604,814,818])
-("tcId",[231,233,355,515,689,731,845,879])
-("tcInt",[168,170])
-("tcK31sel",[636,739])
-("tcK33",[608,637,659,740])
-("tcMapAnnExpr",[16,20,27,27,29,31,32,35,38,47])
-("tcMergeSubs",[333,336,339,727,733])
-("tcMergeSubsMain",[341,346,349])
-("tcNSDouble",[462,483,486,487,491,492])
-("tcNSSucc",[453,461,474,477,478,479,492])
-("tcNSdlimit",[489,489,495,496,499,499])
-("tcNSslimit",[478,498,499])
-("tcName",[467,470,470,764,893,1036,1067])
-("tcNew",[958,974,1062,1067,1067])
-("tcNewTypeVars",[560,605,760,764])
-("tcNewinstance",[882,887,891])
-("tcNext",[442,445,470,920,959])
-("tcOk13sel",[630,631,631,687,723])
-("tcOk23sel",[632,633,633,688,724,735])
-("tcOk33sel",[634,635,635,725,737])
-("tcOld",[1078,1085,1095])
-("tcOldUnified",[351,370,372,373,374])
-("tcPretty",[108,111,143])
-("tcReorder",[609,615,617,618,623])
-("tcResult",[123,127,133])
-("tcScomp",[222,226,264,863,1015])
-("tcShowtExpr",[77,80,97,113,269,272,307,309])
-("tcSplit",[458,461,606,664,665,849,994,1007,1060,1061,1099])
-("tcSub",[47,204,210,214,216,216,218,218,218,288,374,399,403,404,430,434,434,729,735,856,863,891,1006,1038,1079,1080,1096,1097])
-("tcSubstAnnTree",[43,47,135])
-("tcTDefSubst",[567,776,782,786,793,794])
-("tcTreeToEnv",[52,55,137])
-("tcTvars",[182,185,263,385,569,1037])
-("tcUnify",[278,282,285,290,291,293,294,296,299,303,323,731,751,755,929])
-("tcUnifySet",[355,689,745,749,750,752,753])
-("tcUnifyl",[297,301,316,320,1076])
-("tcUnknowns",[382,385,422,425,425,1029])
-("tcap",[524,911,918])
-("tcap1",[918,926,928])
-("tcap2",[929,934,936])
-("tccase",[541,583,593])
-("tccase1",[602,643,653])
-("tccase2",[657,670,680])
-("tccase3",[684,695,708])
-("tcl",[838,844,846,856,918,995,1058])
-("tcl1",[847,854,855])
-("tcl2",[856,861,862])
-("tclambda",[529,531,948,955])
-("tclambda1",[955,964,966])
-("tclet",[535,983,991])
-("tclet1",[992,1000,1002])
-("tclet2",[1003,1012,1014,1093])
-("tcletrec",[536,1048,1056])
-("tcletrec1",[1057,1073,1075])
-("tcletrec2",[1076,1090,1092])
-("tcn",[216,216,299,299,300,300])
-("tcvar",[518,521,873,879])
-("tdCNames",[599,608,609,720,740])
-("tdInUse",[602,604,605,608,653,657,659,680,684,701,708,739,740])
-("tdSignature",[566,568,729,739])
-("tdefs",[122,127,146])
-("tdefset",[819,821,823,825])
-("tds",[514,517,518,520,521,523,524,526,527,528,529,530,531,533,535,536,540,541,593,602,604,653,657,663,680,684,695,708,722,818,827,844,846,847,847,854,855,856,879,918,918,955,955,991,992,995,1000,1002,1003,1056,1057,1058,1073,1075,1076,1090,1092,1093])
-("te",[422,425,430,434,856,1006,1029,1079,1080,1096,1097])
-("texp",[569,569,569])
-("texpr",[247,247])
-("that",[715])
-("the",[559,562,565,565,571,594,596,597,598,654,654,655,681,681,682,682,683,710,711,712,712,712,714,714,715,716,716,717,717])
-("themselves",[562])
-("then",[124,203,284,338,535,600,656,820,822])
-("therein",[595])
-("these",[731])
-("this",[715])
-("tijp",[70,71])
-("times",[574])
-("tipe",[111,113])
-("tn",[555,560,568])
-("tname",[826,827])
-("to",[270,574,595,597,655,681,685,685,687,688,689,703,704,709,709,712,712,714,727,894,899,902,1038])
-("track",[378])
-("tree",[47,47,55,56,719,725])
-("ts",[98,99,102,102,188,188,216,216,299,299,301,301,862,863,1002,1005,1026,1028,1075,1076,1076,1078,1095,1098])
-("tvars",[185,187,188,188,189,189,189,710])
-("tvdict",[83,100,100,101,102,102,103,103,103])
-("tvl",[775,776,804,807,808,809])
-("tvn",[201,202,203,206,206,214,214,242,243,244,244,245,245,247,247,260,261,263,264,269,282,283,284,287,789,789,918,920,926,928,929,929,934,936,939,955,958,959,964,966,969,974,974])
-("tvn2",[242,243,244,244,245,245])
-("tvname",[83,83,96,98,98,99])
-("type",[3,47,125,155,204,210,214,216,216,218,218,218,288,374,404,503,558,559,562,583,584,594,595,682,682,713,714,715,717,729,735,814,863,891,1038])
-("typedef",[712])
-("types",[378,565,656,683])
-("u",[373,374])
-("undeclared",[621])
-("unified",[347])
-("unifiedOlds",[338,339,341])
-("unifier",[681,683])
-("unifiers",[681])
-("unify",[306,321,323,324])
-("unknown",[710])
-("unknowns",[1028,1029,1034,1037])
-("unzip2",[538,543,544,609])
-("uol",[617,618,619,623])
-("up",[710])
-("us",[373,374])
-("use",[594,820])
-("used",[815])
-("usedc",[828,829])
-("utDomain",[353])
-("utLookup",[791])
-("utLookupAll",[354])
-("utLookupDef",[206,418,619])
-("utRange",[425])
-("v",[23,23,60])
-("v5",[3])
-("var",[247,247,558])
-("variable",[418])
-("variables",[438,562,595,682,868])
-("vars",[558,595])
-("version",[4])
-("vl",[764,764])
-("vs",[32,32,141])
-("where",[7,22,57,82,126,133,140,186,205,286,322,340,352,405,462,489,537,542,557,603,658,664,686,721,754,788,824,848,880,892,919,938,956,968,993,1004,1027,1035,1059,1077,1094])
-("with",[308,558,806])
-("x",[130,133,133,187,187,394,394,394,434,434,517,518,528,529,530,531,628,628,879,879,881,955,955,958,964,966,967,974,974,1085])
-("x2",[131])
-("xs",[394,394,530,531,535,536,538,991,992,1000,1002,1003,1005,1012,1014,1015,1026,1026,1056,1057,1062,1067,1067,1073,1075,1076,1090,1092,1093])
-("y",[188,530,531])
-("ys",[394,394])
-("zip",[301,351,607,607,720,720,764,776,893,1015,1026,1036,1067,1076])
diff --git a/ghc/tests/programs/jules_xref2/Main.hs b/ghc/tests/programs/jules_xref2/Main.hs
deleted file mode 100644 (file)
index 10d20a5..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
--- partain: the failure (crashing) was w/ -prof-auto compilation
-
-module Main where
-
-xreff :: Int -> [String] -> Table -> Int -> String -> String
-xreff cc exs stab lineno [] = display (foldl delete stab exs)
-xreff cc exs stab lineno ('\n':cs) = xreff cc exs stab (lineno+1) cs
-xreff cc exs stab lineno (c:cs) 
-  = if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') then
-       case getRestWord cs of
-         (word, rest) -> if (cc :: Int) == 0
-          then   if stab == stab
-                 then
-                    xreff 1000 exs 
-                          (enter lineno stab (c:word)) lineno rest
-                 else error "Force failed?!"
-          else      xreff (cc-1) exs 
-                        (enter lineno stab (c:word)) lineno rest
-      else xreff cc exs stab lineno cs
-
-xref exceptions source = xreff 1000 exceptions ALeaf 1 source
-
-getRestWord [] = ([], [])
-getRestWord xs@(x:xs')
-   | (x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z') || (x >= '0' && x <= '9')
-   = case getRestWord xs' of 
-        (ys,zs) -> if (x >= 'A' && x <= 'Z')
-                   then (toEnum (fromEnum x + (32::Int)):ys, zs)
-                   else (x:ys, zs)
-   | otherwise 
-   = ([],xs)
-
-data Table = ALeaf | ABranch Table String [Int] Table deriving (Eq)
-
-enter n ALeaf w = ABranch ALeaf w [n] ALeaf
-enter n (ABranch l k ns r) w
- = if w < k then ABranch (enter n l w) k ns r else
-   if w > k then ABranch l k ns (enter n r w) else
-                 ABranch l k (n:ns) r
-
-delete ALeaf w              = ALeaf
-delete (ABranch l k ns r) w
- = if w < k then ABranch (delete l w) k ns r else
-   if w > k then ABranch l k ns (delete r w) else
-                 ABranch l k [] r
-
-display :: Table -> String
-display t = display_a t ""
-
-display_a :: Table -> String -> String
-display_a ALeaf acc = acc
-display_a (ABranch l k ns r) acc
- = display_a l (dispLine k ns ++ display_a r acc)
-
-dispLine k [] = ""
-dispLine k ns = k ++ ":" ++ dispNos ns ++ "\n"
-
-dispNos :: [Int] -> String
-dispNos []     = ""
-dispNos (n:ns) = ' ':(show n ++ dispNos ns)
-
-main = do
-    input <- getContents
-    exceptions <- catch (readFile "exceptions") (\ e -> return "")
-    putStr (xref (lines exceptions) input)
-
-{- OLD 1.2:
-main = readChan stdin abort (\input ->
-       readFile "exceptions"
-                (\errors     -> output (xref []                 input))
-                (\exceptions -> output (xref (lines exceptions) input)))
-       where output s = appendChan stdout s abort done
--}
diff --git a/ghc/tests/programs/jules_xref2/Makefile b/ghc/tests/programs/jules_xref2/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/jules_xref2/jules_xref2.stdin b/ghc/tests/programs/jules_xref2/jules_xref2.stdin
deleted file mode 100644 (file)
index a43907d..0000000
+++ /dev/null
@@ -1,1105 +0,0 @@
---==========================================================--
---=== A type-checker -- v5        File: TypeCheck5.m (1) ===--
---=== Corrected version for 0.210a                       ===--
---==========================================================--
-
-module TypeCheck5 where
-import BaseDefs
-import Utils
-import MyUtils
-
---==========================================================--
---=== Formatting of results                              ===--
---==========================================================--
-
-tcMapAnnExpr :: (a -> b) ->
-                AnnExpr c a ->
-                AnnExpr c b
-
-tcMapAnnExpr f (ann, node) 
-   = (f ann, mapAnnExpr' node)
-     where
-        mapAnnExpr' (AVar v) = AVar v
-        mapAnnExpr' (ANum n) = ANum n
-        mapAnnExpr' (AConstr c) = AConstr c
-        mapAnnExpr' (AAp ae1 ae2) 
-           = AAp (tcMapAnnExpr f ae1) (tcMapAnnExpr f ae2)
-        mapAnnExpr' (ALet recFlag annDefs mainExpr)
-           = ALet recFlag (map mapAnnDefn annDefs) (tcMapAnnExpr f mainExpr)
-        mapAnnExpr' (ACase switchExpr annAlts)
-           = ACase (tcMapAnnExpr f switchExpr) (map mapAnnAlt annAlts)
-        mapAnnExpr' (ALam vs e) = ALam vs (tcMapAnnExpr f e)
-
-        mapAnnDefn (naam, expr) 
-           = (naam, tcMapAnnExpr f expr)
-
-        mapAnnAlt (naam, (pars, resExpr))
-           = (naam, (pars, tcMapAnnExpr f resExpr))
-
-
---======================================================--
---
-tcSubstAnnTree :: Subst -> 
-                  AnnExpr Naam TExpr -> 
-                  AnnExpr Naam TExpr
-
-tcSubstAnnTree phi tree = tcMapAnnExpr (tcSub_type phi) tree
-
-
---======================================================--
---
-tcTreeToEnv :: AnnExpr Naam TExpr ->
-               TypeEnv
-
-tcTreeToEnv tree
-   = t2e tree
-     where
-        t2e (nodeType, node) = t2e' node
-
-        t2e' (AVar v) = []
-        t2e' (ANum n) = []
-        t2e' (AConstr c) = []
-        t2e' (AAp ae1 ae2) = (t2e ae1) ++ (t2e ae2)
-        t2e' (ALam cs e) = t2e e
-        t2e' (ALet rf dl me) 
-           = (concat (map aFN dl)) ++ (t2e me)
-        t2e' (ACase sw alts)
-           = (t2e sw) ++ (concat (map (t2e.second.second) alts))
-   
-        aFN (naam, (tijp, body)) 
-          = (naam, tijp):(t2e' body)
-
-
-
---======================================================--
---
-tcShowtExpr :: TExpr ->
-               [Char]
-
-tcShowtExpr t 
-   = pretty' False t
-     where 
-       pretty' b (TVar tvname) = [' ', chr (96+(lookup tvname tvdict))]
-       pretty' b (TCons "int" []) = " int"
-       pretty' b (TCons "bool" []) = " bool"
-       pretty' b (TCons "char" []) = " char"
-       pretty' True (TArr t1 t2) 
-          = " (" ++ (pretty' True t1) ++ " -> " ++
-            (pretty' False t2) ++ ")" 
-       pretty' False (TArr t1 t2) 
-          = (pretty' True t1) ++ " -> " ++
-            (pretty' False t2)
-       pretty' b (TCons notArrow cl) 
-          = " (" ++ notArrow ++ 
-             concat (map (pretty' True) cl) ++ ")"
-       lookup tvname [] 
-          = panic "tcShowtExpr: Type name lookup failed"
-       lookup tvname (t:ts) | t==tvname = 1
-                           | otherwise = 1 + (lookup tvname ts)
-       tvdict = nub (tvdict' t)
-       tvdict' (TVar t) = [t]
-       tvdict' (TCons c ts) = concat (map tvdict' ts)
-       tvdict' (TArr t1 t2) = tvdict' t1 ++ tvdict' t2
-
-
---======================================================--
---
-tcPretty :: (Naam, TExpr) -> 
-            [Char]
-
-tcPretty (naam, tipe)
-   = "\n   " ++ (ljustify 25 (naam ++ " :: ")) ++ 
-            (tcShowtExpr tipe)
-
-
---======================================================--
-tcCheck :: TcTypeEnv -> 
-           TypeNameSupply ->
-           AtomicProgram -> 
-           ([Char],  Reply (AnnExpr Naam TExpr, TypeEnv) Message)
-
-tcCheck baseTypes ns (tdefs, expr)
-   = if good tcResult 
-         then (fullEnvWords,  Ok (rootTree, fullEnv))
-         else ("",            Fail "No type")
-     where
-        tcResult = tc (tdefs++builtInTypes)
-                   (baseTypes++finalConstrTypes) finalNs expr
-
-        good (Ok x) = True
-        good (Fail x2) = False
-        
-        (rootSubst, rootType, annoTree) = f tcResult where f (Ok x) = x
-
-        rootTree = tcSubstAnnTree rootSubst annoTree
-
-        rootEnv = tcTreeToEnv rootTree
-
-        fullEnv = rootEnv ++ map f finalConstrTypes
-                  where
-                     f (naam, (Scheme vs t)) = (naam, t)
-
-        fullEnvWords = concat (map tcPretty fullEnv)
-
-        (finalNs, constrTypes) = 
-           mapAccuml tcConstrTypeSchemes ns (tdefs++builtInTypes)
-        finalConstrTypes = concat constrTypes
-
-        builtInTypes 
-           = [ ("bool", [], [("True", []), ("False", [])]) ]
-        
-
-
---==========================================================--
---=== 9.2 Representation of type expressions             ===--
---==========================================================--
-
-----======================================================--
---tcArrow :: TExpr -> 
---           TExpr -> 
---           TExpr
---
---tcArrow t1 t2 = TArr t1 t2
-
-
-
---======================================================--
-tcInt :: TExpr
-
-tcInt = TCons "int" []
-
-
-
---======================================================--
-tcBool :: TExpr
-
-tcBool = TCons "bool" []
-
-
-
---======================================================--
-tcTvars_in :: TExpr -> 
-              [TVName]
-
-tcTvars_in t = tvars_in' t []
-               where
-                  tvars_in' (TVar x) l = x:l
-                  tvars_in' (TCons y ts) l = foldr tvars_in' l ts
-                  tvars_in' (TArr t1 t2) l = tvars_in' t1 (tvars_in' t2 l)
-
-
---==========================================================--
---=== 9.41 Substitutions                                 ===--
---==========================================================--
-
---======================================================--
-tcApply_sub :: Subst ->
-               TVName ->
-               TExpr
-
-tcApply_sub phi tvn 
-   = if TVar tvn == lookUpResult
-        then TVar tvn
-        else tcSub_type phi lookUpResult
-     where
-        lookUpResult = utLookupDef phi tvn (TVar tvn)
-
-
---======================================================--
-tcSub_type :: Subst -> 
-              TExpr -> 
-              TExpr
-
-tcSub_type phi (TVar tvn) = tcApply_sub phi tvn
-
-tcSub_type phi (TCons tcn ts) = TCons tcn (map (tcSub_type phi) ts)
-
-tcSub_type phi (TArr t1 t2) = TArr (tcSub_type phi t1) (tcSub_type phi t2)
-
-
---======================================================--
-tcScomp :: Subst -> 
-           Subst -> 
-           Subst
-
-tcScomp sub2 sub1 = sub1 ++ sub2
-
-
-
---======================================================--
-tcId_subst :: Subst
-
-tcId_subst = []
-
-
-
---======================================================--
-tcDelta :: TVName -> 
-           TExpr -> 
-           Subst
--- all TVar -> TVar substitutions lead downhill
-tcDelta tvn (TVar tvn2) 
-   | tvn == tvn2   = []
-   | tvn >  tvn2   = [(tvn, TVar tvn2)]
-   | tvn <  tvn2   = [(tvn2, TVar tvn)]
-
-tcDelta tvn non_var_texpr = [(tvn, non_var_texpr)]
-
-
---==========================================================--
---=== 9.42 Unification                                   ===--
---==========================================================--
-
---======================================================--
-tcExtend :: Subst -> 
-            TVName -> 
-            TExpr -> 
-            Reply Subst Message
-
-tcExtend phi tvn t 
-    | t == TVar tvn   
-    = Ok phi
-    | tvn `notElem` (tcTvars_in t)
-    = Ok ((tcDelta tvn t) `tcScomp` phi)
-    | otherwise
-    = fail
-         (   "Type error in source program:\n\n"         ++
-             "Circular substitution:\n      "            ++
-             tcShowtExpr (TVar tvn)                     ++ 
-              "\n   going to\n"                          ++
-             "      "                                   ++ 
-              tcShowtExpr t                              ++ 
-              "\n")
-
-
-
---======================================================--
-tcUnify :: Subst -> 
-           (TExpr, TExpr) -> 
-           Reply Subst Message
-
-tcUnify phi (TVar tvn, t) 
-  = if phitvn == TVar tvn
-       then tcExtend phi tvn phit
-       else tcUnify phi (phitvn, phit)
-     where
-       phitvn = tcApply_sub phi tvn
-       phit = tcSub_type phi t
-
-tcUnify phi (p@(TCons _ _), q@(TVar _))
-   = tcUnify phi (q, p)
-
-tcUnify phi (p@(TArr _ _), q@(TVar _))
-   = tcUnify phi (q, p)
-
-tcUnify phi (TArr t1 t2, TArr t1' t2')
-   = tcUnifyl phi [(t1, t1'), (t2, t2')]
-
-tcUnify phi (TCons tcn ts, TCons tcn' ts') 
-   | tcn == tcn' 
-   = tcUnifyl phi (ts `zip` ts')
-
-tcUnify phi (t1, t2)
-   = fail
-        (   "Type error in source program:\n\n"          ++
-            "Cannot unify\n      "                       ++
-            tcShowtExpr t1                               ++
-            "\n   with\n      "                          ++
-            tcShowtExpr t2                               ++
-            "\n"
-        )
-
-
-
---======================================================--
-tcUnifyl :: Subst ->  
-            [(TExpr, TExpr)] -> 
-            Reply Subst Message
-
-tcUnifyl phi eqns 
-   = foldr unify' (Ok phi) eqns
-     where
-       unify' eqn (Ok phi) = tcUnify phi eqn
-       unify' eqn (Fail m) = Fail m
-
-
-
---==========================================================--
---=== 9.42.2 Merging of substitutions                    ===--
---==========================================================--
-
---======================================================--
-tcMergeSubs :: Subst ->
-               Subst
-
-tcMergeSubs phi 
-   = if newBinds == []
-        then unifiedOlds
-        else tcMergeSubs (unifiedOlds ++ newBinds)
-     where
-        (newBinds, unifiedOlds) = tcMergeSubsMain phi
-
-
-
---======================================================--
-tcMergeSubsMain :: Subst -> 
-                   (Subst, Subst)   -- pair of new binds, unified olds
-
-tcMergeSubsMain phi
-   = (concat newUnifiersChecked,
-      zip oldVars (tcOldUnified newUnifiersChecked oldGroups))
-     where
-        oldVars = nub (utDomain phi)
-        oldGroups = map (utLookupAll phi) oldVars
-        newUnifiers = map (tcUnifySet tcId_subst) oldGroups
-        newUnifiersChecked = map tcCheckUnifier newUnifiers
-
-
-
---======================================================--
-tcCheckUnifier :: Reply Subst Message -> Subst
-
-tcCheckUnifier (Ok r) = r
-tcCheckUnifier (Fail m) 
-   = panic ("tcCheckUnifier: " ++ m)
-
-
-
---======================================================--
-tcOldUnified :: [Subst] -> [[TExpr]] -> [TExpr]
-
-tcOldUnified [] [] = []
-tcOldUnified (u:us) (og:ogs) 
-      = (tcSub_type u (head og)): tcOldUnified us ogs
-
-
---==========================================================--
---=== 9.5 Keeping track of types                         ===--
---==========================================================--
-
---======================================================--
-tcUnknowns_scheme :: TypeScheme -> 
-                     [TVName]
-
-tcUnknowns_scheme (Scheme scvs t) = tcTvars_in t `tcBar` scvs
-
-
-
---======================================================--
-tcBar :: (Eq a) => [a] -> 
-                   [a] -> 
-                   [a]
-
-tcBar xs ys = [ x | x <- xs,  not (x `elem` ys)]
-
-
-
---======================================================--
-tcSub_scheme :: Subst -> 
-                TypeScheme -> 
-                TypeScheme
-
-tcSub_scheme phi (Scheme scvs t)
-    = Scheme scvs (tcSub_type (tcExclude phi scvs) t)
-      where
-         tcExclude phi scvs = [(n,e) | (n,e) <- phi,  not (n `elem` scvs)]
-
-
-
---==========================================================--
---=== 9.53 Association lists                             ===--
---==========================================================--
-
---======================================================--
-tcCharVal :: AList Naam b -> Naam -> b
-
-tcCharVal al k
-   = utLookupDef al k (panic ("tcCharVal: no such variable: " ++ k))
-
-
---======================================================--
-tcUnknowns_te :: TcTypeEnv -> 
-                 [TVName]
-
-tcUnknowns_te gamma = concat (map tcUnknowns_scheme (utRange gamma))
-
-
-
---======================================================--
-tcSub_te :: Subst -> 
-            TcTypeEnv -> 
-            TcTypeEnv
-
-tcSub_te phi gamma = [(x, tcSub_scheme phi st) | (x, st) <- gamma]
-
-
---==========================================================--
---=== 9.6 New variables                                  ===--
---==========================================================--
-
---======================================================--
-tcNext_name :: TypeNameSupply -> 
-               TVName
-
-tcNext_name ns@(f, s) = ns
-
-
-
---======================================================--
-tcDeplete :: TypeNameSupply -> 
-             TypeNameSupply
-
-tcDeplete (f, s) = (f, tcNSSucc s)
-
-
-
---======================================================--
-tcSplit :: TypeNameSupply -> 
-           (TypeNameSupply, TypeNameSupply)
-
-tcSplit (f, s) = ((f2, [0]), (tcNSSucc f2, [0]))
-                 where f2 = tcNSDouble f
-
-
-
---======================================================--
-tcName_sequence :: TypeNameSupply -> 
-                   [TVName]
-
-tcName_sequence ns = tcNext_name ns: tcName_sequence (tcDeplete ns)
-
-
---======================================================--
-tcNSSucc :: [Int] ->
-            [Int]
-
-tcNSSucc []     = [1]
-tcNSSucc (n:ns) | n < tcNSslimit  = n+1: ns
-                | otherwise       = 0: tcNSSucc ns
-
-
---======================================================--
-tcNSDouble :: [Int] ->
-              [Int]
-
-tcNSDouble []   = []
-tcNSDouble (n:ns) 
-    = 2*n': ns'
-       where n' | n > tcNSdlimit  = n - tcNSdlimit
-               | otherwise       = n
-            ns' | n' == n    = tcNSDouble ns
-                | otherwise  = tcNSSucc (tcNSDouble ns)
-
-                       
-tcNSdlimit :: Int
-tcNSdlimit = 2^30
-
-tcNSslimit :: Int
-tcNSslimit = tcNSdlimit + (tcNSdlimit - 1)
-
-
---==========================================================--
---=== 9.7 The type-checker                               ===--
---==========================================================--
-
-
---======================================================--
-tc :: [TypeDef] ->
-      TcTypeEnv -> 
-      TypeNameSupply -> 
-      CExpr -> 
-      Reply TypeInfo Message
-
-tc tds gamma ns (ENum n) 
-   = Ok (tcId_subst, TCons "int" [], (TCons "int" [], ANum n))
-
-tc tds gamma ns (EVar x) 
-   = tcvar tds gamma ns x
-
-tc tds gamma ns (EConstr c)
-   = tcvar tds gamma ns c
-
-tc tds gamma ns (EAp e1 e2)
-   = tcap tds gamma ns e1 e2
-
-tc tds gamma ns (ELam [] e)
-   = tc tds gamma ns e
-tc tds gamma ns (ELam [x] e)
-   = tclambda tds gamma ns x e
-tc tds gamma ns (ELam (x:y:xs) e)
-   = tclambda tds gamma ns x (ELam (y:xs) e)
-
-tc tds gamma ns (ELet recursive dl e)
-   = if not recursive
-        then tclet tds gamma ns xs es e
-        else tcletrec tds gamma ns xs es e
-     where
-       (xs, es) = unzip2 dl
-
-tc tds gamma ns (ECase switch alts)
-   = tccase tds gamma ns switch constructors arglists exprs
-     where
-        (constructors, alters) = unzip2 alts
-        (arglists, exprs) = unzip2 alters
-
---==========================================================--
---=== 0.00 Type-checking case-expressions                ===--
---==========================================================--
-
-tcConstrTypeSchemes :: TypeNameSupply ->
-                       TypeDef ->
-                       (TypeNameSupply, AList Naam TypeScheme)
-
-tcConstrTypeSchemes ns (tn, stvs, cal)
-   = (finalNameSupply, map2nd enScheme cAltsCurried)
-     where
-        -- associates new type vars with each poly var
-        -- in the type
-        newTVs = tcNewTypeVars (tn, stvs, cal) ns
-
-        -- the actual type variables themselves
-        tVs = map second newTVs
-
-        -- the types of the constructor functions         
-        cAltsCurried = map2nd (foldr TArr tdSignature) cAltsXLated
-        cAltsXLated = map2nd (map (tcTDefSubst newTVs)) cal
-        tdSignature = TCons tn (map TVar tVs)
-        enScheme texp = Scheme ((nub.tcTvars_in) texp) texp
-
-        -- the revised name supply
-        finalNameSupply = applyNtimes ( length tVs + 2) tcDeplete ns
-
-        -- apply a function n times to an arg
-        applyNtimes n func arg 
-           | n ==0       = arg
-           | otherwise   = applyNtimes (n-1) func (func arg)
-                    
-
-
---======================================================--
---
-tccase :: [TypeDef] ->         -- constructor type definitions
-          TcTypeEnv ->         -- current type bindings
-          TypeNameSupply ->    -- name supply
-          CExpr ->             -- switch expression
-          [Naam] ->            -- constructors
-          [[Naam]] ->          -- argument lists
-          [CExpr] ->           -- resulting expressions
-          Reply TypeInfo Message
-
-
-tccase tds gamma ns sw cs als res
--- get the type definition in use, & an association of
--- variables therein to type vars & pass
--- Also, reorder the argument lists
--- and resulting expressions so as to reflect the 
--- sequence of constructors in the definition
- = if length tdCNames /=  length (nub cs)
-      then  fail
-            "Error in source program: missing alternatives in CASE"
-      else tccase1 tds gamma ns1 sw reOals reOres newTVs tdInUse
-     where
-        tdInUse = tcGetTypeDef tds cs
-        newTVs = tcNewTypeVars tdInUse ns2
-        (ns1, ns2) = tcSplit ns
-        merge = zip cs (zip als res)
-        tdCNames = map first (tcK33 tdInUse)
-        (reOals, reOres) = unzip2 (tcReorder tdCNames merge)
-
-
-
---======================================================--
---
-tcReorder :: [Naam] -> [(Naam,b)] -> [b]
-
-tcReorder []     uol =  []
-tcReorder (k:ks) uol 
-   = (utLookupDef uol k 
-        (fail
-            ("Error in source program: undeclared constructor '" ++ k ++
-               "' in CASE") ) )
-        : tcReorder ks uol 
-
-
---======================================================--
--- Projection functions and similar rubbish.
-tcDeOksel (Ok x) = x
-tcDeOksel (Fail m) = panic ("tcDeOkSel: " ++ m)
-tcOk13sel (Ok (a, b, c)) = a
-tcOk13sel (Fail m) = panic ("tcOk13sel: " ++ m)
-tcOk23sel (Ok (a, b, c)) = b
-tcOk23sel (Fail m) = panic ("tcOk23sel: " ++ m)
-tcOk33sel (Ok (a, b, c)) = c
-tcOk33sel (Fail m) = panic ("tcOk33sel: " ++ m)
-tcK31sel (a, b, c) = a
-tcK33 (a,b,c) = c
-
-
-
---======================================================--
---
-tccase1 :: [TypeDef] ->
-           TcTypeEnv -> 
-           TypeNameSupply ->
-           CExpr -> 
-           [[Naam]] ->
-           [CExpr] ->
-           AList Naam TVName ->
-           TypeDef ->
-           Reply TypeInfo Message
-
-tccase1 tds gamma ns sw reOals reOres newTVs tdInUse
--- calculate all the gammas for the RHS's
--- call tc for each RHS, so as to gather all the
--- sigmas and types for each RHS, then pass on
-   = tccase2 tds gamma ns2 sw reOals newTVs tdInUse rhsTcs
-     where
-        rhsGammas = tcGetAllGammas newTVs (tcK33 tdInUse) reOals
-        rhsTcs = rhsTc1 ns1 rhsGammas reOres
-        rhsTc1 nsl []     []     = []
-        rhsTc1 nsl (g:gs) (r:rs) 
-           = tc tds (g++gamma) nsl1 r : rhsTc1 nsl2 gs rs
-             where (nsl1, nsl2) = tcSplit nsl
-        (ns1, ns2) = tcSplit ns  
-        
-
---======================================================--
---
-tccase2 :: [TypeDef] ->
-           TcTypeEnv -> 
-           TypeNameSupply ->
-           CExpr -> 
-           [[Naam]] ->
-           AList Naam TVName ->
-           TypeDef ->
-           [Reply TypeInfo Message] ->
-           Reply TypeInfo Message
-
-tccase2 tds gamma ns sw reOals newTVs tdInUse rhsTcs
--- get the unifiers for T1 to Tk and hence the unifier for all
--- type variables in the type definition.  Also compute the
--- unifier of the result types.
-   = tccase3 tds gamma ns sw reOals newTVs tdInUse rhsTcs 
-             phi_1_to_n tau_1_to_n phi_rhs
-     where
-        phi_1_to_n = map tcOk13sel rhsTcs
-        tau_1_to_n = map tcOk23sel rhsTcs
-        phi_rhs = tcDeOksel (tcUnifySet tcId_subst tau_1_to_n)
-
-
---======================================================--
---
-tccase3 :: [TypeDef] ->                    -- tds
-           TcTypeEnv ->                    -- gamma
-           TypeNameSupply ->               -- ns
-           CExpr ->                        -- sw
-           [[Naam]] ->                     -- reOals
-           AList Naam TVName ->            -- newTVs
-           TypeDef ->                      -- tdInUse
-           [Reply TypeInfo Message] ->     -- rhsTcs
-           [Subst] ->                      -- phi_1_to_n
-           [TExpr] ->                      -- tau_1_to_n
-           Subst ->                        -- phi_rhs
-           Reply TypeInfo Message
-
-tccase3 tds gamma ns sw reOals newTVs tdInUse rhsTcs
-        phi_1_to_n tau_1_to_n phi_rhs
--- make up substitutions for each of the unknown tvars
--- merge the substitutions into one
--- apply the substitution to the typedef's signature to get the
--- most general allowable input type
--- call tc to get the type of the switch expression
--- check that this is an instance of the deduced input type
--- gather the new bindings from the RHSs and switch expression
--- return Ok (the big substitution, the result type, gathered bindings)
-   = Ok (phi_Big, tau_final, 
-            (tau_final, ACase tree_s 
-                        (zip tdCNames (zip reOals annotatedRHSs))))
-     where
-        phi_sTau_sTree_s = tc tds gamma ns sw 
-        phi_s  = tcOk13sel phi_sTau_sTree_s
-        tau_s  = tcOk23sel phi_sTau_sTree_s
-        tree_s = tcOk33sel phi_sTau_sTree_s
-        
-        phi = tcMergeSubs (concat phi_1_to_n ++ phi_rhs ++ phi_s)
-
-        tau_lhs = tcSub_type phi tdSignature
-
-        phi_lhs = tcUnify tcId_subst (tau_lhs, tau_s) -- reverse these?
-
-        phi_Big = tcMergeSubs (tcDeOksel phi_lhs ++ phi) 
-
-        tau_final = tcSub_type phi_Big (head (map tcOk23sel rhsTcs))
-
-        annotatedRHSs = map tcOk33sel rhsTcs
-        tVs = map second newTVs
-        tdSignature = TCons (tcK31sel tdInUse) (map TVar tVs)
-        tdCNames = map first (tcK33 tdInUse)
-
-
---======================================================--
---
-tcUnifySet :: Subst -> 
-              [TExpr] -> 
-              Reply Subst Message
-
-tcUnifySet sub (e1:[]) = Ok sub
-tcUnifySet sub (e1:e2:[]) 
-   = tcUnify sub (e1, e2)
-tcUnifySet sub (e1:e2:e3:es) 
-   = tcUnifySet newSub (e2:e3:es)
-     where 
-        newSub = tcDeOksel (tcUnify sub (e1, e2))
-
-
---======================================================--
---
-tcNewTypeVars :: TypeDef -> 
-                 TypeNameSupply ->
-                 AList Naam TVName
-
-tcNewTypeVars (t, vl, c) ns = zip vl (tcName_sequence ns)
-
-
-
---======================================================--
---
-tcGetGammaN :: AList Naam TVName ->
-               ConstrAlt -> 
-               [Naam] ->
-               AList Naam TypeScheme
-
-tcGetGammaN tvl (cname, cal) cparams 
-   = zip cparams (map (Scheme [] . tcTDefSubst tvl) cal)
-
-
-
---======================================================--
---
-tcTDefSubst :: AList Naam TVName ->
-               TDefExpr ->
-               TExpr
-
-tcTDefSubst nameMap (TDefVar n)
-   = f result 
-     where
-        f (Just tvn) = TVar tvn
-        f Nothing    = TCons n []
-        result = utLookup nameMap n
-
-tcTDefSubst nameMap (TDefCons c al)
-   = TCons c (map (tcTDefSubst nameMap) al)
-
-
---======================================================--
---
-tcGetAllGammas :: AList Naam TVName ->
-                  [ConstrAlt] ->
-                  [[Naam]] ->
-                  [AList Naam TypeScheme]
-
-tcGetAllGammas tvl []           [] = []
--- note param lists cparamss must be ordered in
--- accordance with calts
-tcGetAllGammas tvl (calt:calts) (cparams:cparamss) = 
-      tcGetGammaN tvl calt cparams : 
-         tcGetAllGammas tvl calts cparamss
-
-
---======================================================--
---
-tcGetTypeDef :: [TypeDef] ->    -- type definitions
-                [Naam] ->       -- list of constructors used here
-                TypeDef
-
-tcGetTypeDef tds cs 
-   = if length tdefset == 0 
-        then fail "Undeclared constructors in use"
-     else if length tdefset > 1
-        then fail "CASE expression contains mixed constructors"
-     else head tdefset
-     where
-        tdefset = nub
-                  [ (tname, ftvs, cl) |
-                    (tname, ftvs, cl) <- tds,
-                    usedc <- cs,
-                    usedc `elem` (map first cl) ]
-
-
---==========================================================--
---=== 9.71 Type-checking lists of expressions            ===--
---==========================================================--
-
---======================================================--
---
-tcl :: [TypeDef] ->
-       TcTypeEnv     -> 
-       TypeNameSupply  -> 
-       [CExpr]       -> 
-       Reply (Subst, [TExpr], [AnnExpr Naam TExpr]) Message
-
-tcl tds gamma ns []
-   = Ok (tcId_subst, [], [])
-tcl tds gamma ns (e:es) 
-   = tcl1 tds gamma ns0 es (tc tds gamma ns1 e)
-     where
-        (ns0, ns1) = tcSplit ns
-
-
---======================================================--
---
-tcl1 tds gamma ns es (Fail m) = Fail m
-tcl1 tds gamma ns es (Ok (phi, t, annotatedE)) 
-   = tcl2 phi t (tcl tds (tcSub_te phi gamma) ns es) annotatedE
-
-
---======================================================--
---
-tcl2 phi t (Fail m) annotatedE = Fail m
-tcl2 phi t (Ok (psi, ts, annotatedEs)) annotatedE 
-   = Ok (psi `tcScomp` phi, (tcSub_type psi t):ts, 
-         annotatedE:annotatedEs)
-
-
---==========================================================--
---=== 9.72 Type-checking variables                       ===--
---==========================================================--
-
---======================================================--
---
-tcvar :: [TypeDef] ->
-         TcTypeEnv     -> 
-         TypeNameSupply  -> 
-         Naam        -> 
-         Reply TypeInfo Message
-
-tcvar tds gamma ns x = Ok (tcId_subst, finalType, (finalType, AVar x))
-                       where
-                          scheme = tcCharVal gamma x
-                          finalType = tcNewinstance ns scheme
-
-
---======================================================--
---
-tcNewinstance :: TypeNameSupply -> 
-                 TypeScheme -> 
-                 TExpr
-
-tcNewinstance ns (Scheme scvs t) = tcSub_type phi t
-                                   where 
-                                      al  = scvs `zip` (tcName_sequence ns)
-                                      phi = tcAl_to_subst al
-
-
---======================================================--
---
-tcAl_to_subst :: AList TVName TVName -> 
-                 Subst
-
-tcAl_to_subst al = map2nd TVar al
-
-
---==========================================================--
---=== 9.73 Type-checking applications                    ===--
---==========================================================--
-
---======================================================--
---
-tcap :: [TypeDef] ->
-        TcTypeEnv     -> 
-        TypeNameSupply  -> 
-        CExpr         -> 
-        CExpr         -> 
-        Reply TypeInfo Message
-
-tcap tds gamma ns e1 e2 = tcap1 tvn (tcl tds gamma ns' [e1, e2])
-                          where
-                             tvn = tcNext_name ns
-                             ns' = tcDeplete ns
-
-
---======================================================--
---
-tcap1 tvn (Fail m)
-   = Fail m
-tcap1 tvn (Ok (phi, [t1, t2], [ae1, ae2])) 
-   = tcap2 tvn (tcUnify phi (t1, t2 `TArr` (TVar tvn))) [ae1, ae2]
-
-
---======================================================--
---
-tcap2 tvn (Fail m) [ae1, ae2]
-   = Fail m
-tcap2 tvn (Ok phi) [ae1, ae2] 
-   = Ok (phi, finalType, (finalType, AAp ae1 ae2))
-     where
-        finalType = tcApply_sub phi tvn
-
-
---==========================================================--
---=== 9.74 Type-checking lambda abstractions             ===--
---==========================================================--
-
---======================================================--
---
-tclambda :: [TypeDef] ->
-            TcTypeEnv     -> 
-            TypeNameSupply  -> 
-            Naam        -> 
-            CExpr         -> 
-            Reply TypeInfo Message
-
-tclambda tds gamma ns x e = tclambda1 tvn x (tc tds gamma' ns' e)
-                            where
-                               ns' = tcDeplete ns
-                               gamma' = tcNew_bvar (x, tvn): gamma
-                               tvn = tcNext_name ns
-
-
---======================================================--
---
-tclambda1 tvn x (Fail m) = Fail m
-
-tclambda1 tvn x (Ok (phi, t, annotatedE)) = 
-   Ok (phi, finalType, (finalType, ALam [x] annotatedE))
-   where
-      finalType = (tcApply_sub phi tvn) `TArr` t
-
-
---======================================================--
---
-tcNew_bvar (x, tvn) = (x, Scheme [] (TVar tvn))
-
-
---==========================================================--
---=== 9.75 Type-checking let-expressions                 ===--
---==========================================================--
-
---======================================================--
---
-tclet :: [TypeDef] ->
-         TcTypeEnv     -> 
-         TypeNameSupply  -> 
-         [Naam]       -> 
-         [CExpr]       -> 
-         CExpr         -> 
-         Reply TypeInfo Message
-
-tclet tds gamma ns xs es e 
-   = tclet1 tds gamma ns0 xs e rhsTypes
-     where
-        (ns0, ns1) = tcSplit ns
-        rhsTypes = tcl tds gamma ns1 es
-        
-
---======================================================--
---
-tclet1 tds gamma ns xs e (Fail m) = Fail m
-
-tclet1 tds gamma ns xs e (Ok (phi, ts, rhsAnnExprs)) 
-   = tclet2 phi xs False (tc tds gamma'' ns1 e) rhsAnnExprs
-     where
-        gamma'' = tcAdd_decls gamma' ns0 xs ts
-        gamma'  = tcSub_te phi gamma
-        (ns0, ns1) = tcSplit ns
-
-
---======================================================--
---
-tclet2 phi xs recFlag (Fail m) rhsAnnExprs = Fail m
-
-tclet2 phi xs recFlag (Ok (phi', t, annotatedE)) rhsAnnExprs
-   = Ok (phi' `tcScomp` phi, t, (t, ALet recFlag (zip xs rhsAnnExprs) annotatedE))
-
-
---======================================================--
---
-tcAdd_decls :: TcTypeEnv     ->
-               TypeNameSupply  -> 
-               [Naam]       ->
-               [TExpr]   ->
-               TcTypeEnv
-
-tcAdd_decls gamma ns xs ts = (xs `zip` schemes) ++ gamma
-                             where
-                                schemes = map (tcGenbar unknowns ns) ts
-                                unknowns = tcUnknowns_te gamma
-
-
---======================================================--
---
-tcGenbar unknowns ns t = Scheme (map second al) t'
-                         where
-                            al = scvs `zip` (tcName_sequence ns)
-                            scvs = (nub (tcTvars_in t)) `tcBar` unknowns
-                            t' = tcSub_type (tcAl_to_subst al) t
-
-
-
---==========================================================--
---=== 9.76 Type-checking letrec-expressions              ===--
---==========================================================--
-
---======================================================--
---
-tcletrec :: [TypeDef] ->
-            TcTypeEnv     -> 
-            TypeNameSupply  -> 
-            [Naam]       -> 
-            [CExpr]       -> 
-            CExpr         -> 
-            Reply TypeInfo Message
-
-tcletrec tds gamma ns xs es e 
-   = tcletrec1 tds gamma ns0 xs nbvs e 
-               (tcl tds (nbvs ++ gamma) ns1 es)
-     where
-        (ns0, ns') = tcSplit ns
-        (ns1, ns2) = tcSplit ns'
-        nbvs = tcNew_bvars xs ns2
-
-
---======================================================--
---
-tcNew_bvars xs ns = map tcNew_bvar (xs `zip` (tcName_sequence ns))
-
-
-
---======================================================--
---
-tcletrec1 tds gamma ns xs nbvs e (Fail m) = (Fail m)
-
-tcletrec1 tds gamma ns xs nbvs e (Ok (phi, ts, rhsAnnExprs)) 
-   = tcletrec2 tds gamma' ns xs nbvs' e (tcUnifyl phi (ts `zip` ts')) rhsAnnExprs
-     where
-        ts' = map tcOld_bvar nbvs'
-        nbvs' = tcSub_te phi nbvs
-        gamma' = tcSub_te phi gamma
-
-
---======================================================--
---
-tcOld_bvar (x, Scheme [] t) = t
-
-
---======================================================--
---
-tcletrec2 tds gamma ns xs nbvs e (Fail m) rhsAnnExprs = (Fail m)
-
-tcletrec2 tds gamma ns xs nbvs e (Ok phi) rhsAnnExprs
-   = tclet2 phi xs True (tc tds gamma'' ns1 e) rhsAnnExprs 
-     where
-        ts = map tcOld_bvar nbvs'
-        nbvs' = tcSub_te phi nbvs
-        gamma' = tcSub_te phi gamma
-        gamma'' = tcAdd_decls gamma' ns0 (map first nbvs) ts
-        (ns0, ns1) = tcSplit ns
-        subnames = map first nbvs
-
-
---==========================================================--
---=== End                               TypeCheck5.m (1) ===--
---==========================================================--
diff --git a/ghc/tests/programs/jules_xref2/jules_xref2.stdout b/ghc/tests/programs/jules_xref2/jules_xref2.stdout
deleted file mode 100644 (file)
index 6adf88b..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-A: 3
-Aap: 937 63 27 26
-Acase: 719 67 31 30
-Aconstr: 62 25 25
-Alam: 967 64 32 32
-Alet: 1015 65 29 28
-Alist: 899 802 799 782 773 770 762 700 675 649 553 415
-Also: 682 596
-Annexpr: 842 120 52 45 44 18 17
-Anum: 515 61 24 24
-Association: 411
-Atomicprogram: 119
-Avar: 879 60 23 23
-Basedefs: 8
-Big: 735 733 718
-Cannot: 306
-Case: 822 622 601
-Cexpr: 1053 1052 988 987 952 915 914 841 698 673 648 646 589 586 511
-Char: 120 109 78
-Circular: 268
-Constralt: 800 771
-Corrected: 4
-Eap: 523
-Ecase: 540
-Econstr: 520
-Elam: 531 530 528 526
-Elet: 533
-End: 1104
-Enum: 514
-Eq: 390
-Error: 621 601
-Evar: 517
-Fail: 1090 1090 1073 1073 1012 1012 1000 1000 964 964 935 934 927 926 861 861 854 854 635 633 631 629 364 324 324 131 125
-False: 1003 150 131 92 90 89 81
-File: 3
-Formatting: 13
-Int: 498 495 484 483 475 474
-Just: 789
-Keeping: 378
-Merging: 329
-Message: 1054 989 953 916 877 842 747 706 702 678 677 651 590 512 361 318 280 258 120
-Myutils: 10
-Naam: 1051 1022 986 951 876 842 815 802 801 799 782 773 772 770 762 700 699 675 674 649 647 615 615 588 587 553 415 415 120 108 52 45 44
-New: 438
-No: 125
-Nothing: 790
-Ok: 1092 1075 1015 1014 1002 967 966 937 936 928 879 863 862 855 845 749 718 717 634 632 630 628 515 363 323 321 264 262 133 130 124
-Projection: 627
-Reply: 1054 989 953 916 877 842 747 706 702 678 677 651 590 512 361 318 280 258 120
-Representation: 155
-Rhs: 656 655 654
-Rhss: 716
-Scheme: 1085 1034 974 891 776 569 404 403 385 141
-Subst: 900 842 747 745 705 703 430 399 370 361 361 347 347 346 334 333 318 316 280 278 258 255 240 231 224 223 222 210 197 43
-Substitutions: 193
-T1: 681
-Tarr: 969 929 566 296 296 293 218 218 189 163 103 90 87
-Tcons: 794 790 739 568 515 515 299 299 290 216 216 188 177 170 102 93 86 85 84
-Tctypeenv: 1049 1024 1020 984 949 912 874 839 696 671 644 584 509 432 431 422 117
-Tdefcons: 793
-Tdefexpr: 783
-Tdefvar: 786
-Texpr: 1023 889 842 842 784 746 704 370 370 317 317 279 279 257 239 212 211 199 182 175 168 161 160 159 120 108 77 52 45 44
-The: 503
-Tk: 681
-True: 1093 150 130 95 91 88 87
-Tvar: 974 929 902 789 739 568 293 290 283 282 269 261 245 244 242 241 241 214 206 203 202 187 101 83
-Tvname: 899 899 799 782 770 762 700 675 649 468 443 423 383 256 238 198 183
-Type: 1043 978 943 906 868 833 548 305 267 97
-Typecheck5: 1104 7 3
-Typedef: 1048 983 948 911 873 838 816 814 760 701 695 676 670 650 643 583 552 508
-Typeenv: 120 53
-Typeinfo: 1054 989 953 916 877 706 702 678 677 651 590 512
-Typenamesupply: 1050 1021 985 950 913 887 875 840 761 697 672 645 585 553 551 510 467 459 459 458 451 450 442 118
-Typescheme: 888 802 773 553 401 400 382
-Undeclared: 820
-Unification: 251
-Utils: 9
-a: 637 636 636 634 632 630 630 574 392 391 390 390 17 16 4
-abstractions: 943
-accordance: 806
-actual: 562
-ae1: 937 936 934 929 928 63 63 27 26
-ae2: 937 936 934 929 928 63 63 27 26
-afn: 70 66
-al: 1038 1036 1034 902 902 894 893 794 793 418 417
-all: 681 655 654 241
-allowable: 713
-als: 607 593
-alternatives: 601
-alters: 544 543
-alts: 543 540 68 67
-an: 715 594 574
-and: 716 681 656 627 597
-ann: 21 20
-annalts: 31 30
-anndefs: 29 28
-annotatede: 1015 1014 967 966 864 862 861 856 855
-annotatedes: 864 862
-annotatedrhss: 737 720
-annotree: 135 133
-applications: 906
-apply: 712 574
-applyntimes: 577 575 572
-arg: 577 576 575 574
-arglists: 544 541
-argument: 596 588
-as: 655 597
-associates: 558
-association: 594
-b: 637 636 634 632 632 630 615 615 415 415 93 86 85 84 83 18 16
-basetypes: 128 122
-be: 805
-big: 717
-bindings: 717 716 584
-binds: 347
-body: 71 70
-bool: 177 150 85 85
-builtintypes: 149 146 127
-bvar: 1095 1085 1078 1067 974 958
-bvars: 1067 1062
-c: 794 793 764 637 637 636 634 634 632 630 521 520 102 62 25 25 18 17
-cal: 776 775 567 560 555
-calculate: 654
-call: 714 655
-calt: 808 807
-calts: 809 807 806
-caltscurried: 566 556
-caltsxlated: 567 566
-case: 548
-char: 86 86
-check: 715
-checker: 503 3
-checking: 1043 978 943 906 868 833 548
-chr: 83
-cl: 829 827 826 95 93
-cname: 775
-compute: 682
-concat: 727 425 350 147 143 102 95 68 66
-constrtypes: 147 145
-constructor: 621 583 565
-constructors: 822 820 815 598 587 543 541
-contains: 822
-cparams: 808 807 776 775
-cparamss: 809 807 805
-cs: 828 818 607 604 599 593 64
-current: 584
-decls: 1098 1026 1020 1005
-deduced: 715
-definition: 682 598 594
-definitions: 814 583
-dl: 538 533 66 65
-downhill: 241
-e: 1093 1092 1090 1076 1075 1073 1057 1056 1003 1002 1000 992 991 955 955 847 846 536 535 533 531 530 529 528 527 526 406 406 64 64 32 32
-e1: 918 918 755 752 751 750 749 524 523
-e2: 918 918 755 753 752 751 750 524 523
-e3: 753 752
-each: 710 656 655 558
-elem: 829 406 394
-else: 823 821 602 536 339 285 204 125
-enscheme: 569 556
-eqn: 324 323 323
-eqns: 321 320
-error: 305 267
-es: 1058 1056 995 991 856 855 854 847 846 753 752 538 536 535
-expr: 128 122 35 34
-expression: 822 716 714 586
-expressions: 1043 978 833 597 589 548 155
-exprs: 544 541
-f: 790 789 787 462 461 453 453 445 141 139 133 133 38 35 32 31 29 27 27 21 20
-f2: 462 461 461
-fail: 822 820 620 600 304 266
-failed: 97
-final: 735 719 718
-finalconstrtypes: 147 139 128
-finalnamesupply: 572 556
-finalns: 145 128
-finaltype: 969 967 967 939 937 937 882 879 879
-first: 1100 1098 829 740 608
-foldr: 566 321 188
-for: 710 681 681 656 655 654 4
-from: 716
-ftvs: 827 826
-fullenv: 143 139 124
-fullenvwords: 143 124
-func: 577 577 575
-function: 574
-functions: 627 565
-g: 663 662
-gamma: 1098 1098 1097 1097 1093 1092 1090 1080 1080 1076 1075 1073 1058 1057 1056 1029 1026 1026 1006 1006 1005 1005 1003 1002 1000 995 992 991 958 958 955 955 918 918 881 879 856 855 854 847 847 846 844 722 708 696 684 680 663 657 653 602 593 541 540 536 535 533 531 530 529 528 527 526 524 523 521 520 518 517 514 434 434 425 425
-gammas: 654
-gather: 716 655
-gathered: 717
-general: 713
-get: 714 712 681 594
-going: 270
-good: 131 130 123
-gs: 663 662
-head: 823 735 374
-hence: 681
-here: 815
-if: 821 819 599 534 337 283 202 123
-import: 10 9 8
-in: 1037 820 805 682 622 621 601 601 598 594 569 559 385 305 267 263 189 189 189 188 188 187 185 185 182
-input: 715 713
-instance: 715
-int: 515 515 170 84 84
-into: 711
-is: 715
-k: 621 619 618 418 418 417
-ks: 623 618
-l: 189 189 188 188 187 187
-lambda: 943
-lead: 241
-length: 821 819 599 599 572
-let: 978
-letrec: 1043
-lhs: 733 731 731 729
-list: 815
-lists: 833 805 596 588 411
-ljustify: 112
-lookup: 99 98 97 96 83
-lookupresult: 206 204 202
-m: 1104 1090 1090 1073 1073 1012 1012 1000 1000 964 964 935 934 927 926 861 861 854 854 635 635 633 633 631 631 629 629 365 364 324 324 3
-mainexpr: 29 28
-make: 710
-map: 1100 1098 1095 1078 1067 1034 1028 829 794 776 740 739 738 737 735 688 687 608 568 567 563 425 356 355 354 216 143 139 102 95 68 66 31 29
-map2nd: 902 567 566 556
-mapaccuml: 146
-mapannalt: 37 31
-mapanndefn: 34 29
-mapannexpr: 32 30 28 26 25 24 23 21
-me: 66 65
-merge: 711 609 607
-missing: 601
-mixed: 822
-module: 7
-most: 713
-must: 805
-n: 791 790 786 727 709 709 704 703 689 688 687 685 685 577 576 575 574 515 514 491 491 490 489 489 489 488 487 478 478 478 406 406 406 310 308 308 306 305 305 273 270 270 268 267 267 112 61 24 24
-naam: 141 141 112 111 71 70 38 37 35 34
-name: 959 920 585 571 470 445 442 97
-namemap: 794 793 791 786
-nbvs: 1100 1098 1096 1096 1095 1092 1090 1079 1079 1078 1076 1075 1073 1062 1058 1057
-new: 716 558 347
-newbinds: 341 339 337
-newsub: 755 753
-newtvs: 738 708 700 684 680 659 657 653 605 602 567 563 560
-newunifiers: 356 355
-newunifierschecked: 356 351 350
-no: 418
-node: 58 58 21 20
-nodetype: 58
-non: 247 247
-not: 534 406 394
-notarrow: 94 93
-note: 805
-notelem: 263
-ns: 1099 1092 1090 1076 1075 1073 1067 1067 1061 1060 1060 1056 1036 1034 1028 1026 1007 1002 1000 994 991 959 957 957 955 955 921 921 920 918 918 893 891 882 879 856 855 854 849 846 844 764 764 722 708 697 684 680 665 653 606 593 572 560 555 541 540 536 535 533 531 530 529 528 527 526 524 523 521 520 518 517 514 492 491 491 488 487 479 478 478 470 470 470 445 445 146 122
-ns0: 1099 1098 1060 1057 1007 1005 994 992 849 847
-ns1: 1099 1093 1061 1058 1007 1003 995 994 849 847 665 660 606 602
-ns2: 1062 1061 665 657 606 605
-nsl: 664 662 661
-nsl1: 664 663
-nsl2: 664 663
-nub: 1037 825 599 569 353 100
-of: 833 815 715 714 710 683 598 594 565 378 347 329 155 13
-og: 374 373
-ogs: 374 373
-oldgroups: 355 354 351
-olds: 347
-oldvars: 354 353 351
-on: 656
-one: 711
-ordered: 805
-otherwise: 577 492 490 479 265 99
-p: 294 293 291 290
-pair: 347
-panic: 635 633 631 629 418 365 97
-param: 805
-pars: 38 37
-pass: 656 595
-phi: 1097 1096 1093 1092 1080 1079 1076 1075 1015 1015 1014 1014 1012 1006 1003 1002 969 967 966 939 937 936 929 928 894 891 863 862 861 856 856 855 735 733 733 733 731 729 727 727 727 727 725 724 723 723 722 718 709 709 705 703 689 687 685 685 434 434 406 406 404 403 354 353 349 341 336 323 323 321 320 303 301 299 297 296 294 293 291 290 288 287 285 284 282 264 262 260 218 218 218 216 216 214 214 206 204 201 47 47
-phit: 288 285 284
-phitvn: 287 285 283
-poly: 558
-pretty: 95 93 92 91 90 89 88 87 86 85 84 83 81
-program: 621 601 305 267
-psi: 863 863 862
-q: 294 293 291 290
-r: 663 662 363 363
-recflag: 1015 1014 1012 29 28
-recursive: 534 533
-reflect: 597
-reoals: 720 708 699 684 680 659 657 653 609 602
-reorder: 596
-reores: 660 653 609 602
-res: 607 593
-resexpr: 38 37
-result: 791 787 717 683
-resulting: 597 589
-results: 13
-return: 717
-reverse: 731
-revised: 571
-rf: 65
-rhs: 727 709 705 689 685
-rhsannexprs: 1093 1092 1090 1076 1075 1015 1014 1012 1003 1002
-rhsgammas: 660 659
-rhstc1: 663 662 661 660
-rhstcs: 737 735 708 702 688 687 684 680 660 657
-rhstypes: 995 992
-rootenv: 139 137
-rootsubst: 135 133
-roottree: 137 135 124
-roottype: 133
-rs: 663 662
-rubbish: 627
-s: 731 727 725 725 724 724 723 723 722 719 712 654 461 453 453 445
-scheme: 882 881 434 425 403 399 385 382
-schemes: 1028 1026
-scvs: 1037 1036 893 891 406 406 404 404 403 385 385
-second: 1034 738 563 68 68
-sequence: 1067 1036 893 764 598 470 470 467
-sigmas: 656
-signature: 712
-similar: 627
-so: 655 597
-source: 621 601 305 267
-st: 434 434
-stau: 725 724 723 722
-stree: 725 724 723 722
-stvs: 560 555
-sub: 969 939 755 752 751 750 749 749 287 214 201 197
-sub1: 226 226
-sub2: 226 226
-subnames: 1100
-subst: 1038 902 899 894 879 845 731 689 515 355 233 231
-substitution: 717 712 268
-substitutions: 711 710 329 241
-such: 418
-supply: 585 571
-sw: 722 708 698 684 680 657 653 602 593 68 67
-switch: 716 714 586 541 540
-switchexpr: 31 30
-t: 1085 1085 1038 1038 1037 1034 1034 1015 1015 1014 969 966 891 891 863 862 861 856 855 764 404 403 385 385 288 282 272 264 263 261 260 185 185 141 141 101 101 100 98 98 81 80
-t1: 929 928 307 303 297 297 296 296 218 218 189 189 163 163 103 103 91 90 88 87
-t2: 929 928 309 303 297 297 296 296 218 218 189 189 163 163 103 103 92 90 89 87
-t2e: 71 68 68 67 66 65 64 64 63 63 63 62 61 60 58 58 56
-tau: 735 731 731 729 724 719 718 709 704 689 688 685
-tc: 1093 1003 955 847 722 714 663 655 540 533 530 528 527 526 523 520 517 514 508 127
-tcadd: 1098 1026 1020 1005
-tcal: 1038 902 899 894
-tcap: 918 911 524
-tcap1: 928 926 918
-tcap2: 936 934 929
-tcapply: 969 939 287 214 201 197
-tcarrow: 163 159
-tcbar: 1037 394 390 385
-tcbool: 177 175
-tccase: 593 583 541
-tccase1: 653 643 602
-tccase2: 680 670 657
-tccase3: 708 695 684
-tccharval: 881 418 417 415
-tccheck: 122 117
-tccheckunifier: 365 364 363 361 356
-tcconstrtypeschemes: 555 551 146
-tcdelta: 264 247 242 238
-tcdeoksel: 755 733 689 629 629 628
-tcdeplete: 957 921 572 470 453 450
-tcexclude: 406 404
-tcextend: 284 260 255
-tcgenbar: 1034 1028
-tcgetallgammas: 809 807 804 799 659
-tcgetgamman: 808 775 770
-tcgettypedef: 818 814 604
-tcid: 879 845 731 689 515 355 233 231
-tcint: 170 168
-tck31sel: 739 636
-tck33: 740 659 637 608
-tcl: 1058 995 918 856 846 844 838
-tcl1: 855 854 847
-tcl2: 862 861 856
-tclambda: 955 948 531 529
-tclambda1: 966 964 955
-tclet: 991 983 535
-tclet1: 1002 1000 992
-tclet2: 1093 1014 1012 1003
-tcletrec: 1056 1048 536
-tcletrec1: 1075 1073 1057
-tcletrec2: 1092 1090 1076
-tcmapannexpr: 47 38 35 32 31 29 27 27 20 16
-tcmergesubs: 733 727 339 336 333
-tcmergesubsmain: 349 346 341
-tcn: 300 300 299 299 216 216
-tcname: 1067 1036 893 764 470 470 467
-tcnew: 1067 1067 1062 974 958
-tcnewinstance: 891 887 882
-tcnewtypevars: 764 760 605 560
-tcnext: 959 920 470 445 442
-tcnsdlimit: 499 499 496 495 489 489
-tcnsdouble: 492 491 487 486 483 462
-tcnsslimit: 499 498 478
-tcnssucc: 492 479 478 477 474 461 453
-tcok13sel: 723 687 631 631 630
-tcok23sel: 735 724 688 633 633 632
-tcok33sel: 737 725 635 635 634
-tcold: 1095 1085 1078
-tcoldunified: 374 373 372 370 351
-tcpretty: 143 111 108
-tcreorder: 623 618 617 615 609
-tcresult: 133 127 123
-tcscomp: 1015 863 264 226 222
-tcshowtexpr: 309 307 272 269 113 97 80 77
-tcsplit: 1099 1061 1060 1007 994 849 665 664 606 461 458
-tcsub: 1097 1096 1080 1079 1038 1006 891 863 856 735 729 434 434 430 404 403 399 374 288 218 218 218 216 216 214 210 204 47
-tcsubstanntree: 135 47 43
-tctdefsubst: 794 793 786 782 776 567
-tctreetoenv: 137 55 52
-tctvars: 1037 569 385 263 185 182
-tcunify: 929 755 751 731 323 303 299 296 294 293 291 290 285 282 278
-tcunifyl: 1076 320 316 301 297
-tcunifyset: 753 752 750 749 745 689 355
-tcunknowns: 1029 425 425 422 385 382
-tcvar: 879 873 521 518
-tdcnames: 740 720 609 608 599
-tdefs: 146 127 122
-tdefset: 825 823 821 819
-tdinuse: 740 739 708 701 684 680 659 657 653 608 605 604 602
-tds: 1093 1092 1090 1076 1075 1073 1058 1057 1056 1003 1002 1000 995 992 991 955 955 918 918 879 856 855 854 847 847 846 844 827 818 722 708 695 684 680 663 657 653 604 602 593 541 540 536 535 533 531 530 529 528 527 526 524 523 521 520 518 517 514
-tdsignature: 739 729 568 566
-te: 1097 1096 1080 1079 1029 1006 856 434 430 425 422
-texp: 569 569 569
-texpr: 247 247
-that: 715
-the: 717 717 716 716 715 714 714 712 712 712 711 710 683 682 682 681 681 655 654 654 598 597 596 594 571 565 565 562 559
-themselves: 562
-then: 822 820 656 600 535 338 284 203 124
-therein: 595
-these: 731
-this: 715
-tijp: 71 70
-times: 574
-tipe: 113 111
-tn: 568 560 555
-tname: 827 826
-to: 1038 902 899 894 727 714 712 712 709 709 704 703 689 688 687 685 685 681 655 597 595 574 270
-track: 378
-tree: 725 719 56 55 47 47
-ts: 1098 1095 1078 1076 1076 1075 1028 1026 1005 1002 863 862 301 301 299 299 216 216 188 188 102 102 99 98
-tvars: 710 189 189 189 188 188 187 185
-tvdict: 103 103 103 102 102 101 100 100 83
-tvl: 809 808 807 804 776 775
-tvn: 974 974 969 966 964 959 958 955 939 936 934 929 929 928 926 920 918 789 789 287 284 283 282 269 264 263 261 260 247 247 245 245 244 244 243 242 214 214 206 206 203 202 201
-tvn2: 245 245 244 244 243 242
-tvname: 99 98 98 96 83 83
-tvs: 739 738 572 568 563
-type: 1038 891 863 814 735 729 717 715 714 713 682 682 595 594 584 583 562 559 558 503 404 374 288 218 218 218 216 216 214 210 204 155 125 47 3
-typedef: 712
-types: 683 656 565 378
-u: 374 373
-undeclared: 621
-unified: 347
-unifiedolds: 341 339 338
-unifier: 683 681
-unifiers: 681
-unify: 324 323 321 306
-unknown: 710
-unknowns: 1037 1034 1029 1028
-unzip2: 609 544 543 538
-uol: 623 619 618 617
-up: 710
-us: 374 373
-use: 820 594
-used: 815
-usedc: 829 828
-utdomain: 353
-utlookup: 791
-utlookupall: 354
-utlookupdef: 619 418 206
-utrange: 425
-v: 60 23 23
-v5: 3
-var: 558 247 247
-variable: 418
-variables: 868 682 595 562 438
-vars: 595 558
-version: 4
-vl: 764 764
-vs: 141 32 32
-where: 1094 1077 1059 1035 1027 1004 993 968 956 938 919 892 880 848 824 788 754 721 686 664 658 603 557 542 537 489 462 405 352 340 322 286 205 186 140 133 126 82 57 22 7
-with: 806 558 308
-x: 1085 974 974 967 966 964 958 955 955 881 879 879 628 628 531 530 529 528 518 517 434 434 394 394 394 187 187 133 133 130
-x2: 131
-xs: 1093 1092 1090 1076 1075 1073 1067 1067 1062 1057 1056 1026 1026 1015 1014 1012 1005 1003 1002 1000 992 991 538 536 535 531 530 394 394
-y: 531 530 188
-ys: 394 394
-zip: 1076 1067 1036 1026 1015 893 776 764 720 720 607 607 351 301
diff --git a/ghc/tests/programs/launchbury/Main.hs b/ghc/tests/programs/launchbury/Main.hs
deleted file mode 100644 (file)
index 6351d54..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-e=181021504832735228091659724090293195791121747536890433
-
-u(f,m)x=i(m(x),       [],let(a,b)=f(x)       in(a:u(f,m)b))
-(v,h)=(foldr(\x(y    )->00+128*y+x)0,u(     sp(25),((==)"")))
-p::(Integer,Integer )->Integer      ->     Integer    --NotInt
-p(n,m)x     =i(n==0 ,1,i(z n             ,q(n,m)x,    r(n,m)x))
-i(n,e,d     )=if(n) then(e)              else  (d)    --23+3d4f
-(g,main     ,s,un)= (\x->x,             y(j),\x->x*x,unlines)--)
-j(o)=i(take(2)o==   "e=","e="++t        (drop(4-2)o),i(d>e,k,l)o)
-l=un.map (show.p      (e,n).v.map(      fromIntegral{-g-}.fromEnum)).h
-k=co.map(map(toEnum       .fromIntegral    ).w.p(d,n).   read).lines
-(t,y)=(\ (o:q)->              i(o=='-'  ,'1','-' ):   q,interact)
-q(n,m)x=   mod(s(    p(        div(n)2, m{-jl-})x)    )m--hd&&gdb
-(r,z,co)    =(\(n,   m)x->mod(x*p(n-1,  m)x)m,even    ,concat)--6
-(w,sp)=(    u(\x->(   mod(x)128,div(x   )128),(==0    )),splitAt)
-
-d=563347325936+1197371806136556985877790097-563347325936
-n=351189532146914946493104395525009571831256157560461451
diff --git a/ghc/tests/programs/launchbury/Makefile b/ghc/tests/programs/launchbury/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/launchbury/launchbury.stdin b/ghc/tests/programs/launchbury/launchbury.stdin
deleted file mode 100644 (file)
index 085b33d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-e=181021504832735228091659724090293195791121747536890433
-
-u(f,m)x=i(m(x),       [],let(a,b)=f(x)       in(a:u(f,m)b))
-(v,h)=(foldr(\x(y    )->00+128*y+x)0,u(     sp(25),((==)"")))
-p::(Integer,Integer )->Integer      ->     Integer    --NotInt
-p(n,m)x     =i(n==0 ,1,i(z n             ,q(n,m)x,    r(n,m)x))
-i(n,e,d     )=if(n) then(e)              else  (d)    --23+3d4f
-(g,main     ,s,un)= (\x->x,             y(j),\x->x*x,unlines)--)
-j(o)=i(take(2)o==   "e=","e="++t        (drop(4-2)o),i(d>e,k,l)o)
-l=un.map (show.p      (e,n).v.map(      fromIntegral{-g-}.ord)).h
-k=co.map(map(chr       .fromIntegral    ).w.p(d,n).   read).lines
-(t,y)=(\ (o:q)->              i(o=='-'  ,'1','-' ):   q,interact)
-q(n,m)x=   mod(s(    p(        div(n)2, m{-jl-})x)    )m--hd&&gdb
-(r,z,co)    =(\(n,   m)x->mod(x*p(n-1,  m)x)m,even    ,concat)--6
-(w,sp)=(    u(\x->(   mod(x)128,div(x   )128),(==0    )),splitAt)
-
-d=563347325936+1197371806136556985877790097-563347325936
-n=351189532146914946493104395525009571831256157560461451
diff --git a/ghc/tests/programs/launchbury/launchbury.stdout b/ghc/tests/programs/launchbury/launchbury.stdout
deleted file mode 100644 (file)
index 9eb0357..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-e=-81021504832735228091659724090293195791121747536890433
-
-u(f,m)x=i(m(x),       [],let(a,b)=f(x)       in(a:u(f,m)b))
-(v,h)=(foldr(\x(y    )->00+128*y+x)0,u(     sp(25),((==)"")))
-p::(Integer,Integer )->Integer      ->     Integer    --NotInt
-p(n,m)x     =i(n==0 ,1,i(z n             ,q(n,m)x,    r(n,m)x))
-i(n,e,d     )=if(n) then(e)              else  (d)    --23+3d4f
-(g,main     ,s,un)= (\x->x,             y(j),\x->x*x,unlines)--)
-j(o)=i(take(2)o==   "e=","e="++t        (drop(4-2)o),i(d>e,k,l)o)
-l=un.map (show.p      (e,n).v.map(      fromIntegral{-g-}.ord)).h
-k=co.map(map(chr       .fromIntegral    ).w.p(d,n).   read).lines
-(t,y)=(\ (o:q)->              i(o=='-'  ,'1','-' ):   q,interact)
-q(n,m)x=   mod(s(    p(        div(n)2, m{-jl-})x)    )m--hd&&gdb
-(r,z,co)    =(\(n,   m)x->mod(x*p(n-1,  m)x)m,even    ,concat)--6
-(w,sp)=(    u(\x->(   mod(x)128,div(x   )128),(==0    )),splitAt)
-
-d=563347325936+1197371806136556985877790097-563347325936
-n=351189532146914946493104395525009571831256157560461451
diff --git a/ghc/tests/programs/lennart_array/Main.hs b/ghc/tests/programs/lennart_array/Main.hs
deleted file mode 100644 (file)
index 6f00ec6..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{-
-Date: Thu, 22 Sep 1994 01:45:39 +0200
-From: Lennart Augustsson <augustss@cs.chalmers.se>
-Message-Id: <199409212345.BAA01703@statler.cs.chalmers.se>
-To: glasgow-haskell-bugs@dcs.glasgow.ac.uk
-Subject: ghc bug
-
-
-Ghc has the wrong semantics for arrays as exemplified by this simple
-program:
--}
-
-import Array -- 1.3
-
-main = print (array (1,1) [ (1,2), (1,3) ])
-
-{-
-As can be seen from the reference implementation in the report this
-should give an error, but there is no complaint when the program
-is run.
-
-       -- Lennart
--}
diff --git a/ghc/tests/programs/lennart_array/Makefile b/ghc/tests/programs/lennart_array/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/lennart_array/lennart_array.stdout b/ghc/tests/programs/lennart_array/lennart_array.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/programs/lennart_range/Main.hs b/ghc/tests/programs/lennart_range/Main.hs
deleted file mode 100644 (file)
index c45e4b2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{-
-Date: Thu, 22 Sep 1994 01:59:49 +0200
-From: Lennart Augustsson <augustss@cs.chalmers.se>
-Message-Id: <199409212359.BAA01719@statler.cs.chalmers.se>
-To: glasgow-haskell-bugs@dcs.glasgow.ac.uk
-Subject: ghc bug
-
-
-Some floating constants that are within the floating range
-become wrong, e.g. 
-
-       1.82173691287639817263897126389712638972163e-300::Double
-
-       -- Lennart
-
-PS.  Maybe you use fromRational as defined in the Prelude?
-That won't do.  It is badly broken, tell me if you want
-one that works.
--}
-
--- I have turned this into a general test of extreme constants.
--- WDP 94/12
-
-main = putStr (shows (1.82173691287639817263897126389712638972163e-300::Double) "\n")
diff --git a/ghc/tests/programs/lennart_range/Makefile b/ghc/tests/programs/lennart_range/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/lennart_range/lennart_range.stdout b/ghc/tests/programs/lennart_range/lennart_range.stdout
deleted file mode 100644 (file)
index 5196dcc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.821736912876398e-300
diff --git a/ghc/tests/programs/lex/Main.hs b/ghc/tests/programs/lex/Main.hs
deleted file mode 100644 (file)
index 4c9a448..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module Main where
-
-main = interact ( \ s -> shows (lex' s) "\n")
-     where lex' "" = []
-          lex' s = tok : lex' s' where -- [(tok,s')] = lex s
-                                       (tok,s') = case lex s of
-                                                   [r]   -> r
-                                                   []    -> error ("Empty: " ++ s) 
-                                                   other -> error ("Multi: " ++ s)
diff --git a/ghc/tests/programs/lex/Makefile b/ghc/tests/programs/lex/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/lex/lex.stdin b/ghc/tests/programs/lex/lex.stdin
deleted file mode 100644 (file)
index dcd009c..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-module Graph  where
-
-import Parse
-import StdLib
-import PSlib
-import GRIP
-
-paperX = 280::Int
-paperY = 190::Int
-
-fromInt :: Num a => Int -> a
-fromInt = fromInteger . toInteger
-
-gspostscript str = initialise stdheader ++ portrait ++ str ++ "showpage\n"
-postscript str = initialise stdheader ++ landscape ++ str ++ "showpage\n"
-
-ePostscript (reqdx,reqdy) str = initialise (stdheader++
-       "%%BoundingBox: 0 0 "++show (cms2pts reqdx)++" "++show (cms2pts reqdy)++"\n"
-                       ++ "%%EndComments\n")
-       ++ scale (fromInt reqdx*10/fromInt paperX) (fromInt reqdy*10/fromInt paperY) ++ str ++
-       showpage
-
-initGraph title pedata (topX,topY) (xlabel,ylabel) keys = 
-       drawBox (Pt 0 0) paperX paperY ++
-       drawBox (Pt 1 1) (paperX-2) 5 ++ 
-       drawBox (Pt 1 (paperY-7)) (paperX-2) 6 ++
-       setfont "BOLD" ++ moveto (Pt (paperX `div` 2) (paperY-6)) ++ cjustify (title) ++
-       setfont "NORM" ++
-       placePEs pedata ++
-       translate 20 25 ++
-       newpath ++ moveto (Pt 0 (-5)) ++ lineto (Pt 0 dimY) ++  
-        moveto (Pt (-5) 0) ++ lineto (Pt dimX 0) ++ stroke ++   
-       setfont "SMALL" ++
-       markXAxis dimX topX++
-       markYAxis dimY topY++
-       moveto (Pt 0 (dimY+4)) ++ rjustify ylabel ++ stroke ++
-       moveto (Pt dimX (-8)) ++ rjustify xlabel ++ stroke ++
-       setfont "NORM" ++
-       dokeys dimX keys 
-
-placePEs (pes,on) | checkPEs (tail pes) on = 
-               showActive (length pes) (length used) ++
-               showUsed pes used ++ setfont "NORM"
-               where used = if on==[] then tail pes else on
-               
-
-cms2pts :: Int -> Int
-cms2pts x = round (28.4584 * fromInt x)
-
-plotCurve ::  Int -> [Point] -> Postscript
-plotCurve x pts = setgray x ++ fillObject pts
-
-plot :: [Point] -> Postscript
-plot points = plotCurve 5 (Pt 0 0:points)
-
-dokeys left keys = concat (map2 format (places 0) keys)
-       where
-       format pt@(Pt x y) (col,tex,pc) = fillBox pt 16 9 col ++ stroke ++ moveto (Pt (x+17) (y+3))
-                                       ++ text tex ++ stroke ++ moveto (Pt (x+8) (y+3)) ++
-                                       inv col ++ setfont "BOLD" ++ cjustify (pc) ++ 
-                                       stroke ++ setfont "NORM" ++ setgray 10 
-       no=left `div` length keys
-       places n | n == no = []
-       places n = (Pt (n*no) (-17)):places (n+1)
-
-showActive t f = 
-               setfont "LARGE" ++ moveto (Pt 10 16) ++ cjustify (show f) ++
-               setfont "SMALL" ++ moveto (Pt 10 12) ++ cjustify "PE(s)" ++ stroke ++ 
-               setfont "SMALL" ++ moveto (Pt 10 8) ++ cjustify "displayed" ++ stroke ++ 
-               setfont "NORM"
-
-showUsed (m:pes) on = moveto (Pt 2 2) ++ setfont "SMALL" ++ text "Configuration:" ++
-                       dopes (paperX-27) (("SMALLITALIC",showPE m):map f pes) ++ stroke
-       where
-       f pe | elem pe on = ("SMALLBOLD",showPE pe)
-            | otherwise = ("SMALL",showPE pe)
-
-dopes left pes = concat (map2 format (places 0) pes)
-        where
-        format pt@(Pt x y) (font,tex) = setfont font ++ moveto pt  ++ text tex ++ stroke
-        no=left `div` ((length pes*2)+1)
-       f x = (no*((x*2)+1)) + 27
-        places n | n>2*no = []
-        places n = (Pt (f n) 2):places (n+1)
-
-
-
-checkPEs pes [] = True
-checkPEs pes (p:ps) | elem p pes = checkPEs pes ps
-                   | otherwise = error ("Attempt to gather information from inactive PE - "++ showPE p)
-
-showPE :: PElement -> String
-showPE (PE str no) = str++"."++show no
-
-inv x | x>=5 = setgray 0
-      | otherwise = setgray 10
-
-dimX = paperX-30
-dimY = paperY-40
-
-markXAxis :: Int -> Int -> Postscript
-markXAxis dimX maxX = label 10 ++ markOnX 100
-       where
-       label 0 = ""
-       label x = newpath ++ moveto (Pt (notch x) 0) ++ rlineto 0 (-2) ++ 
-                 moveto (Pt (notch x) (-5)) ++ 
-                 cjustify (printFloat (t x)) ++ stroke ++ label (x-1)
-       t x = fromInt x*(fromInt maxX / fromInt 10) 
-       notch x = x*(dimX `div` 10)
-
-markOnX n = mapcat notches [1..n] ++ stroke
-       where
-       notches n = movetofloat (m*fromInt n) 0 ++  (rlineto 0 (-1)) ++ stroke
-       m = fromInt dimX/fromInt n
-
-
-markYAxis :: Int -> Int -> Postscript
-markYAxis dimY maxY = label 10 ++ markOnY (calibrate maxY)
-       where
-       label 0 = ""
-       label x = newpath ++ moveto (Pt 0 (notch x)) ++ rlineto (-2) 0 ++ 
-                 moveto (Pt (-3) (notch x)) ++ 
-                 rjustify (printFloat (t x)) ++ stroke ++ label (x-1)
-       t x = fromInt x*(fromInt maxY / fromInt 10) 
-       notch x = x*(dimY `div` 10)
-
-calibrate x | x<=1 = 1
-           | x<=100 = x
-           | otherwise = calibrate (x `div` 10)
-
-markOnY n = mapcat notches [1..n] ++ stroke
-       where
-       notches n = movetofloat 0 (m*fromInt n) ++  (rlineto (-1) 0) 
-       m = fromInt dimY/fromInt n
-
-movetofloat x y = show x ++ " " ++ show y ++ " moveto\n"
-
-
-determineScale :: [Point] -> (Int,Int)
-determineScale pts = (axisScale x, axisScale y)
-       where   (min,Pt x y) = minandmax pts
-
-axisScale :: Int -> Int
-axisScale x = axisScale' x 1
-axisScale' x m | x <= m = m
-               | x <= m*2 = m*2
-               | x <= m*5 = m*5
-               | x <= m*10 = m*10
-               | otherwise = axisScale' x (m*10) 
-
-minandmax :: [Point] -> (Point,Point)
-minandmax [] = error "No points"
-minandmax (p:ps) = f (p,p) ps
-       where
-       f p [] = p
-       f (Pt minx miny,Pt maxx maxy) (Pt x y:ps) = f (Pt minx' miny',Pt maxx' maxy') ps
-                       where   minx' = min x minx
-                               miny' = min y miny
-                               maxx' = max x maxx
-                               maxy' = max y maxy
-
-
-printFloat :: Float -> String
-printFloat x = f (show (round (x*10)))
-               where
-               f "0" = "0"
-               f r | x<1 = "0."++r
-               f (r:"0") | x<10 = [r]
-               f (r:m) | x<10 = r:'.':m
-               f _ = show (round x)
diff --git a/ghc/tests/programs/lex/lex.stdout b/ghc/tests/programs/lex/lex.stdout
deleted file mode 100644 (file)
index e1e9e46..0000000
+++ /dev/null
@@ -1 +0,0 @@
-["module","Graph","where","import","Parse","import","StdLib","import","PSlib","import","GRIP","paperX","=","280","::","Int","paperY","=","190","::","Int","fromInt","::","Num","a","=>","Int","->","a","fromInt","=","fromInteger",".","toInteger","gspostscript","str","=","initialise","stdheader","++","portrait","++","str","++","\"showpage\\n\"","postscript","str","=","initialise","stdheader","++","landscape","++","str","++","\"showpage\\n\"","ePostscript","(","reqdx",",","reqdy",")","str","=","initialise","(","stdheader","++","\"%%BoundingBox: 0 0 \"","++","show","(","cms2pts","reqdx",")","++","\" \"","++","show","(","cms2pts","reqdy",")","++","\"\\n\"","++","\"%%EndComments\\n\"",")","++","scale","(","fromInt","reqdx","*","10","/","fromInt","paperX",")","(","fromInt","reqdy","*","10","/","fromInt","paperY",")","++","str","++","showpage","initGraph","title","pedata","(","topX",",","topY",")","(","xlabel",",","ylabel",")","keys","=","drawBox","(","Pt","0","0",")","paperX","paperY","++","drawBox","(","Pt","1","1",")","(","paperX","-","2",")","5","++","drawBox","(","Pt","1","(","paperY","-","7",")",")","(","paperX","-","2",")","6","++","setfont","\"BOLD\"","++","moveto","(","Pt","(","paperX","`","div","`","2",")","(","paperY","-","6",")",")","++","cjustify","(","title",")","++","setfont","\"NORM\"","++","placePEs","pedata","++","translate","20","25","++","newpath","++","moveto","(","Pt","0","(","-","5",")",")","++","lineto","(","Pt","0","dimY",")","++","moveto","(","Pt","(","-","5",")","0",")","++","lineto","(","Pt","dimX","0",")","++","stroke","++","setfont","\"SMALL\"","++","markXAxis","dimX","topX","++","markYAxis","dimY","topY","++","moveto","(","Pt","0","(","dimY","+","4",")",")","++","rjustify","ylabel","++","stroke","++","moveto","(","Pt","dimX","(","-","8",")",")","++","rjustify","xlabel","++","stroke","++","setfont","\"NORM\"","++","dokeys","dimX","keys","placePEs","(","pes",",","on",")","|","checkPEs","(","tail","pes",")","on","=","showActive","(","length","pes",")","(","length","used",")","++","showUsed","pes","used","++","setfont","\"NORM\"","where","used","=","if","on","==","[","]","then","tail","pes","else","on","cms2pts","::","Int","->","Int","cms2pts","x","=","round","(","28.4584","*","fromInt","x",")","plotCurve","::","Int","->","[","Point","]","->","Postscript","plotCurve","x","pts","=","setgray","x","++","fillObject","pts","plot","::","[","Point","]","->","Postscript","plot","points","=","plotCurve","5","(","Pt","0","0",":","points",")","dokeys","left","keys","=","concat","(","map2","format","(","places","0",")","keys",")","where","format","pt","@","(","Pt","x","y",")","(","col",",","tex",",","pc",")","=","fillBox","pt","16","9","col","++","stroke","++","moveto","(","Pt","(","x","+","17",")","(","y","+","3",")",")","++","text","tex","++","stroke","++","moveto","(","Pt","(","x","+","8",")","(","y","+","3",")",")","++","inv","col","++","setfont","\"BOLD\"","++","cjustify","(","pc",")","++","stroke","++","setfont","\"NORM\"","++","setgray","10","no","=","left","`","div","`","length","keys","places","n","|","n","==","no","=","[","]","places","n","=","(","Pt","(","n","*","no",")","(","-","17",")",")",":","places","(","n","+","1",")","showActive","t","f","=","setfont","\"LARGE\"","++","moveto","(","Pt","10","16",")","++","cjustify","(","show","f",")","++","setfont","\"SMALL\"","++","moveto","(","Pt","10","12",")","++","cjustify","\"PE(s)\"","++","stroke","++","setfont","\"SMALL\"","++","moveto","(","Pt","10","8",")","++","cjustify","\"displayed\"","++","stroke","++","setfont","\"NORM\"","showUsed","(","m",":","pes",")","on","=","moveto","(","Pt","2","2",")","++","setfont","\"SMALL\"","++","text","\"Configuration:\"","++","dopes","(","paperX","-","27",")","(","(","\"SMALLITALIC\"",",","showPE","m",")",":","map","f","pes",")","++","stroke","where","f","pe","|","elem","pe","on","=","(","\"SMALLBOLD\"",",","showPE","pe",")","|","otherwise","=","(","\"SMALL\"",",","showPE","pe",")","dopes","left","pes","=","concat","(","map2","format","(","places","0",")","pes",")","where","format","pt","@","(","Pt","x","y",")","(","font",",","tex",")","=","setfont","font","++","moveto","pt","++","text","tex","++","stroke","no","=","left","`","div","`","(","(","length","pes","*","2",")","+","1",")","f","x","=","(","no","*","(","(","x","*","2",")","+","1",")",")","+","27","places","n","|","n",">","2","*","no","=","[","]","places","n","=","(","Pt","(","f","n",")","2",")",":","places","(","n","+","1",")","checkPEs","pes","[","]","=","True","checkPEs","pes","(","p",":","ps",")","|","elem","p","pes","=","checkPEs","pes","ps","|","otherwise","=","error","(","\"Attempt to gather information from inactive PE - \"","++","showPE","p",")","showPE","::","PElement","->","String","showPE","(","PE","str","no",")","=","str","++","\".\"","++","show","no","inv","x","|","x",">=","5","=","setgray","0","|","otherwise","=","setgray","10","dimX","=","paperX","-","30","dimY","=","paperY","-","40","markXAxis","::","Int","->","Int","->","Postscript","markXAxis","dimX","maxX","=","label","10","++","markOnX","100","where","label","0","=","\"\"","label","x","=","newpath","++","moveto","(","Pt","(","notch","x",")","0",")","++","rlineto","0","(","-","2",")","++","moveto","(","Pt","(","notch","x",")","(","-","5",")",")","++","cjustify","(","printFloat","(","t","x",")",")","++","stroke","++","label","(","x","-","1",")","t","x","=","fromInt","x","*","(","fromInt","maxX","/","fromInt","10",")","notch","x","=","x","*","(","dimX","`","div","`","10",")","markOnX","n","=","mapcat","notches","[","1","..","n","]","++","stroke","where","notches","n","=","movetofloat","(","m","*","fromInt","n",")","0","++","(","rlineto","0","(","-","1",")",")","++","stroke","m","=","fromInt","dimX","/","fromInt","n","markYAxis","::","Int","->","Int","->","Postscript","markYAxis","dimY","maxY","=","label","10","++","markOnY","(","calibrate","maxY",")","where","label","0","=","\"\"","label","x","=","newpath","++","moveto","(","Pt","0","(","notch","x",")",")","++","rlineto","(","-","2",")","0","++","moveto","(","Pt","(","-","3",")","(","notch","x",")",")","++","rjustify","(","printFloat","(","t","x",")",")","++","stroke","++","label","(","x","-","1",")","t","x","=","fromInt","x","*","(","fromInt","maxY","/","fromInt","10",")","notch","x","=","x","*","(","dimY","`","div","`","10",")","calibrate","x","|","x","<=","1","=","1","|","x","<=","100","=","x","|","otherwise","=","calibrate","(","x","`","div","`","10",")","markOnY","n","=","mapcat","notches","[","1","..","n","]","++","stroke","where","notches","n","=","movetofloat","0","(","m","*","fromInt","n",")","++","(","rlineto","(","-","1",")","0",")","m","=","fromInt","dimY","/","fromInt","n","movetofloat","x","y","=","show","x","++","\" \"","++","show","y","++","\" moveto\\n\"","determineScale","::","[","Point","]","->","(","Int",",","Int",")","determineScale","pts","=","(","axisScale","x",",","axisScale","y",")","where","(","min",",","Pt","x","y",")","=","minandmax","pts","axisScale","::","Int","->","Int","axisScale","x","=","axisScale'","x","1","axisScale'","x","m","|","x","<=","m","=","m","|","x","<=","m","*","2","=","m","*","2","|","x","<=","m","*","5","=","m","*","5","|","x","<=","m","*","10","=","m","*","10","|","otherwise","=","axisScale'","x","(","m","*","10",")","minandmax","::","[","Point","]","->","(","Point",",","Point",")","minandmax","[","]","=","error","\"No points\"","minandmax","(","p",":","ps",")","=","f","(","p",",","p",")","ps","where","f","p","[","]","=","p","f","(","Pt","minx","miny",",","Pt","maxx","maxy",")","(","Pt","x","y",":","ps",")","=","f","(","Pt","minx'","miny'",",","Pt","maxx'","maxy'",")","ps","where","minx'","=","min","x","minx","miny'","=","min","y","miny","maxx'","=","max","x","maxx","maxy'","=","max","y","maxy","printFloat","::","Float","->","String","printFloat","x","=","f","(","show","(","round","(","x","*","10",")",")",")","where","f","\"0\"","=","\"0\"","f","r","|","x","<","1","=","\"0.\"","++","r","f","(","r",":","\"0\"",")","|","x","<","10","=","[","r","]","f","(","r",":","m",")","|","x","<","10","=","r",":","'.'",":","m","f","_","=","show","(","round","x",")",""]
diff --git a/ghc/tests/programs/life_space_leak/Main.hs b/ghc/tests/programs/life_space_leak/Main.hs
deleted file mode 100644 (file)
index 847ed63..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
---------------------------------
---     The Game of Life      --
---------------------------------
-
-generations x = 30
-
-data L a = N | C1 a (L a) | C2 a a (L a)
-
-data Tuple2 a b = T2 a b
-
-data Tuple3 a b c = T3 a b c
-
-
-main = putStr (listChar_string
-                    (append1 (C1 '\FF' N)
-                             (life1 (generations ()) (start ()))))
-
-listChar_string :: L Char -> String
-listChar_string N = []
-listChar_string (C1 x xs) = x : listChar_string xs
-
-start :: a -> L (L Int)
-start x = (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1 N
-          (C1
-           (C1 0
-           (C1 0
-           (C1 0
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 0
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 0
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 0
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 1
-           (C1 0 N))))))))))))))))))))))))))) N)))))))))))))))
-
--- Calculating the next generation
-
-gen1 :: Int -> L (L Int) -> L (L Int)
-gen1 n board = map1 row1 (shift1 (copy1 n 0) board)
-
-row1 :: Tuple3 (L Int) (L Int) (L Int) -> L Int
-row1 (T3 last this next)
-  = zipWith31 elt1 (shift2 0 last) 
-                   (shift2 0 this) 
-                   (shift2 0 next)
-
-
-elt1 :: Tuple3 Int Int Int 
-        -> (Tuple3 Int Int Int) 
-        -> (Tuple3 Int Int Int) -> Int
-elt1 (T3 a b c) (T3 d e f) (T3 g h i) 
- = if (not (eq tot 2))
-          && (not (eq tot 3))
-      then 0
-      else if (eq tot 3) then 1 else e
-   where tot = a `plus` b `plus` c `plus` d 
-               `plus` f `plus` g `plus` h `plus` i
-
-eq :: Int -> Int -> Bool
-eq x y = x == y
-
-plus :: Int -> Int -> Int
-plus x y = x + y
-
-shiftr1 :: L Int -> L (L Int) -> L (L Int)
-shiftr1 x xs = append2 (C1 x N)  (init1 xs)
-
-shiftl1 :: L Int -> L (L Int) -> L (L Int)
-shiftl1 x xs = append2 (tail1 xs) (C1 x N)
-
-shift1 :: L Int -> L (L Int) 
-            -> L (Tuple3 (L Int) (L Int) (L Int))
-shift1 x xs = zip31 (shiftr1 x xs) xs (shiftl1 x xs)
-
-shiftr2 :: Int -> L Int -> L Int
-shiftr2 x xs = append3 (C1 x N) (init2 xs)
-
-shiftl2 :: Int -> L Int -> L Int
-shiftl2 x xs = append3 (tail2 xs) (C1 x N)
-
-shift2 :: Int -> L Int -> L (Tuple3 Int Int Int)
-shift2 x xs = zip32 (shiftr2 x xs) xs (shiftl2 x xs)
-
--- copy
-
-copy1 :: Int -> Int -> L Int
-copy1 0 x = N
-copy1 n x = C1 x (copy1 (n-1) x)
-
-copy2 :: Int -> L Int -> L (L Int)
-copy2 0 x = N
-copy2 n x = C1 x (copy2 (n-1) x)
-
-copy3 :: Int -> Char -> L Char
-copy3 0 x = N
-copy3 n x = C1 x (copy3 (n-1) x)
-
--- Displaying one generation
-
-disp1 :: (Tuple2 (L Char) (L (L Int))) -> L Char
-disp1 (T2 gen xss) 
- = append1 gen 
-    (append1 (C1 '\n' (C1 '\n' N)) 
-             (foldr_1 (glue1 (C1 '\n' N)) N
-                       (map4 (compose2 concat1 (map2 star1)) xss)))
-
-star1 :: Int -> L Char
-star1 i = case i of
-           0 -> C1 ' ' (C1 ' ' N)
-           1 -> C1 ' ' (C1 'o' N)
-
-glue1 :: L Char -> L Char -> L Char -> L Char 
-glue1 s xs ys = append1 xs (append1 s ys)
-
--- Generating and displaying a sequence of generations
-
-life1 :: Int -> L (L Int) -> L Char
-life1 n xss 
-  = foldr_1 (glue1 (copy3 (n+2) '\VT')) N
-            (map5 disp1
-              (zip1_ (map6 (string_ListChar.show) (ints 0))
-                    gens))
-    where
-    gens = take3 (740::Int) (iterate1 (gen1 n) (initial1 n xss))
-
-ints :: Int -> L Int
-ints x = C1 x (ints (x+1))
-
-string_ListChar :: String -> L Char
-string_ListChar [] = N
-string_ListChar (x:xs) = C1 x (string_ListChar xs)
-
-initial1 :: Int -> L (L Int) -> L (L Int)
-initial1 n xss = take1 n (append2 (map3 (compose1 (take2 n)
-                           (`append3` (copy1 n 0))) xss)
-                                (copy2 n (copy1 n 0)))
-
-iterate1 :: (L (L Int) -> L (L Int)) 
-               -> L (L Int) -> L (L (L Int))
-iterate1 f x = C1 x (iterate1 f (f x))
-
--- versions of built in functions
-
--- take
-take1 :: Int -> L (L Int) -> L (L Int)
-take1 0 _ = N
-take1 _ N = N
---should be:take1 (n+1) (C1 x xs) = C1 x (take1 n xs)
-take1 n (C1 x xs) | n < 0     = error "Main.take1"
-                 | otherwise = C1 x (take1 (n-1) xs)
-
-take2 :: Int -> L Int -> L Int
-take2 0 _ = N
-take2 _ N = N
---should be:take2 (n+1) (C1 x xs) = C1 x (take2 n xs)
-take2 n (C1 x xs) | n < 0     = error "Main.take2"
-                 | otherwise = C1 x (take2 (n-1) xs)
-
-take3 :: Int -> L (L (L Int))
-             -> L (L (L Int))
-take3 0 _ = N
-take3 _ N = N
-take3 n (C1 x xs) = C1 x (take3 (n-1) xs)
-
--- init
-
-init1 :: L (L Int) -> L (L Int)
-init1 (C1 x N) = N
-init1 (C1 x xs) = C1 x (init1 xs)
-init1 N = error "init1 got a bad list"
-
-init2 :: L Int -> L Int
-init2 (C1 x N) = N
-init2 (C1 x xs) = C1 x (init2 xs)
-init2 N = error "init1 got a bad list"
-
--- tail
-
-tail1 :: L (L Int) -> L (L Int)
-tail1 (C1 _ xs) = xs
-tail1 N = error "tail1 got a bad list"
-
-tail2 :: L Int -> L Int
-tail2 (C1 _ xs) = xs
-tail2 N = error "tail2 got a bad list"
-
--- maps
-
-map1 :: (Tuple3 (L Int) (L Int) (L Int) -> L Int) -> 
-                L (Tuple3 (L Int) (L Int) (L Int))
-             -> L (L Int)
-map1 f N = N
-map1 f (C1 x xs) = C1 (f x) (map1 f xs)
-
-map2 :: (Int -> L Char) -> L Int -> L (L Char)
-map2 f N = N
-map2 f (C1 x xs) = C1 (f x) (map2 f xs)
-
-map3 :: (L Int -> L Int) -> L (L Int) -> L (L Int)
-map3 f N = N
-map3 f (C1 x xs) = C1 (f x) (map3 f xs)
-
-map4 :: (L Int -> L Char)
-         -> L (L Int) -> L (L Char)
-map4 f N = N
-map4 f (C1 x xs) = C1 (f x) (map4 f xs)
-
-map5 :: (Tuple2 (L Char) (L (L Int)) -> L Char) 
-          -> L (Tuple2 (L Char) (L (L Int)))
-          -> L (L Char)
-map5 f N = N
-map5 f (C1 x xs) = C1 (f x) (map5 f xs)
-
-map6 :: (Int -> L Char) -> L Int -> L (L Char)
-map6 f N = N
-map6 f (C1 x xs) = C1 (f x) (map6 f xs)
-
--- compose
-
-compose2 :: (L (L Char) -> L Char) 
-            -> (L Int -> L (L Char)) 
-            -> L Int -> L Char
-compose2 f g xs = f (g xs)
-
-compose1 :: (L Int -> L Int) 
-             -> (L Int -> L Int) -> L Int -> L Int
-compose1 f g xs = f (g xs)
-
--- concat
-
-concat1 :: L (L Char) -> L Char
-concat1 = foldr_1 append1 N
-
--- foldr
-
-foldr_1 :: (L Char -> L Char -> L Char) 
-            -> L Char -> L (L Char) -> L Char
-foldr_1 f a N = a
-foldr_1 f a (C1 x xs) = f x (foldr_1 f a xs)
-
--- appends
-
-append1 :: L Char -> L Char -> L Char
-append1 N ys = ys
-append1 (C1 x xs) ys = C1 x (append1 xs ys)
-
-append2 :: L (L Int) -> L (L Int) -> L (L Int)
-append2 N ys = ys
-append2 (C1 x xs) ys = C1 x (append2 xs ys)
-
-append3 :: L Int -> L Int -> L Int
-append3 N ys = ys
-append3 (C1 x xs) ys = C1 x (append3 xs ys)
-
--- zips
-
-pzip f (C1 x1 xs) (C1 y1 ys)
- = C1 (f x1 y1) (pzip f xs ys)
-pzip f _ _ = N
-
-
-zip1_ :: L (L Char)
-         -> L (L (L Int))
-         -> L (Tuple2 (L Char) (L (L Int)))
-zip1_ = pzip T2
-
-zip2_ :: L (L Int)
-         -> L (L Int)
-         -> L (Tuple2 (L Int) (L Int))
-zip2_ = pzip T2 
-
-zip3d :: L Int -> (Tuple2 (L Int) (L Int)) 
-            -> (Tuple3 (L Int) (L Int) (L Int))
-zip3d x (T2 y z) = T3 x y z
-
-zip3_ :: L (L Int) 
-         -> L (Tuple2 (L Int) (L Int))
-         -> L (Tuple3 (L Int) (L Int) (L Int))
-zip3_ = pzip zip3d
-
-zip4_ :: L Int
-         -> L Int 
-         -> L (Tuple2 Int Int)
-zip4_ = pzip T2
-
-zip5d :: Int -> (Tuple2 Int Int) -> (Tuple3 Int Int Int)
-zip5d x (T2 y z) = T3 x y z
-
-zip5_ :: L Int 
-         -> L (Tuple2 Int Int)
-         -> L (Tuple3 Int Int Int)
-zip5_ = pzip zip5d
-
-zip6_ :: L (Tuple3 Int Int Int)
-         -> L (Tuple3 Int Int Int)
-         -> L (Tuple2 (Tuple3 Int Int Int)
-                      (Tuple3 Int Int Int))
-zip6_ = pzip T2
-
-zip31 :: L (L Int) -> L (L Int) 
-         -> L (L Int)  
-         -> L (Tuple3 (L Int) (L Int) (L Int))
-zip31 as bs cs
-  = zip3_ as (zip2_ bs cs)
-
-zip32 :: L Int -> L Int -> L Int 
-          -> L (Tuple3 Int Int Int)
-zip32 as bs cs
-  = zip5_ as (zip4_ bs cs)
-
--- zipWith
-
-zipWith21 :: ((Tuple3 Int Int Int) 
-              -> (Tuple2 (Tuple3 Int Int Int) 
-                         (Tuple3 Int Int Int)) -> Int)
-              -> L (Tuple3 Int Int Int) 
-              -> L (Tuple2 (Tuple3 Int Int Int) 
-                           (Tuple3 Int Int Int))
-              -> L Int
-zipWith21 = pzip 
-
-zipWith31 :: ((Tuple3 Int Int Int) 
-              -> (Tuple3 Int Int Int) 
-              -> (Tuple3 Int Int Int) -> Int)
-               -> L (Tuple3 Int Int Int)
-               -> L (Tuple3 Int Int Int)
-               -> L (Tuple3 Int Int Int) -> L Int
-zipWith31 z as bs cs
- = zipWith21 z' as (zip6_ bs cs)
-   where z' a (T2 b c) = z a b c
diff --git a/ghc/tests/programs/life_space_leak/Makefile b/ghc/tests/programs/life_space_leak/Makefile
deleted file mode 100644 (file)
index cc14abc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_RUNTEST_OPTS += -prescript ./life.test
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/life_space_leak/life.test b/ghc/tests/programs/life_space_leak/life.test
deleted file mode 100644 (file)
index 41d7928..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /bin/sh
-#
-./life_space_leak | sum > /tmp/sum-real-$$
-
-cat > ./sum-expected-$$ << EOTHING
-02845  1350
-EOTHING
-
-if cmp -s ./sum-real-$$ ./sum-expected-$$ ; then
-    /bin/rm ./sum*$$
-    exit 0
-else
-    echo -n '*** sum I got: ' ;      cat ./sum-real-$$ 
-    echo -n '*** sum I expected: ' ; cat ./sum-expected-$$ 
-    /bin/rm ./sum*$$
-    exit 1
-fi
diff --git a/ghc/tests/programs/life_space_leak/life_space_leak.stdout b/ghc/tests/programs/life_space_leak/life_space_leak.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/programs/mk/boilerplate.mk b/ghc/tests/programs/mk/boilerplate.mk
deleted file mode 100644 (file)
index f4ded2a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#################################################################################
-#
-#                          ghc/tests/programs/mk/boilerplate.mk
-#
-#              Boilerplate Makefile for an fptools project
-#
-#################################################################################
-
-# Begin by slurping in the boilerplate from one level up, 
-# with standard TOP-mangling
-# Remember, TOP is the top level of the innermost level
-# ( FPTOOLS_TOP, which will be set while processing
-#   toplevel boilerplate, is the fptools top )
-
-TEST_PROGRAMS_TOP := $(TOP)
-TOP := $(TOP)/..
-include $(TOP)/mk/boilerplate.mk
-TOP:=$(TEST_PROGRAMS_TOP)
-
-
-# -----------------------------------------------------------------
-# Everything after this point
-# augments or overrides previously set variables.
-# (these files are optional, so `make' won't fret if it
-#  cannot get to them).
-# -----------------------------------------------------------------
-
-
-# Define TEST_PROG.  In ..../nofib/imaginary/exp3_8, PROG is exp3_8 by default.
-#
-TEST_PROG = $(notdir $(shell pwd))$(_way)
-
-# Eventually, have the binary purged
-CLEAN_FILES += $(TEST_PROG)
-
diff --git a/ghc/tests/programs/mk/target.mk b/ghc/tests/programs/mk/target.mk
deleted file mode 100644 (file)
index 5b10591..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#################################################################################
-#
-#                      target.mk
-#
-#              ghc/tests/programs standard target rules
-#
-#################################################################################
-
-# Link step
-$(TEST_PROG) : $(OBJS)
-       $(HC) $(HC_OPTS) $(LD_OPTS) $(OBJS) -o $(TEST_PROG)
-
-# Run test
-runtest : $(TEST_PROG)
-       $(RUNTEST) ./$< \
-         $(addprefix -i ,$(wildcard $(TEST_PROG).stdin)) \
-         $(addprefix -o1 ,$(wildcard $(TEST_PROG).stdout)) \
-         $(addprefix -o2 ,$(wildcard $(TEST_PROG).stderr)) \
-         $(RUNTEST_OPTS)
-
-# Include standard boilerplate
-# We do this at the end for cosmetic reasons: it means that the "normal-way"
-# runtests will precede the "other-way" recursive invocations of make
-
-include $(FPTOOLS_TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/north_array/Main.hs b/ghc/tests/programs/north_array/Main.hs
deleted file mode 100644 (file)
index 049d8bf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-import Array -- 1.3
-
-val1, val2 :: Array (Int,Int) Int
-val1 = array ((1,2), (2,1)) []
-val2 = array ((2,1), (1,2)) []
-val3 :: Array Integer Double
-val3 = array (4, -3) []
-
-main = print ((val1 == val1) && (val2 == val2) && (val3 == val3))
diff --git a/ghc/tests/programs/north_array/Makefile b/ghc/tests/programs/north_array/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/north_array/north_array.stdout b/ghc/tests/programs/north_array/north_array.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/programs/north_lias/Bits.lhs b/ghc/tests/programs/north_lias/Bits.lhs
deleted file mode 100644 (file)
index f0b2735..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-% Bits.lhs - useful extras for testing LIAS
-
-> module Bits (
->     Cont(..),
->     showit, showits, new_line, pad
->     ) where
-
-> type Cont  =  IO () --was: Dialogue
-
-> showit :: (Show a) => a -> Cont -> Cont
-> showit x c  =  putStr (show x) >> c
-
-> showits :: String -> Cont -> Cont
-> showits x c  =  putStr x >> c
-
-> new_line :: Cont -> Cont
-> new_line  =  showits "\n"
-
-> pad :: Int -> String -> String
-> pad n cs  =  take (n - length cs) (repeat ' ') ++ cs
diff --git a/ghc/tests/programs/north_lias/LIAS.lhs b/ghc/tests/programs/north_lias/LIAS.lhs
deleted file mode 100644 (file)
index b65b34b..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-% lias.lhs - Language Independent Arithmetic Standard in Haskell
-
-% @(#)LIAS.lhs 1.11 dated 92/12/07 at 15:01:23
-
-\documentstyle[a4wide,11pt,times]{article}
-
-\title{Haskell and the Language Independent Arithmetic Standard}
-\author{N D North\\
-       National Physical Laboratory\\
-       Teddington, TW11 0LW, UK.\\
-       {\tt ndn@seg.npl.co.uk}}
-
-% Some macros lifted from elsewhere to make this more standalone.
-\makeatletter
-% INLINE PROGRAM CODE
-%
-% \prog{foo} sets its argument in typewriter font.
-\def\prog#1{\ifmmode\mbox{\tt #1}\else{\tt #1}\fi}
-
-% NEWVERBATIM (from iso.sty)
-%
-% \newverbatim{foo} creates a new environment, foo, which behaves exactly
-% like the verbatim environment except that it is delimited by
-% \begin{foo} ... \end{foo}.
-% See the VERBATIM section of latex.tex for the inspiration behind this.
-%
-\def\newverbatim#1{\expandafter\def\csname #1\endcsname{%
-\@verbatim \frenchspacing\@vobeyspaces \csname @x#1verbatim\endcsname}
-\expandafter\let\csname end#1\endcsname=\endtrivlist
-\new@xverbatim{#1}}
-
-\begingroup \catcode `|=0 \catcode `[= 1
-\catcode`]=2 \catcode `\{=12 \catcode `\}=12
-\catcode`\\=12
-|gdef|new@xverbatim#1[
-|expandafter|def|csname @x#1verbatim|endcsname##1\end{#1}[##1|end[#1]]]
-|endgroup
-\makeatother
-
-\newverbatim{haskell}
-
-% \lias{id} sets an identifier in LIAS font (italic)
-\def\lias#1{\mbox{\it #1}}
-
-% \liass{id}{sub} sets the identifier in LIAS font, with the given
-%   subscript.
-\def\liass#1#2{\mbox{$\lias{#1}_{#2}$}}
-
-% \liasss{id}{sub}{sup} sets the identifier in LIAS font, with the
-%   subscript and superscript.
-\def\liasss#1#2#3{\mbox{$\lias{#1}_{#2}^{#3}$}}
-
-\begin{document}
-\maketitle
-
-\section*{Introduction}
-
-Haskell~\cite{hudak} is intended as an ``industrial strength'' 
-functional programming language and, in partial fulfillment of that
-aim, includes a rich set of numeric types and operators.
-However, the semantics of numeric operations are rather imprecise, so
-that determining the accuracy of numerical analysis programs is impossible
-in Haskell, limiting its applicability.
-The Language Independent Arithmetic Standard (LIAS)~\cite{lias}
-defines the behaviour of numerical operations precisely, yet flexibly
-enough that it is compatible with virtually all major arithmetic
-implementations including, for example IEEE~754~\cite{ieee754}.
-
-This report examines the extent to which Haskell and LIAS are compatible,
-provides a model implementation of LIAS in Haskell, and recommends a
-small addition to Haskell to improve compatibility.
-The intention is to improve the portability of programs, both between
-Haskell implementations and between Haskell and other LIAS-compliant
-languages.
-
-
-\section{Compatibility between Haskell and LIAS}
-
-\subsection{Denormalised numbers}
-\label{denorm}
-Parameters for LIAS are all available in Haskell, with the exception of
-\lias{denorm}, so few problems in principle.
-
-\subsection{Accuracy}
-Haskell implementations tend to use arithmetic of underlying system, so
-extent to which accuracy complies depends on that of underlying system.
-
-\subsection{Notification}
-\label{notification}
-Semantics of overflow etc are ``undefined'' so demanding notification is
-impossible.
-{\em Check what systems actually do.}
-
-\subsection{Integers}
-Haskell provides a class \prog{Integral}, whose members are integer
-types.
-In particular, \prog{Integer} is the type of arbitrary-precision
-integers, and \prog{Int} is a type of fixed-precision integers with
-range at least $[-2^{29} + 1, 2^{29} - 1]$ and closed under
-negation.
-Implementations are at liberty provide other integer types.
-
-Both \prog{Integer} and \prog{Int} should comply with LIAS, with the
-exception of notifications, as described in Section~\ref{notification}.
-
-\subsection{Floating point}
-Haskell provides a class \prog{RealFloat}, whose members are real (as
-opposed to complex) floating point numbers.
-In particular, \prog{Float} and \prog{Double} are supposed to
-be at least equal in range and precision to IEEE single and double
-precision respectively.
-Implementations are at liberty provide other floating point types.
-
-Both \prog{Float} and \prog{Double} should comply with LIAS, with the
-exceptions of notifications, as described in Section~\ref{notification},
-and \lias{denorm}, as described in Section~\ref{denorm}.
-
-
-\section{LIAS in Haskell}
-
-This section provides a model implementation of LIAS in Haskell.
-Many of the required parameters and functions already exist, in which
-case this section just describes how to obtain them in Haskell.
-Others are not part of the standard language, and code is given to
-implement these.
-
-The section begins with the module header giving the module name and
-exported identifiers.
-
-\begin{haskell}
-
-> module LIAS (
->     emax, emin, denorm,
->     fmax, fminN, fmin, epsilon,
->     signf, succf, predf, ulpf, truncf, roundf, fractpart
->     ) where
-
-\end{haskell}
-
-
-\subsection{Integers}
-The LIAS parameters are: \lias{minint}, \lias{maxint} and \lias{bounded}.
-Whether an integer type is bounded or not is part of the language
-definition, so this parameter is not available to the user in Haskell.
-The minimum and maximum parameters are available for the \prog{Int}
-type, and are accessed as follows:
-\begin{tabbing}
-\lias{minint} \= \prog{minInt} \kill
-\lias{minint} \> \prog{minInt} \\
-\lias{maxint} \> \prog{maxInt} (\prog{= -minInt})
-\end{tabbing}
-Note that the Haskell Report (Section 6.8.2) states that
-\prog{maxInt = -minInt}, which is compatible with LIAS.
-
-All the integer operations required by LIAS are available in Haskell,
-and are accessed as described in the table below:
-\begin{tabbing}
-mmmmmmmmmmmmmmm \= mmmmmmmmmm \= \kill
-\liass{add}{I}     \>  \prog{x + y} \\
-\liass{sub}{I}     \>  \prog{x - y} \\
-\liass{mul}{I}     \>  \prog{x * y} \\
-\liass{div}{I}     \>  \prog{x `div` y} (round to $-\infty$) \\
-                   \>  \prog{x `quot` y} (round to 0) \\
-\liass{rem}{I}     \>  \prog{x `mod` y} (round to $-\infty$) \\
-                   \>  \prog{x `rem` y} (round to 0) \\
-\liass{mod}{I}     \>  \prog{x `mod` y} (this is \liasss{mod}{I}{1}) \\
-\liass{neg}{I}     \>  \prog{negate x} \\
-\liass{abs}{I}     \>  \prog{abs x} \\
-\liass{eq}{I}      \>  \prog{x == y} \\
-\liass{neq}{I}     \>  \prog{x /= y} \\
-\liass{lss}{I}     \>  \prog{x < y} \\
-\liass{leq}{I}     \>  \prog{x <= y} \\
-\liass{gtr}{I}     \>  \prog{x > y} \\
-\liass{geq}{I}     \>  \prog{x >= y}
-\end{tabbing}
-The table shows that Haskell provides integer division with rounding
-towards $-\infty$ and with rounding towards 0.
-
-\subsection{Floating point}
-Haskell provides all the parameters for floating point numbers, except
-for \lias{denorm}.
-The available parameters are determined as follows:
-\begin{tabbing}
-\lias{emax}  \=  fst (floatRange x) \= \prog{Int} \kill
-\lias{r}     \>  floatRadix x       \> \prog{Integer} \\
-\lias{p}     \>  floatDigits x      \> \prog{Int} \\
-\lias{emax}  \>  fst (floatRange x) \> \prog{Int} \\
-\lias{emin}  \>  snd (floatRange x) \> \prog{Int}
-\end{tabbing}
-In the table, \prog{x} is an expression of the type for which the
-parameter is required.
-For example, \prog{floatRadix (1.0 :: Float)} would give the radix of
-the \prog{Float} type.
-The alternative to this mechanism is to provide a separate set of
-identifiers for each floating point type.
-
-For convenience, we provide Haskell identifiers for \lias{emax} and
-\lias{emin}.
-\begin{haskell}
-
-> emax, emin :: (RealFloat a) => a -> Int
-> emax x  =  snd (floatRange x)
-> emin x  =  fst (floatRange x)
-
-\end{haskell}
-
-The derived constants require some coding as follows:
-\begin{haskell}
-
-> fmax, fminN, fminD, fmin, epsilon :: (RealFloat a) => a -> a
-
-> fmax x  =  encodeFloat (floatRadix x ^ floatDigits x - 1)
->                        (emax x - floatDigits x)
-
-> fminN x  =  encodeFloat 1 (emin x - 1)
-
-> fminD x  =  encodeFloat 1 (emin x - floatDigits x)
-
-> fmin x  =  if denorm x then fminD x else fminN x
-
-> epsilon x  =  encodeFloat 1 (1 - floatDigits x)
-
-\end{haskell}
-
-The definition of \lias{denorm} assumes that the implementation gives
-zero on underflow.
-The Haskell Report leaves behaviour on underflow undefined, which
-makes this definition less than satisfactory and suggests that
-\prog{denorm} should be part of the language.
-\begin{haskell}
-
-> denorm :: (RealFloat a) => a -> Bool
-> denorm x  =  fminN x / fromInteger (floatRadix x) /= 0
-
-\end{haskell}
-
-The floating point operations are listed below, with the syntax for
-invoking them.
-The operations marked ``$\dagger$'' are not part of Haskell and are
-defined later in the LIAS module.
-\begin{tabbing}
-mmmmmmmmmmmmmmm \= mmmmmmmmmm \= \kill
-\liass{add}{F}       \>  \prog{x + y} \\
-\liass{sub}{F}       \>  \prog{x - y} \\
-\liass{mul}{F}       \>  \prog{x * y} \\
-\liass{div}{F}       \>  \prog{x / y} \\
-\liass{neg}{F}       \>  \prog{negate x} \\
-\liass{abs}{F}       \>  \prog{abs x} \\
-\liass{sqrt}{F}      \>  \prog{sqrt x} \\
-\liass{sign}{F}      \>  \prog{signf x} \> $\dagger$ \\
-\liass{exponent}{F}  \>  \prog{exponent x} \\
-\liass{fraction}{F}  \>  \prog{significand x} \\
-\liass{scale}{F}     \>  \prog{scaleFloat n x} \\
-\liass{succ}{F}      \>  \prog{succf x} \> $\dagger$ \\
-\liass{pred}{F}      \>  \prog{predf x} \> $\dagger$ \\
-\liass{ulp}{F}       \>  \prog{ulpf x} \> $\dagger$ \\
-\liass{trunc}{F}     \>  \prog{truncf x n} \> $\dagger$ \\
-\liass{round}{F}     \>  \prog{roundf x n} \> $\dagger$ \\
-\liass{intpart}{F}   \>  \prog{truncate x} \\
-\liass{fractpart}{F} \>  \prog{snd (properFraction x)} \\
-\liass{eq}{F}        \>  \prog{x == y} \\
-\liass{neq}{F}       \>  \prog{x /= y} \\
-\liass{lss}{F}       \>  \prog{x < y} \\
-\liass{leq}{F}       \>  \prog{x <= y} \\
-\liass{gtr}{F}       \>  \prog{x > y} \\
-\liass{geq}{F}       \>  \prog{x >= y}
-\end{tabbing}
-
-The code below provides definitions of the operations marked ``$\dagger$''
-and, for convenience, a definition of \liass{fractpart}{F}.
-
-\begin{haskell}
-
-> signf :: (RealFloat a) => a -> a
-> signf x | x >= 0  =  1
->         | x <  0  =  -1
-
-\end{haskell}
-
-\prog{floatRadixf} is a useful utility function which gives the floating
-point radix as a member of the class \prog{RealFloat}.
-\begin{haskell}
-
-> floatRadixf :: (RealFloat a) => a -> a
-> floatRadixf x  =  fromInteger (floatRadix x)
-
-\end{haskell}
-
-\begin{haskell}
-
-> succf, predf :: (RealFloat a) => a -> a
-> succf x | x == 0          =  fmin x
->         | x == -(fmin x)  =  0
->         | True            =  encodeFloat (m + 1) n
->                              where
->                              (m, n)  =  decodeFloat x
-
-> predf x  =  - succf (- x)
-
-\end{haskell}
-
-\begin{haskell}
-
-> ulpf :: (RealFloat a) => a -> a
-> ulpf x | x == 0  =  error "ulpf of 0"
->        | True    =  res (encodeFloat 1 (expf x - floatDigits x))
->                     where
->                     res 0  =  error "ulpf underflow"
->                     res x  =  x
-
-\end{haskell}
-
-\begin{haskell}
-
-> floorf :: (RealFloat a) => a -> a
-> floorf x  =  fromInteger (floor x)
-
-> expf :: (RealFloat a) => a -> Int
-> expf x  =  if abs x >= fminN x then exponent x else emin x
-
-> truncf :: (RealFloat a) => a -> Int -> a
-> truncf x n | n <= 0          =  error "truncf with n <= 0"
->            | j >= eemin - p  =  encodeFloat (i `quot` (r ^ (p - n)))
->                                             (j + p - n)
->            | True            =  encodeFloat (i `quot` (r ^ (eemin - j - n)))
->                                             (eemin -n)
->                                 where
->                                 (i, j)  =  decodeFloat x
->                                 eemin   =  emin x
->                                 r       =  floatRadix x
->                                 p       =  floatDigits x
-
-\end{haskell}
-
-\begin{haskell}
-
-> roundf ::  (RealFloat a) => a -> Int -> a
-> roundf x n | n <= 0              =  error "roundf with n <= 0"
->            | n >= floatDigits x  =  x
->            | True                =  signf x * floorf (abs x / y + 0.5) * y
->                                     where
->                                     y  =  encodeFloat 1 (expf x - n)
-
-\end{haskell}
-
-\begin{haskell}
-
-> fractpart :: (RealFloat a) => a -> a
-> fractpart x  =  snd (properFraction x)
-
-\end{haskell}
-
-\section{Recommendations}
-
-
-\begin{thebibliography}{9}
-\bibitem{hudak} P Hudak, S Peyton Jones, P Wadler et al.
-{\it Report on the Functional Programming Language Haskell, Version 1.1.}
-Department of Computing Science, University of Glasgow, August 1991.
-\bibitem{ieee754} IEEE Standard for Binary Floating-Point Arithmetic.
-    ANSI/IEEE Std 754-1985, 1985.
-\bibitem{lias} M~Payne, C~Schaffert, and B~A~Wichmann.
-{\em The Language Compatible Arithmetic Standard}.
- January 1990. ACM SIGPLAN Notices, Vol 25,
-  pp59-86, and ACM SIGNUM Newsletter, Vol 25, No 1, pp2-43.
-\end{thebibliography}
-\end{document}
diff --git a/ghc/tests/programs/north_lias/Main.lhs b/ghc/tests/programs/north_lias/Main.lhs
deleted file mode 100644 (file)
index 46c2387..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-This version includes checks to see if `extended precision' is
-used in expressions, but does not determine the characteristics.
-
-
-> module Main (main) where
-
-> import Bits
-> import LIAS
-
-> version = "@(#)TestLIAS.lhs  1.2 dated 92/07/31 at 08:53:52"
-> int_name = "Int"
-> flp_name = "Float"
-> int_val :: Int
-> int_val = 1
-> flp_val :: Float
-> flp_val = 1
-
-> maxInt, minInt :: Int
-> maxInt = maxBound
-> 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 ())
->          where
->          flp_parms  =  makeFloatParms flp_val
-
-Data type for representing parameters of a RealFloat.
-AN element has the form
-(MkFloatParms r p emin emax denorm fmax fmin fminN epsilon)
-
-> data (RealFloat a) =>
->      FloatParms a = MkFloatParms Integer Int Int Int Bool a a a a
-
-> makeFloatParms :: (RealFloat a) => a -> FloatParms a
-> makeFloatParms x
->     =  MkFloatParms (floatRadix x) (floatDigits x) (emin x) (emax x)
->                     (denorm x) (fmax x) (fmin x) (fminN x) (epsilon x)
-
-> initial_checks :: (RealFloat a) => FloatParms a -> Cont -> Cont
-> initial_checks (MkFloatParms r p eemin eemax ddenorm ffmax ffmin ffminN eps)
->     =   -- text is output here to form the basis of a report.
->        new_line .
->        showits "LIAS Model Implementation " . showits version . new_line .
->        new_line .
->        showits "Test results" .  new_line .
->        showits "Computer: " .  new_line .
->        showits "Compiler: " .   new_line .
->        showits "Options used: " . new_line .
->        showits "Program modifications (with reasons): " . new_line .
->        showits "Date tested: " . new_line .
->        showits "Tested by: " . new_line .
->        new_line .
->        showits "Integer type (int) name " . showits int_name . new_line .
->        showits "Floating point type (flp) name " . showits flp_name .
->        new_line . new_line .
->        showits "Parameter values" . new_line .
->        showits "        minint,         maxint" .
->        new_line .
->        showits (pad 15 (show minInt)) . showits (pad 15 (show maxInt)) .
->        new_line .
->        showits " r,  p,    emin,   emax, denorm" .
->        new_line .
->        showits (pad 3 (show r)) .
->        showits (pad 4 (show p)) .
->        showits (pad 8 (show eemin)) . showits (pad 8 (show eemax)) .
->        (if ddenorm then
->           showits "  true"
->        else
->           showits "  false") .
->        new_line .
->        showits "fmax    " . showit ffmax . new_line .
->        showits "fmin    " . showit ffmin . new_line .
->        showits "fminn   " . showit ffminN . new_line .
->        showits "epsilon " . showit eps . new_line .
->        (if (r `mod` 2 /= 0) || (r < 0) then
->           showits "floatRadix value is not positive even integer" .
->           new_line
->        else id) .
->        (if fromIntegral (p -1) * log (fromInteger r)
->            < log 1.0e6 then
->           --  the accuracy of the log function used here is not critical
->           showits "precision less than six decimal floatDigits" .
->           new_line
->        else id) .
->        (if (eemin -1) >= -2*(fromInteger r -1) then
->           showits "Exponent minimum too large" .
->           new_line
->        else id) .
->        (if eemax <= 2*(fromInteger r -1) then
->           showits "Exponent maximum not large enough" .
->           new_line
->        else id) .
->        (if (-2 > eemin -1+eemax) ||
->           (eemin -1+eemax > 2) then
->           showits "Exponent range not roughly symmetric" .
->           new_line
->        else id) .
->        new_line
-
-> equal_int :: (Integral a) => (a, a, Int) -> Cont -> Cont
-> equal_int (i,j, test_number)
->     | i /= j  =  showits "Integer operation check number " .
->                  showit test_number . showits " fails with " .
->                  showit i . showits " ". showit j . new_line
->     | 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    =  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   =  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
-> check_exact_squares (MkFloatParms r p eemin eemax ddenorm
->                                   ffmax ffmin ffminN eps)
->     =  foldr (.) id (map foo list)
->        where
->        list  =  takeWhile in_range (iterate mul 10)
->        mul y  =  fromInteger (truncate (1.2 * y)) :: Float
->        in_range y  =  exponent y < p `div` 2
->        foo y  =  if y /= sqrt (fromInteger (truncate (y * y)))
->                  then showits "Square root not exact for a square" .
->                       showit y . new_line
->                  else id
-
-> flp :: (Integral a, RealFloat b) => a -> b
-> flp  =  fromIntegral
-
-> int_part :: (RealFloat a) => a -> a
-> int_part x  =  flp (truncate x)
-
-> main_identities :: (RealFloat a) => FloatParms a -> Cont -> Cont
-> main_identities flp_parms@(MkFloatParms r p eemin eemax ddenorm
->                                         ffmax ffmin ffminN eps)
->     =  equal_int(-(-maxInt), maxInt, 1) .
->        equal_int(2+2, 2*2, 2) .
->        equal_int(minInt `rem` (-1), 0, 3) .
->        equal_flp(1.0+1.0, 2.0, 4) .
->        equal_flp(ffmax-1.0, ffmax, 5) .
->        equal_flp(ffmax/2.0+ffmax/2.0, ffmax, 6) .
->        equal_flp(ffmax/ffmax, 1.0, 7) .
->        equal_flp((ffmax/flp(r))*flp(r), ffmax, 8) .
->        equal_flp(ffmin/ffmin, 1.0, 9) .
->        equal_flp(-(-1.1), 1.1, 10) .
->        equal_flp(abs(-ffmax), ffmax, 11) .
->        equal_flp(abs(-ffminN), ffminN, 12) .
->        equal_flp(signf(-ffmin), -1.0, 13) .
->        equal_flp(signf(0.0), 1.0, 14) .
->        equal_flp(signf(ffmin), 1.0, 15) .
->        -- NDN Tests 16-25 changed as they were incorrect
->        equal_int(exponent 1.0, 1, 16) .
->        equal_int(exponent 1.6, 1, 17) .
->        equal_int(exponent(flp(r)), 2, 18) .
->        equal_int(exponent(ffmax), eemax, 19) .
->        equal_int(exponent(ffminN), eemin, 20) .
->        (if ddenorm then
->           equal_int(exponent(ffmin), eemin-p+1, 21)
->        else id) .
->        equal_flp(significand(0.9), 0.9, 22) .
->        equal_flp(significand(1.0), scaleFloat (-1) 1, 23) .
->        -- NDN This fails on hbc. I'm not sure  if the test is correct.
->        equal_flp(significand(ffmax), predf(1), 24) .
->        -- equal_flp(significand(-ffmin), -1.0, 25) .
->        equal_flp(scaleFloat 1 1.1, 1.1*flp(r), 26) .
->        equal_flp(scaleFloat (-11) (scaleFloat 11 1.7), 1.7, 27) .
->        equal_flp(succf(1.0), 1.0+eps, 28) .
->        -- NDN Test 29 changed as it was incorrect
->        equal_flp(succf(significand(ffmax)), 1.0, 29) .
->        equal_flp(succf(-ffmin), 0.0, 30) .
->        equal_flp(succf(0.0), ffmin, 31) .
->        equal_flp(predf(succf(ffmin)), ffmin, 32) .
->        test_true(predf(flp(r)) < flp(r), 33) .
->        test_true(predf 1.1 < 1.1, 34) .
->        equal_flp(predf(succf 1.2), 1.2, 35) .
->        equal_flp(ulpf(1.0), eps, 36) .
->        equal_flp(flp(r)*ulpf(predf 1.0), eps, 37) .
->        equal_flp(succf(predf(ffmax)), ffmax, 38) .
->        equal_flp(truncf (1.0 + 3.0*eps) p, 1.0 + 3.0*eps, 39) .
->        equal_flp(truncf (1.0 + 3.0*eps) (p-1), 1.0 + 2.0*eps, 40) .
->        equal_flp(truncf (1.0 + 3.0*eps) (p-2), 1.0, 41) .
->        equal_flp(roundf (1.0 + 3.0*eps) p, 1.0 + 3.0*eps, 42) .
->        equal_flp(roundf (1.0 + 3.0*eps) (p-1), 1.0 + 4.0*eps, 43) .
->        equal_flp(roundf (1.0 + 3.0*eps) (p-2), 1.0 + 4.0*eps, 44) .
->        equal_flp(int_part 1.0, 1.0, 45) .
->        equal_flp(int_part(succf 1.0), 1.0, 46) .
->        equal_flp(int_part(predf 2.0), 1.0, 47) .
->        equal_flp(int_part(-ffmin), 0.0, 48) .
->        equal_flp(int_part(ffmin), 0.0, 49) .
->        equal_flp(fractpart(ffmax), 0.0, 50) .
->        equal_flp(fractpart(ffmin), ffmin, 51) .
->        equal_flp(fractpart(succf 1.0), eps, 52) .
->        equal_flp(fractpart(flp(r)), 0.0, 53) .
->        equal_flp(fractpart(-ffmin), -ffmin, 54) .
->        test_true(ffmin > 0.0, 55) .
->        test_true(-ffmax < -ffmin, 56) .
->        check_exact_squares flp_parms .
->        -- equal_int(int(predf 3.5), 3, 57) .
->        -- equal_int(int(succf 3.5), 4, 58) .
->        -- equal_int(int(predf -3.5), -4, 59) .
->        -- equal_flp(flp(int(-5.0)), -5.0, 60) .
->        -- equal_flp(flp(int(-5.6)), -6.0, 61) .
->        -- equal_flp(scaleFloat (eemax+1) (ffminN),
->        --        flp(r) ^^ integer(eemax+eemin), 62) .
->        -- equal_flp(scaleFloat(ffmax, eemin-2),
->        --        significand(ffmax) *
->        --          flp(r) ^^ integer(eemax+eemin-3), 63) .
->        -- check_conversions .
->        id
-
-> notification_checks :: (RealFloat a) => FloatParms a -> Cont -> Cont
-> notification_checks (MkFloatParms r p eemin eemax ddenorm
->                                   ffmax ffmin ffminN eps)
->     =  showits "Test  condition tested notify  result(ce/ne/other/no)" .
->        new_line .
->        let my_maxint = maxInt in
->            showits " 1   addi overflow pos  overf " .
->            showit (my_maxint + 1) .
->            new_line .
->            showits " 2   addi overflow neg  overf " .
->            (let tempi1 = -minInt ; tempi2 = -1 in
->            showit (tempi1 + tempi2)) .
->            new_line .
->            showits " 3   subi overflow neg  overf " .
->            showit (minInt - 1) .
->            new_line .
->            showits " 4   subi overflow pos  overf " .
->            (let tempi1 = maxInt ; tempi2 = -1 in
->            showit (tempi1 - tempi2)) .
->            new_line .
->            showits " 5   muli overflow pos  overf " .
->            (let tempi1 = my_maxint `div` 2 + 1 ; tempi2 = 2 in
->            showit (tempi1 * tempi2)) .
->            new_line .
->            showits " 6   muli overflow neg  overf " .
->            (let tempi1 = -2 ; tempi2 = my_maxint `div` 2 + 2 in
->            showit (tempi1 * tempi2)) .
->            new_line .
->            showits " 7   int divide by zero zerod " .
->            (let tempi1 = 1 ; tempi2 = my_maxint - maxInt in
->            showit (tempi1 `div` tempi2)) .
->            new_line .
->            showits " 8   int divide by zero zerod " .
->            showit (1 `div` (my_maxint-maxInt)) .
->            new_line .
->            showits " 9   remi divide by 0   zerod " .
->            showit (1 `rem` (my_maxint - maxInt)) .
->            new_line .
->            showits "10   modi divide by 0   zerod " .
->            (let tempi1 = 1 ; tempi2 = my_maxint - maxInt in
->            showit (tempi1 `mod` tempi2)) .
->            new_line .
->            showits "11  divide by zero      zerod " .
->            showit (1 `div` (my_maxint-maxInt)) .
->            new_line .
->            showits "12  divide by zero      zerod " .
->            showit (1 `div` (my_maxint-maxInt)) .
->            new_line .
->            -- showits "13   addf overflow      overf " .
->            -- showit (ffmax + flp(r) ** integer(eemax-p+1)) .
->            -- new_line .
->            -- showits "14   subf overflow      overf " .
->            -- showit (-ffmax - flp(r) ** integer(eemax-p+1)) .
->            -- new_line .
->            showits "15   mulf overflow      overf " .
->            showit (ffmax * 1.001) .
->            new_line .
->            showits "16   divf overflow      overf " .
->            showit (ffmax / 0.7) .
->            new_line .
->            showits "17   divf by zero       zerod " .
->            (let tempf1 = flp(my_maxint-maxInt) in
->            showit (1.0 / tempf1)) .
->            new_line .
->            showits "18   sqrt of tiny neg   undef " .
->            showit (sqrt(-ffmin)) .
->            new_line .
->            showits "19   exponentf(zero)    undef " .
->            (let tempf1 = flp(my_maxint-maxInt) in
->            showit (exponent(tempf1))) .
->            new_line .
->            showits "20   succf of fmax      overf " .
->            showit (succf(ffmax)) .
->            new_line .
->            showits "21   predf of -fmax     overf " .
->            showit (predf(-ffmax)) .
->            new_line .
->            showits "22   ulpf(zero)         undef " .
->            showit (ulpf(0.0)) .
->            new_line .
->            showits "23   roundf to 0 p undef " .
->            showit (roundf 1.0 0) .
->            new_line .
->            showits "24   roundf  overflow   overf " .
->            showit (roundf ffmax 2) .
->            -- new_line .
->            -- showits "25   trunc  overflow    overf " .
->            -- (if flp(maxInt) < max_mantissa then
->            --    showit (int(flp(maxInt)+1.0))
->            -- else
->            --    showit (int(succf(flp(maxInt))))) .
->            -- new_line .
->            -- showits "26   round overflow     overf " .
->            -- (if flp(maxInt) < max_mantissa then
->            --    showit (int(flp(minInt)-1.0))
->            -- else
->            --    showit (int(predf(flp(minInt)))))
->            id
-
diff --git a/ghc/tests/programs/north_lias/Makefile b/ghc/tests/programs/north_lias/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/north_lias/north_lias.stdout b/ghc/tests/programs/north_lias/north_lias.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/programs/okeefe_neural/Main.hs b/ghc/tests/programs/okeefe_neural/Main.hs
deleted file mode 100644 (file)
index bb28545..0000000
+++ /dev/null
@@ -1,1534 +0,0 @@
-{-# OPTIONS -package lang #-}
-
-module Main(main) where
-
-import Int( Num(fromInt) )
-
-newtype RNG_State = RNG_State (Int, Int, Int)
-
-new_random i = RNG_State (i `mod` 30269, i `mod` 30307, i `mod` 30323)
-
-next_unit_random (RNG_State (a,b,c)) =
-  (r, RNG_State (a1,b1,c1))
-  where a1 = (a * 171) `mod` 30269
-        b1 = (b * 172) `mod` 30307
-        c1 = (c * 170) `mod` 30323
-        t  = fromInt a1/30269.0 +
-             fromInt b1/30307.0 +
-             fromInt c1/30323.0
-        r  = t - fromInt (truncate t)
-
-next_random_bool p s =
-  (r < p, s1)
-  where (r,s1) = next_unit_random s
-
-next_random_list f n s =
-  loop [] n s
-  where loop ps 0 s = (ps, s)
-        loop ps m s = loop (p:ps) (m-1) s1
-                      where (p,s1) = f s
-
-rpart []     _ _ ps qs s = ((ps, qs), s)
-rpart (x:xs) n d ps qs s =
-    if   d*r < n
-    then rpart xs (n-1.0) (d-1.0) (x:ps) qs s1
-    else rpart xs    n    (d-1.0) ps (x:qs) s1
-    where (r, s1) = next_unit_random s
-
-random_permutation xs s =
-  rperm xs (length xs) [] s
-  where rperm []      0 ps s = (ps, s)
-        rperm [x1]    1 ps s = ((x1:ps), s)
-        rperm [x1,x2] 2 ps s =
-          if b then (x1:x2:ps, s1) else (x2:x1:ps, s1)
-          where (b, s1) = next_random_bool 0.5 s
-        rperm xs d ps s =
-          let n = d `div` 2
-              ((ys, zs), s1) = rpart xs (fromInt n) (fromInt d) [] [] s
-              (zps, s2) = rperm zs (d-n) ps s1
-          in rperm ys n zps s2
-          
-minit m n g =
-  outer (m-1) []
-  where outer (-1) xss = xss
-        outer m xss = outer (m-1) (inner (n-1) [] : xss)
-                      where inner (-1) xs = xs
-                            inner n    xs = inner (n-1) (g m n : xs)
-
-vadd [] [] = []
-vadd (x:xs) (y:ys) = x+y : vadd xs ys
-
-madd [] [] = []
-madd (xs:xss) (ys:yss) = vadd xs ys : madd xss yss
-
-vaddx [] [] _ = []
-vaddx (x:xs) (y:ys) a = x+y*a : vaddx xs ys a
-
-vsub [] [] = []
-vsub (x:xs) (y:ys) = x-y : vsub xs ys
-
-vmulx [] _ = []
-vmulx (x:xs) a = x*a : vmulx xs a
-
-mmulx [] _ = []
-mmulx (xs:xss) a = vmulx xs a : mmulx xss a
-
-vdist xs ys =
-  loop xs ys 0.0
-  where loop []     []     s = s
-        loop (x:xs) (y:ys) s = loop xs ys (s+d*d)
-                               where d = x-y
-
-vdot xs ys =
-  loop xs ys 0.0
-  where loop []     []     s = s
-        loop (x:xs) (y:ys) s = loop xs ys (s+x*y)
-
-vmmul []     []     = []
-vmmul (x:xs) (r:rs) =
-  loop xs rs (vmulx r x)
-  where loop []     []     ws = ws
-        loop (x:xs) (r:rs) ws = loop xs rs (vaddx ws r x)
-
-vupdate []     _  []     _ = []
-vupdate (r:rs) xs (y:ys) c = vaddx r xs (y*c) : vupdate rs xs ys c
-
-vscale [] [] = []
-vscale (x:xs) (y:ys) = x*y*(1.0-y) : vscale xs ys
-
-sigmoid x = 1.0/(1.0 + exp (0.0-x))
-
-mrand m n l u s =
-  next_random_list (next_random_list f n) m s
-  where f s = (l + (u-l)*r, s1)
-        (r, s1) = next_unit_random s
-
-train pats i_h_wt i_h_ch h_o_wt h_o_ch epochs s =
-  loop pats1 i_h_ch h_o_ch 0.0
-  where
-    (pats1, s1) = random_permutation pats s
-    loop [] i_h_ch h_o_ch e0
-      | e <  criterion = ((e,0,i_h_wt,h_o_wt), s1)
-      | epochs <= 0    = ((e,1,i_h_wt,h_o_wt), s1)
-      | True =
-        train pats (madd i_h_wt i_h_ch) (mmulx i_h_ch momentum)
-                   (madd h_o_wt h_o_ch) (mmulx h_o_ch momentum) (epochs-1) s1
-      where e = e0/(fromInt (length pats) * fromInt (length h_o_wt))
-    loop ((in_pat, out_pat):ps) i_h_ch h_o_ch e =
-        loop ps (vupdate i_h_ch in_act  (tail hid_err) rate)
-                (vupdate h_o_ch hid_act out_err        rate)
-                (e + vdist out_pat out_act)
-        where
-          in_act  = 1.0:in_pat
-          hid_act = 1.0:map (\w -> sigmoid (vdot in_act  w)) i_h_wt
-          out_act =     map (\w -> sigmoid (vdot hid_act w)) h_o_wt
-          out_err = vscale (vsub out_pat out_act) out_act
-          hid_err = vscale (vmmul out_err h_o_wt) hid_act
-
-main = putStrLn (show ans)
-    where (in1,out1)   = head patterns
-          nin          = length in1
-          nhid         = nin
-          nout         = length out1
-          s0           = new_random 353721
-          (i_h_wt, s1) = mrand nhid (nin +1) (0.0-0.3) 0.3 s0
-          i_h_ch       = minit nhid (nin +1) (\i j -> 0.0)
-          (h_o_wt, s2) = mrand nout (nhid+1) (0.0-0.3) 0.3 s1
-          h_o_ch       = minit nout (nhid+1) (\i j -> 0.0)
-          (ans, _)     = train patterns i_h_wt i_h_ch h_o_wt h_o_ch epochs s2
-
-rate = 0.05
-
-momentum = 0.9
-
-criterion = 0.01
-
---epochs = 100
-
---patterns = [([1.0,0.0],[1.0]),
---            ([0.0,1.0],[1.0]),
---            ([0.0,0.0],[0.0]),
---            ([1.0,1.0],[0.0])]
-
-epochs = 90
-
-patterns =
- [([0.955809, 0.095706, 0.269204, 0.824671, 0.448012, 0.722709,
-    0.327677, 0.148595, 0.063143, 0.007019, 0.135166, 0.928800, 0.298593,
-    0.931150, 0.711234, 0.432630, 0.913450, 0.545061, 0.651082, 0.692984,
-    0.371532, 0.940641, 0.202521, 0.064852, 0.965941, 0.523637, 0.914884,
-    0.159062, 0.031648, 0.866848, 0.516526, 0.684317, 0.152135, 0.923734,
-    0.177435, 0.228339, 0.766503, 0.885159, 0.812220, 0.510208, 0.082949,
-    0.459792, 0.580920, 0.134190, 0.705741, 0.859523, 0.243171, 0.377117,
-    0.880551, 0.271218, 0.521989, 0.039888, 0.765862, 0.096347, 0.133702,
-    0.895138, 0.635548, 0.738853, 0.640126, 0.761162, 0.419599, 0.223579,
-    0.779260, 0.734947, 0.488937, 0.426038, 0.430799, 0.613788, 0.090487,
-    0.194372, 0.872494, 0.038179, 0.339183, 0.145482, 0.483932, 0.386425,
-    0.172430, 0.416150, 0.553850, 0.952422, 0.174200, 0.150365, 0.347056,
-    0.438063, 0.674154, 0.004456, 0.087527, 0.291269, 0.028474, 0.450819,
-    0.013642, 0.920896, 0.488815, 0.161840, 0.162084, 0.319803, 0.564989,
-    0.255287, 0.036348, 0.127750, 0.288461, 0.681906, 0.816370, 0.664449,
-    0.282235, 0.537126, 0.265328, 0.964965, 0.043672, 0.577898, 0.990173,
-    0.348186, 0.346446, 0.725700, 0.211463, 0.549821, 0.167943, 0.837062,
-    0.700003, 0.950896, 0.048341, 0.523087, 0.034761, 0.933439, 0.287393,
-    0.299081, 0.840144, 0.894284, 0.885464, 0.845302, 0.157476, 0.948210,
-    0.635060, 0.660421, 0.607990, 0.852107, 0.268868, 0.888760, 0.502518,
-    0.180609, 0.070650, 0.602802, 0.555223, 0.285440, 0.855495, 0.321665,
-    0.356700, 0.068758, 0.725059, 0.047487, 0.263344, 0.102695, 0.504959,
-    0.600452, 0.858974, 0.125217, 0.269662, 0.533982, 0.644642, 0.444838,
-    0.861721, 0.411145, 0.113712, 0.284371, 0.811182, 0.723930, 0.867702,
-    0.595538, 0.561968, 0.235847, 0.929167, 0.375408, 0.410901, 0.030122,
-    0.908536, 0.016297, 0.065859, 0.043977, 0.180425, 0.719810, 0.229469,
-    0.370403, 0.726096, 0.506699, 0.114353, 0.108921, 0.797998, 0.853908,
-    0.296274, 0.046419, 0.063143, 0.489364, 0.811396, 0.949217, 0.380902,
-    0.376751, 0.903958, 0.747703, 0.872127, 0.420392, 0.330729, 0.395032,
-    0.435102, 0.922697, 0.628071, 0.680502, 0.365703, 0.324259, 0.248299,
-    0.779656, 0.236610, 0.258950, 0.971496, 0.821680, 0.692892, 0.454146,
-    0.498856, 0.255776, 0.319895, 0.508377, 0.634022, 0.297617, 0.239479,
-    0.076937, 0.958342, 0.237007, 0.591144, 0.497055, 0.406842, 0.888241,
-    0.554064, 0.383587, 0.650624],
-   [0.234896, 0.423061, 0.263443, 0.123426,
-    0.794525, 0.243195, 0.176474, 0.282455, 0.620580, 0.126517, 0.858114,
-    0.150592, 0.351949, 0.153976, 0.480803, 0.272537, 0.062543, 0.525171,
-    0.896010, 0.872203, 0.431661, 0.702341, 0.385838, 0.951113, 0.058039,
-    0.563982, 0.981357, 0.319594, 0.190779, 0.159156, 0.182152, 0.912154,
-    0.046355, 0.322471, 0.190853, 0.146977, 0.556987, 0.432033, 0.849777,
-    0.397618, 0.800925, 0.817440, 0.103982, 0.417800, 0.982832, 0.123455,
-    0.075878, 0.578246, 0.575774, 0.662847, 0.121769, 0.310270, 0.451505,
-    0.871721, 0.263607, 0.963375, 0.198854, 0.249971, 0.273863, 0.592648,
-    0.133579, 0.119994, 0.679855, 0.626287, 0.174323, 0.164256, 0.841121,
-    0.752313, 0.501021, 0.569367, 0.804985, 0.639864, 0.272153, 0.055158,
-    0.281015, 0.090302, 0.648710, 0.526850, 0.121161, 0.620315, 0.383709,
-    0.487889, 0.739381, 0.609108, 0.181023, 0.419480, 0.453455, 0.658062,
-    0.054643, 0.832708, 0.255309, 0.744293, 0.909823, 0.895573, 0.934952,
-    0.332162, 0.514298, 0.129617, 0.568588, 0.459891, 0.512871, 0.708730,
-    0.244905, 0.504490, 0.408360, 0.724549, 0.263859, 0.126921, 0.917366,
-    0.128843, 0.761606, 0.295994, 0.485532, 0.364426, 0.209157, 0.331918,
-    0.923155, 0.832404, 0.344705, 0.992287, 0.797664, 0.513933, 0.197295,
-    0.898075, 0.321190, 0.766076, 0.896433, 0.510118, 0.555644, 0.731407,
-    0.336166, 0.961858, 0.108792, 0.274650, 0.447974, 0.322401, 0.519439,
-    0.127972, 0.743228, 0.095587, 0.442358, 0.065578, 0.427339, 0.867874,
-    0.115209, 0.391970, 0.222726, 0.427568, 0.562064, 0.073965, 0.500635,
-    0.103580, 0.193423, 0.463678, 0.352990, 0.872354, 0.266832, 0.066053,
-    0.567679, 0.465254, 0.715300, 0.890676, 0.962122, 0.823967, 0.085568,
-    0.195321, 0.730473, 0.142718, 0.589829, 0.954951, 0.190184, 0.350517,
-    0.593301, 0.582699, 0.060864, 0.072237, 0.305630, 0.417032, 0.670941,
-    0.430787, 0.876681, 0.244844, 0.060370, 0.274557, 0.598552, 0.194049,
-    0.661775, 0.251685, 0.143953, 0.228740, 0.268005, 0.353289, 0.234517,
-    0.866899, 0.382406, 0.826395, 0.551468, 0.910383, 0.677785, 0.487901,
-    0.408431, 0.465832, 0.226357, 0.897554, 0.717515, 0.630160, 0.664560,
-    0.807919, 0.184460, 0.314334, 0.122805, 0.073591, 0.617129, 0.220999,
-    0.050125, 0.388057, 0.262980, 0.898668, 0.103295, 0.798561, 0.110919,
-    0.451100, 0.852923, 0.263962, 0.169917, 0.891759, 0.902670, 0.074144,
-    0.746980, 0.667262, 0.158418, 0.192804, 0.468950]),
-
-  ([0.964202, 0.066500, 0.226936, 0.692160, 0.655660, 0.898740, 0.524033,
-    0.579821, 0.196814, 0.235450, 0.473617, 0.647664, 0.698416, 0.424787,
-    0.767571, 0.187048, 0.029542, 0.048921, 0.508835, 0.956023, 0.030000,
-    0.973724, 0.787866, 0.432691, 0.833460, 0.532731, 0.948271, 0.219459,
-    0.583239, 0.502701, 0.073183, 0.503311, 0.322489, 0.025788, 0.723991,
-    0.979400, 0.338694, 0.135716, 0.461501, 0.143620, 0.745018, 0.043428,
-    0.182409, 0.360729, 0.578967, 0.839015, 0.800714, 0.613727, 0.199988,
-    0.765618, 0.306711, 0.341594, 0.267281, 0.722098, 0.733726, 0.270852,
-    0.078555, 0.150273, 0.064547, 0.647755, 0.551744, 0.963408, 0.608631,
-    0.776727, 0.630360, 0.671590, 0.880856, 0.272225, 0.393933, 0.361126,
-    0.513932, 0.929319, 0.654927, 0.683248, 0.235145, 0.619770, 0.322947,
-    0.509049, 0.438612, 0.119938, 0.318155, 0.406720, 0.384625, 0.276345,
-    0.314371, 0.597186, 0.557329, 0.415448, 0.093722, 0.544572, 0.211493,
-    0.403851, 0.794000, 0.837703, 0.640553, 0.265084, 0.829402, 0.518754,
-    0.195807, 0.759392, 0.766900, 0.515610, 0.589740, 0.832545, 0.938505,
-    0.333811, 0.512986, 0.340007, 0.071291, 0.664602, 0.097476, 0.953063,
-    0.716330, 0.065249, 0.256539, 0.652181, 0.757408, 0.367809, 0.432722,
-    0.715354, 0.781518, 0.972747, 0.785791, 0.606159, 0.591449, 0.683523,
-    0.350780, 0.668813, 0.642537, 0.238472, 0.198431, 0.035859, 0.684408,
-    0.196112, 0.128605, 0.655354, 0.388958, 0.330393, 0.928220, 0.843074,
-    0.246040, 0.191717, 0.724906, 0.266549, 0.507981, 0.990509, 0.467574,
-    0.767113, 0.463881, 0.458998, 0.065279, 0.925687, 0.825770, 0.848079,
-    0.215400, 0.779382, 0.506851, 0.714957, 0.452528, 0.594592, 0.573901,
-    0.658132, 0.449507, 0.102847, 0.654500, 0.655812, 0.101474, 0.105991,
-    0.580767, 0.164403, 0.424482, 0.856655, 0.550645, 0.632588, 0.799554,
-    0.120334, 0.587909, 0.587939, 0.594195, 0.325510, 0.582446, 0.952055,
-    0.691580, 0.707785, 0.691580, 0.740196, 0.959563, 0.854366, 0.384228,
-    0.802393, 0.190100, 0.555376, 0.908933, 0.761345, 0.541063, 0.367840,
-    0.466506, 0.804132, 0.010590, 0.799005, 0.869655, 0.483566, 0.976623,
-    0.514817, 0.969665, 0.185705, 0.331492, 0.480422, 0.632160, 0.419385,
-    0.244026, 0.438002, 0.543016, 0.584490, 0.079379, 0.629322, 0.625263,
-    0.374889, 0.508713, 0.168279, 0.348827, 0.472396, 0.339213, 0.970336,
-    0.714225, 0.688009, 0.096377, 0.644551, 0.190954, 0.206671, 0.889401,
-    0.255043, 0.392529],
-   [ 0.347267, 0.395278, 0.312221, 0.271034, 0.606466,
-    0.281430, 0.206116, 0.433894, 0.811608, 0.149699, 0.930589, 0.131576,
-    0.606860, 0.168244, 0.510042, 0.318780, 0.017318, 0.390086, 0.887702,
-    0.856325, 0.410205, 0.731879, 0.429107, 0.951366, 0.090044, 0.460008,
-    0.982247, 0.365122, 0.274204, 0.137115, 0.153039, 0.951211, 0.065363,
-    0.265502, 0.089683, 0.080594, 0.583010, 0.702345, 0.741734, 0.195394,
-    0.694880, 0.634725, 0.110399, 0.510145, 0.984661, 0.095715, 0.060022,
-    0.603920, 0.771879, 0.818352, 0.082082, 0.618599, 0.573476, 0.893264,
-    0.229809, 0.985823, 0.317123, 0.178742, 0.319886, 0.742494, 0.070001,
-    0.097983, 0.799138, 0.627735, 0.234819, 0.174270, 0.832352, 0.747531,
-    0.647704, 0.705891, 0.773991, 0.515965, 0.364954, 0.068576, 0.245708,
-    0.052415, 0.660207, 0.516471, 0.116974, 0.402301, 0.668778, 0.478975,
-    0.759934, 0.675118, 0.254879, 0.420252, 0.301185, 0.501663, 0.106245,
-    0.885773, 0.233874, 0.852706, 0.920644, 0.903723, 0.918905, 0.397496,
-    0.508660, 0.350752, 0.525033, 0.525978, 0.501128, 0.591062, 0.327965,
-    0.501709, 0.383894, 0.685330, 0.354505, 0.031559, 0.873401, 0.127268,
-    0.798431, 0.353377, 0.460709, 0.275419, 0.208795, 0.362425, 0.876697,
-    0.927418, 0.263693, 0.985030, 0.725649, 0.371198, 0.304175, 0.897437,
-    0.436677, 0.633838, 0.883890, 0.471352, 0.563572, 0.763623, 0.364169,
-    0.958443, 0.068425, 0.260482, 0.313543, 0.394317, 0.443647, 0.121875,
-    0.780465, 0.211723, 0.268817, 0.067533, 0.660574, 0.821465, 0.084727,
-    0.520244, 0.288125, 0.675550, 0.580184, 0.116487, 0.701141, 0.082960,
-    0.262049, 0.478233, 0.452062, 0.902427, 0.540173, 0.098391, 0.338498,
-    0.422226, 0.634723, 0.927242, 0.954212, 0.803277, 0.096551, 0.200374,
-    0.689030, 0.291707, 0.580938, 0.939620, 0.151359, 0.232785, 0.503464,
-    0.695066, 0.052623, 0.060584, 0.175948, 0.382867, 0.590377, 0.137340,
-    0.854693, 0.227445, 0.042913, 0.300106, 0.598812, 0.232287, 0.684412,
-    0.365377, 0.094614, 0.097589, 0.241374, 0.555737, 0.246608, 0.794405,
-    0.244149, 0.733437, 0.394148, 0.893992, 0.702754, 0.580066, 0.313107,
-    0.633119, 0.305982, 0.934299, 0.642923, 0.551348, 0.624630, 0.790857,
-    0.331221, 0.474498, 0.189123, 0.110964, 0.484088, 0.151825, 0.119752,
-    0.369902, 0.186865, 0.815287, 0.074211, 0.710128, 0.272505, 0.428258,
-    0.913809, 0.370850, 0.101142, 0.907882, 0.813830, 0.169027, 0.828513,
-    0.535021, 0.157700, 0.154209, 0.657740] ),
-
-  ([0.091800, 0.590747, 0.357860, 0.768944, 0.705832, 0.861995, 0.219123,
-    0.097995, 0.202826, 0.055971, 0.621387, 0.056795, 0.750175, 0.527818,
-    0.164159, 0.654408, 0.634266, 0.384625, 0.464583, 0.807123, 0.907865,
-    0.206702, 0.164922, 0.837733, 0.734306, 0.770074, 0.152898, 0.179693,
-    0.085452, 0.302530, 0.901242, 0.067660, 0.949400, 0.304209, 0.332316,
-    0.495651, 0.703909, 0.463515, 0.115024, 0.223945, 0.812586, 0.700278,
-    0.798822, 0.116245, 0.499100, 0.867183, 0.692465, 0.587878, 0.556658,
-    0.140294, 0.892911, 0.446852, 0.947905, 0.630696, 0.370830, 0.908597,
-    0.352580, 0.247810, 0.519211, 0.065737, 0.318644, 0.345988, 0.070711,
-    0.594501, 0.172735, 0.185614, 0.790979, 0.978179, 0.347209, 0.739830,
-    0.852931, 0.029786, 0.279061, 0.878292, 0.299570, 0.995025, 0.537614,
-    0.459029, 0.500534, 0.015748, 0.336619, 0.359905, 0.009095, 0.237007,
-    0.087802, 0.980621, 0.726005, 0.337168, 0.151524, 0.246712, 0.775872,
-    0.763451, 0.440596, 0.646962, 0.003052, 0.453749, 0.034516, 0.334819,
-    0.492813, 0.326060, 0.459212, 0.825983, 0.023896, 0.316568, 0.789178,
-    0.322672, 0.859310, 0.248024, 0.228217, 0.196203, 0.781091, 0.309366,
-    0.324992, 0.658956, 0.775445, 0.427870, 0.479324, 0.157048, 0.274606,
-    0.315165, 0.895993, 0.515091, 0.361614, 0.468337, 0.642048, 0.363872,
-    0.844020, 0.907407, 0.963775, 0.882931, 0.603198, 0.930235, 0.519639,
-    0.388195, 0.125248, 0.666524, 0.685812, 0.797388, 0.619831, 0.711478,
-    0.589740, 0.502792, 0.632923, 0.621326, 0.028840, 0.684194, 0.560228,
-    0.550920, 0.930204, 0.591937, 0.967132, 0.815455, 0.507126, 0.832453,
-    0.121433, 0.657216, 0.769890, 0.186468, 0.645528, 0.998627, 0.545610,
-    0.992279, 0.693594, 0.462813, 0.664510, 0.624012, 0.560564, 0.443159,
-    0.468307, 0.097537, 0.129246, 0.502792, 0.297189, 0.334117, 0.061190,
-    0.885464, 0.111545, 0.113559, 0.138157, 0.418867, 0.904599, 0.248360,
-    0.660176, 0.592181, 0.062349, 0.009522, 0.306528, 0.088137, 0.327311,
-    0.335643, 0.365917, 0.551897, 0.521531, 0.856471, 0.741783, 0.877163,
-    0.686026, 0.262154, 0.639637, 0.791314, 0.792169, 0.049593, 0.341929,
-    0.020661, 0.681936, 0.176702, 0.977325, 0.816828, 0.392651, 0.656301,
-    0.690176, 0.125736, 0.522843, 0.620746, 0.116733, 0.180731, 0.795282,
-    0.888485, 0.574419, 0.800439, 0.473739, 0.563616, 0.869655, 0.172918,
-    0.789270, 0.700369, 0.131840, 0.407849, 0.032655, 0.562670, 0.578539,
-    0.636982, 0.469131],
-   [0.250121, 0.483413, 0.264094, 0.307941, 0.733994,
-    0.238909, 0.172450, 0.289615, 0.639522, 0.156406, 0.927321, 0.115653,
-    0.439196, 0.138059, 0.430463, 0.210567, 0.043311, 0.427593, 0.713422,
-    0.874737, 0.349128, 0.641711, 0.307643, 0.960792, 0.057629, 0.274816,
-    0.959588, 0.398889, 0.271323, 0.171029, 0.242094, 0.978259, 0.096858,
-    0.335654, 0.139114, 0.149906, 0.430454, 0.483910, 0.630219, 0.285243,
-    0.744639, 0.707501, 0.128506, 0.505621, 0.986704, 0.086747, 0.267839,
-    0.638377, 0.606427, 0.850217, 0.108584, 0.368790, 0.415063, 0.828986,
-    0.366711, 0.960958, 0.215415, 0.253284, 0.268513, 0.436681, 0.111406,
-    0.103739, 0.653758, 0.511406, 0.359645, 0.142705, 0.886096, 0.729033,
-    0.570775, 0.475699, 0.781399, 0.624880, 0.453394, 0.105905, 0.258093,
-    0.043573, 0.695208, 0.381172, 0.131100, 0.470651, 0.494271, 0.329024,
-    0.677485, 0.566830, 0.452777, 0.283240, 0.187764, 0.614069, 0.110264,
-    0.810169, 0.297650, 0.804280, 0.875188, 0.876858, 0.950973, 0.347310,
-    0.568015, 0.203545, 0.636385, 0.402638, 0.561527, 0.704415, 0.335657,
-    0.416779, 0.371755, 0.656713, 0.245263, 0.069130, 0.858867, 0.117609,
-    0.814266, 0.357809, 0.368650, 0.195525, 0.253112, 0.273989, 0.897546,
-    0.737842, 0.188547, 0.991165, 0.751005, 0.552062, 0.267549, 0.903292,
-    0.309227, 0.766666, 0.885213, 0.570977, 0.382676, 0.564119, 0.461571,
-    0.938216, 0.127708, 0.189827, 0.276506, 0.377828, 0.537514, 0.231975,
-    0.575255, 0.211339, 0.194267, 0.110436, 0.330972, 0.823506, 0.087909,
-    0.405803, 0.398364, 0.585681, 0.676848, 0.126466, 0.459028, 0.068184,
-    0.229350, 0.508934, 0.295492, 0.876380, 0.290811, 0.034688, 0.401911,
-    0.337465, 0.767958, 0.852948, 0.981002, 0.763970, 0.070562, 0.312852,
-    0.691511, 0.244069, 0.497265, 0.912701, 0.104435, 0.312821, 0.663720,
-    0.688728, 0.072052, 0.040471, 0.113943, 0.208670, 0.557001, 0.255511,
-    0.744639, 0.166425, 0.049652, 0.223302, 0.492090, 0.229562, 0.573484,
-    0.590362, 0.206928, 0.294928, 0.183751, 0.270976, 0.310734, 0.917243,
-    0.200381, 0.691783, 0.425492, 0.882956, 0.635164, 0.618051, 0.253056,
-    0.505014, 0.434698, 0.910271, 0.737867, 0.553463, 0.588869, 0.748615,
-    0.244402, 0.282370, 0.257965, 0.119861, 0.620997, 0.124454, 0.112210,
-    0.383214, 0.245615, 0.853594, 0.145247, 0.776892, 0.166819, 0.548061,
-    0.802385, 0.142570, 0.098268, 0.887335, 0.906549, 0.087140, 0.690883,
-    0.731714, 0.239845, 0.207338, 0.304361] ),
-
-  ([0.511246, 0.618427, 0.945036, 0.731468, 0.048402, 0.198859, 0.911771,
-    0.848018, 0.052889, 0.803369, 0.046754, 0.561571, 0.734703, 0.006043,
-    0.897824, 0.095798, 0.342509, 0.988769, 0.114628, 0.024812, 0.153844,
-    0.927488, 0.248695, 0.402722, 0.780084, 0.654073, 0.570818, 0.809198,
-    0.316813, 0.499557, 0.687429, 0.467269, 0.371319, 0.725608, 0.237007,
-    0.089572, 0.498337, 0.449721, 0.447890, 0.609638, 0.075076, 0.471175,
-    0.838435, 0.453658, 0.147130, 0.903470, 0.841304, 0.510117, 0.276162,
-    0.019532, 0.632557, 0.452528, 0.921018, 0.216407, 0.947417, 0.572161,
-    0.382977, 0.504929, 0.163121, 0.776605, 0.847072, 0.431288, 0.431196,
-    0.910825, 0.550035, 0.836573, 0.139134, 0.056368, 0.606738, 0.360027,
-    0.484054, 0.965941, 0.525834, 0.093295, 0.438520, 0.288186, 0.946165,
-    0.290719, 0.890316, 0.740532, 0.625294, 0.543016, 0.237251, 0.885006,
-    0.211066, 0.319712, 0.218513, 0.663961, 0.827631, 0.287240, 0.263222,
-    0.352092, 0.007172, 0.308573, 0.138035, 0.080264, 0.998840, 0.530656,
-    0.174993, 0.588122, 0.985260, 0.466170, 0.860317, 0.361461, 0.239326,
-    0.475600, 0.065981, 0.810541, 0.751152, 0.555773, 0.705252, 0.645741,
-    0.356883, 0.841639, 0.093051, 0.106632, 0.901242, 0.726859, 0.792779,
-    0.200873, 0.463912, 0.010041, 0.230628, 0.609210, 0.182226, 0.972442,
-    0.859035, 0.412427, 0.700308, 0.793481, 0.149602, 0.297342, 0.776666,
-    0.210761, 0.198004, 0.397015, 0.081118, 0.830256, 0.221076, 0.422315,
-    0.712790, 0.992767, 0.727836, 0.240638, 0.469253, 0.604083, 0.645497,
-    0.558153, 0.399884, 0.833644, 0.182073, 0.861904, 0.672903, 0.088626,
-    0.706290, 0.277627, 0.288400, 0.170141, 0.426405, 0.500320, 0.668447,
-    0.016816, 0.149052, 0.452895, 0.655019, 0.942717, 0.899747, 0.829737,
-    0.947935, 0.775628, 0.685324, 0.181372, 0.512894, 0.802149, 0.180853,
-    0.696341, 0.991943, 0.925413, 0.621357, 0.336467, 0.646809, 0.942015,
-    0.679678, 0.482131, 0.867000, 0.344493, 0.612293, 0.743370, 0.773278,
-    0.555376, 0.453688, 0.093204, 0.948363, 0.998871, 0.540880, 0.979797,
-    0.825709, 0.917112, 0.149327, 0.572924, 0.767724, 0.336436, 0.521439,
-    0.801843, 0.364666, 0.090609, 0.068575, 0.340251, 0.985717, 0.306742,
-    0.028718, 0.194739, 0.112888, 0.260231, 0.360057, 0.053102, 0.489731,
-    0.005432, 0.151982, 0.048616, 0.615528, 0.687857, 0.335643, 0.096561,
-    0.616504, 0.943907, 0.973693, 0.459304, 0.025239, 0.295297, 0.911924,
-    0.696127, 0.499680],
-   [0.372363, 0.313207, 0.276106, 0.279324, 0.820741,
-    0.205839, 0.328552, 0.399419, 0.774962, 0.215105, 0.853020, 0.226282,
-    0.571785, 0.173005, 0.436688, 0.238419, 0.019348, 0.460500, 0.847289,
-    0.878880, 0.228861, 0.695937, 0.239922, 0.971454, 0.036638, 0.461105,
-    0.972190, 0.455536, 0.254031, 0.210429, 0.335951, 0.912823, 0.057891,
-    0.222266, 0.176725, 0.124067, 0.581808, 0.736316, 0.652302, 0.248547,
-    0.704722, 0.716806, 0.087022, 0.515832, 0.973141, 0.095332, 0.098511,
-    0.549793, 0.810595, 0.823819, 0.070312, 0.561088, 0.364184, 0.852806,
-    0.259421, 0.961891, 0.135451, 0.210059, 0.366696, 0.553164, 0.115941,
-    0.097627, 0.862905, 0.499057, 0.464813, 0.240171, 0.903088, 0.744335,
-    0.613677, 0.796010, 0.774554, 0.611191, 0.427484, 0.043273, 0.272693,
-    0.091735, 0.626866, 0.598557, 0.314647, 0.606310, 0.660126, 0.401762,
-    0.782298, 0.587858, 0.140014, 0.598725, 0.358832, 0.437350, 0.217892,
-    0.874923, 0.189696, 0.806172, 0.853777, 0.849070, 0.872760, 0.442148,
-    0.530084, 0.230444, 0.608441, 0.564128, 0.408068, 0.732274, 0.456723,
-    0.421654, 0.596509, 0.737912, 0.407249, 0.036761, 0.856259, 0.132400,
-    0.832515, 0.371338, 0.573567, 0.425011, 0.247448, 0.522633, 0.942719,
-    0.907415, 0.228517, 0.986824, 0.848198, 0.284663, 0.271171, 0.915369,
-    0.547810, 0.745923, 0.881908, 0.504883, 0.428851, 0.661564, 0.298134,
-    0.974143, 0.105652, 0.342785, 0.412873, 0.440510, 0.350132, 0.211733,
-    0.810887, 0.132996, 0.237006, 0.051134, 0.598440, 0.778627, 0.090580,
-    0.634583, 0.339945, 0.511342, 0.660187, 0.184938, 0.614215, 0.064794,
-    0.270805, 0.456836, 0.536392, 0.940503, 0.295905, 0.129487, 0.447837,
-    0.526879, 0.729304, 0.910458, 0.972890, 0.761394, 0.249717, 0.346499,
-    0.779652, 0.299671, 0.729285, 0.934442, 0.192382, 0.281585, 0.555343,
-    0.601925, 0.071142, 0.063458, 0.207701, 0.356162, 0.631022, 0.165572,
-    0.760330, 0.131365, 0.021257, 0.262862, 0.640069, 0.250123, 0.642715,
-    0.204412, 0.149900, 0.125013, 0.202026, 0.475843, 0.260838, 0.853036,
-    0.272570, 0.625518, 0.496405, 0.928861, 0.852380, 0.627557, 0.282402,
-    0.475618, 0.273318, 0.944023, 0.592831, 0.608529, 0.662162, 0.839359,
-    0.161527, 0.473947, 0.200285, 0.107977, 0.738683, 0.100967, 0.083270,
-    0.366952, 0.199829, 0.879304, 0.068496, 0.810832, 0.152595, 0.411953,
-    0.930309, 0.339304, 0.144649, 0.935868, 0.843733, 0.110269, 0.859667,
-    0.592107, 0.216361, 0.175124, 0.385298] ),
-
-  ([0.943571, 0.073397, 0.654073, 0.012421, 0.871151, 0.176305, 0.656026,
-    0.542619, 0.655629, 0.156926, 0.542405, 0.800378, 0.902829, 0.078860,
-    0.722526, 0.016022, 0.705557, 0.810053, 0.891964, 0.325236, 0.033692,
-    0.248329, 0.572222, 0.780511, 0.462539, 0.377392, 0.129032, 0.521500,
-    0.144963, 0.933775, 0.425214, 0.134312, 0.434156, 0.966491, 0.764672,
-    0.731895, 0.062868, 0.070772, 0.283547, 0.786004, 0.285745, 0.576525,
-    0.445143, 0.242653, 0.890561, 0.473159, 0.794336, 0.951994, 0.485031,
-    0.352306, 0.628040, 0.943632, 0.965209, 0.149022, 0.738151, 0.579333,
-    0.571642, 0.963286, 0.882778, 0.113498, 0.439985, 0.742515, 0.142247,
-    0.693381, 0.051637, 0.107181, 0.816492, 0.329875, 0.491256, 0.099826,
-    0.018921, 0.870327, 0.917081, 0.139225, 0.624866, 0.504471, 0.150365,
-    0.961089, 0.728721, 0.834925, 0.790429, 0.825892, 0.267861, 0.043214,
-    0.760887, 0.776238, 0.968657, 0.183111, 0.694266, 0.223640, 0.270516,
-    0.131596, 0.060457, 0.646962, 0.385601, 0.229835, 0.445692, 0.683218,
-    0.148625, 0.144536, 0.887997, 0.392621, 0.814661, 0.981414, 0.675863,
-    0.978240, 0.459761, 0.181738, 0.515610, 0.742088, 0.142125, 0.233406,
-    0.474563, 0.559130, 0.478713, 0.727805, 0.605640, 0.649739, 0.794183,
-    0.793298, 0.659810, 0.932279, 0.498611, 0.437361, 0.792779, 0.737205,
-    0.849818, 0.827906, 0.672170, 0.163610, 0.756523, 0.045228, 0.891018,
-    0.859615, 0.779260, 0.336314, 0.094516, 0.507736, 0.984222, 0.401685,
-    0.725700, 0.796930, 0.807337, 0.747398, 0.796442, 0.161718, 0.584033,
-    0.632344, 0.590472, 0.070559, 0.901578, 0.642506, 0.703818, 0.144047,
-    0.429609, 0.423597, 0.329569, 0.884640, 0.385693, 0.603046, 0.193243,
-    0.298593, 0.291696, 0.432661, 0.044496, 0.192328, 0.177679, 0.183294,
-    0.111820, 0.423322, 0.888943, 0.822748, 0.426374, 0.887570, 0.653188,
-    0.007904, 0.421369, 0.524461, 0.563555, 0.923124, 0.712760, 0.120975,
-    0.133824, 0.994690, 0.468154, 0.195196, 0.582293, 0.014374, 0.269692,
-    0.741783, 0.000336, 0.702048, 0.877377, 0.119633, 0.062075, 0.238655,
-    0.798944, 0.863826, 0.431074, 0.801965, 0.072726, 0.701865, 0.520829,
-    0.634602, 0.169713, 0.557176, 0.765007, 0.677358, 0.420850, 0.819544,
-    0.053285, 0.297617, 0.876003, 0.664510, 0.490219, 0.144963, 0.000885,
-    0.703085, 0.131718, 0.665090, 0.118290, 0.742485, 0.857143, 0.302835,
-    0.999176, 0.939543, 0.031739, 0.926389, 0.510941, 0.128086, 0.116794,
-    0.503006, 0.728446],
-   [0.351222, 0.278591, 0.283138, 0.122628, 0.763695,
-    0.308245, 0.231191, 0.327072, 0.669178, 0.237753, 0.933039, 0.161955,
-    0.527918, 0.162872, 0.276862, 0.338759, 0.013447, 0.500357, 0.758393,
-    0.890117, 0.286404, 0.614922, 0.471315, 0.955186, 0.089488, 0.366257,
-    0.978455, 0.616409, 0.306164, 0.160409, 0.159356, 0.978049, 0.097219,
-    0.344033, 0.186289, 0.116885, 0.728207, 0.627205, 0.714860, 0.208562,
-    0.727131, 0.828565, 0.158439, 0.466829, 0.971232, 0.121343, 0.161650,
-    0.661611, 0.618124, 0.841358, 0.046860, 0.452121, 0.341010, 0.865947,
-    0.152254, 0.966536, 0.213056, 0.304055, 0.335217, 0.523691, 0.087881,
-    0.064809, 0.795485, 0.452027, 0.317999, 0.116250, 0.898968, 0.803284,
-    0.544429, 0.616822, 0.841354, 0.611205, 0.371687, 0.033215, 0.256717,
-    0.064430, 0.627021, 0.627504, 0.191870, 0.526017, 0.501716, 0.287086,
-    0.784309, 0.622639, 0.183675, 0.468426, 0.212266, 0.355046, 0.108475,
-    0.889961, 0.275599, 0.872669, 0.942839, 0.877238, 0.920511, 0.392231,
-    0.563621, 0.144615, 0.633087, 0.349760, 0.505776, 0.827315, 0.389287,
-    0.540466, 0.506721, 0.612825, 0.373225, 0.041362, 0.902200, 0.092558,
-    0.739404, 0.272585, 0.388132, 0.298448, 0.321686, 0.374587, 0.935410,
-    0.898459, 0.192054, 0.991002, 0.725184, 0.382465, 0.319403, 0.858241,
-    0.597066, 0.710496, 0.882099, 0.531761, 0.456813, 0.845161, 0.499102,
-    0.969086, 0.106525, 0.332143, 0.326130, 0.364720, 0.654414, 0.171305,
-    0.596477, 0.110804, 0.178501, 0.057372, 0.576870, 0.814650, 0.061785,
-    0.478826, 0.367008, 0.320375, 0.650806, 0.181174, 0.468965, 0.037388,
-    0.270917, 0.385496, 0.362564, 0.833518, 0.339478, 0.046834, 0.462328,
-    0.608506, 0.601353, 0.894656, 0.955409, 0.723455, 0.147482, 0.237962,
-    0.735452, 0.206749, 0.757557, 0.933967, 0.214645, 0.375817, 0.574143,
-    0.817046, 0.041647, 0.069035, 0.130061, 0.486610, 0.681156, 0.481305,
-    0.869591, 0.204328, 0.104596, 0.343107, 0.564518, 0.275226, 0.611070,
-    0.249097, 0.084293, 0.199324, 0.278827, 0.330948, 0.206980, 0.806283,
-    0.256766, 0.588891, 0.445696, 0.906602, 0.709172, 0.561304, 0.262893,
-    0.710889, 0.551355, 0.953251, 0.692670, 0.754259, 0.498363, 0.792302,
-    0.159659, 0.299479, 0.167739, 0.071807, 0.487328, 0.132015, 0.081683,
-    0.272535, 0.177688, 0.930233, 0.106226, 0.619949, 0.120131, 0.334437,
-    0.914901, 0.213753, 0.088482, 0.942437, 0.858771, 0.095054, 0.726020,
-    0.678025, 0.174585, 0.250140, 0.419005] ),
-
-  ([0.601306, 0.883114, 0.558214, 0.413923, 0.130222, 0.384136, 0.449324,
-    0.272683, 0.500229, 0.345470, 0.984649, 0.890042, 0.345927, 0.126225,
-    0.419813, 0.756462, 0.566454, 0.909177, 0.362194, 0.286752, 0.101840,
-    0.275582, 0.614643, 0.239540, 0.352245, 0.821070, 0.490219, 0.443525,
-    0.020661, 0.968566, 0.628559, 0.236457, 0.661061, 0.635151, 0.845820,
-    0.523545, 0.712516, 0.908383, 0.048616, 0.860897, 0.301248, 0.388562,
-    0.744163, 0.470901, 0.591296, 0.353648, 0.176855, 0.595355, 0.965209,
-    0.402234, 0.623585, 0.092685, 0.816248, 0.731590, 0.877987, 0.685690,
-    0.233009, 0.706626, 0.455763, 0.765831, 0.358135, 0.876186, 0.551866,
-    0.160466, 0.701590, 0.092624, 0.280770, 0.769280, 0.190893, 0.891629,
-    0.231391, 0.475784, 0.238411, 0.787347, 0.867458, 0.240974, 0.607837,
-    0.640522, 0.805078, 0.784509, 0.360515, 0.754662, 0.498337, 0.759972,
-    0.663198, 0.857143, 0.364544, 0.830958, 0.738365, 0.621326, 0.879940,
-    0.553301, 0.738395, 0.885830, 0.677480, 0.470473, 0.824793, 0.227515,
-    0.177862, 0.328135, 0.233619, 0.044069, 0.784997, 0.813868, 0.608844,
-    0.802728, 0.177038, 0.728782, 0.384106, 0.611042, 0.724540, 0.996948,
-    0.494827, 0.766533, 0.566729, 0.418714, 0.201544, 0.440626, 0.377331,
-    0.575030, 0.305979, 0.154241, 0.350841, 0.787622, 0.540605, 0.199896,
-    0.441176, 0.542680, 0.413648, 0.667959, 0.382977, 0.283364, 0.290170,
-    0.232246, 0.528031, 0.977935, 0.990936, 0.352031, 0.026643, 0.369121,
-    0.689871, 0.045808, 0.386700, 0.311991, 0.391797, 0.894131, 0.940397,
-    0.105319, 0.771477, 0.426649, 0.250557, 0.223823, 0.654927, 0.550768,
-    0.987945, 0.356761, 0.925199, 0.177038, 0.309977, 0.159551, 0.132481,
-    0.698355, 0.273354, 0.624531, 0.591235, 0.478805, 0.310312, 0.477004,
-    0.244270, 0.008667, 0.301309, 0.503098, 0.076144, 0.881558, 0.274270,
-    0.215339, 0.356426, 0.249977, 0.262093, 0.762444, 0.494186, 0.915983,
-    0.349712, 0.489517, 0.785394, 0.712516, 0.441755, 0.054872, 0.833766,
-    0.332133, 0.782250, 0.509812, 0.926908, 0.259377, 0.757439, 0.247291,
-    0.148778, 0.962706, 0.013001, 0.226386, 0.509751, 0.002441, 0.417310,
-    0.378002, 0.875271, 0.211280, 0.901120, 0.598773, 0.974853, 0.602954,
-    0.705924, 0.238899, 0.272378, 0.165716, 0.071505, 0.490493, 0.978912,
-    0.197302, 0.894253, 0.582476, 0.989257, 0.336314, 0.387463, 0.188452,
-    0.023652, 0.948027, 0.274850, 0.953734, 0.756066, 0.019135, 0.548418,
-    0.547594, 0.209479],
-   [0.271663, 0.525723, 0.267998, 0.250128, 0.702226,
-    0.229707, 0.175555, 0.297942, 0.860000, 0.169436, 0.887007, 0.126692,
-    0.384973, 0.182938, 0.553939, 0.253207, 0.029636, 0.425111, 0.846293,
-    0.842762, 0.304010, 0.762392, 0.447713, 0.952176, 0.056503, 0.447279,
-    0.970657, 0.412395, 0.340561, 0.121831, 0.176847, 0.956278, 0.114158,
-    0.355843, 0.137279, 0.076094, 0.595278, 0.711299, 0.589624, 0.171310,
-    0.768125, 0.554197, 0.121300, 0.554864, 0.976230, 0.161199, 0.085808,
-    0.386882, 0.683964, 0.831818, 0.057765, 0.313484, 0.508615, 0.827996,
-    0.333389, 0.971560, 0.189127, 0.211048, 0.345118, 0.566802, 0.105797,
-    0.080436, 0.782501, 0.518403, 0.218373, 0.281876, 0.906947, 0.889611,
-    0.479506, 0.629542, 0.654916, 0.480508, 0.389275, 0.082686, 0.280760,
-    0.109858, 0.733491, 0.446057, 0.249002, 0.541121, 0.502550, 0.371208,
-    0.721902, 0.436620, 0.244237, 0.250580, 0.226793, 0.627351, 0.160097,
-    0.747408, 0.375859, 0.871497, 0.926349, 0.874001, 0.869867, 0.307266,
-    0.483985, 0.124589, 0.578719, 0.366280, 0.412193, 0.594651, 0.369025,
-    0.481161, 0.576671, 0.467754, 0.224526, 0.031813, 0.821986, 0.090304,
-    0.836334, 0.444711, 0.408687, 0.205362, 0.263692, 0.475828, 0.905762,
-    0.909118, 0.301838, 0.988982, 0.774767, 0.589240, 0.246877, 0.876037,
-    0.457144, 0.741628, 0.921321, 0.527897, 0.302698, 0.768976, 0.397204,
-    0.953512, 0.101570, 0.219640, 0.337110, 0.454909, 0.462697, 0.162126,
-    0.761869, 0.168659, 0.298322, 0.061892, 0.703901, 0.867304, 0.080736,
-    0.314129, 0.380475, 0.314903, 0.665137, 0.094841, 0.523808, 0.073543,
-    0.279188, 0.490220, 0.451759, 0.926845, 0.472939, 0.145560, 0.309754,
-    0.286070, 0.687752, 0.920453, 0.965685, 0.776630, 0.163112, 0.167838,
-    0.626627, 0.243982, 0.641384, 0.902528, 0.114211, 0.308358, 0.492737,
-    0.566340, 0.048890, 0.067968, 0.103615, 0.316475, 0.394561, 0.284335,
-    0.879411, 0.207121, 0.036808, 0.216855, 0.550790, 0.368205, 0.531398,
-    0.365759, 0.165072, 0.177080, 0.274344, 0.397236, 0.225324, 0.880869,
-    0.228650, 0.783659, 0.547302, 0.814027, 0.767327, 0.545063, 0.256435,
-    0.519250, 0.316496, 0.922818, 0.742588, 0.447345, 0.628000, 0.811624,
-    0.252169, 0.572887, 0.213673, 0.089029, 0.696801, 0.113802, 0.091420,
-    0.428054, 0.235681, 0.820236, 0.133022, 0.686627, 0.107302, 0.561399,
-    0.916099, 0.288236, 0.200918, 0.935256, 0.871452, 0.071271, 0.844837,
-    0.711053, 0.182887, 0.241940, 0.460490] ),
-
-  ([0.219306, 0.322092, 0.147404, 0.200659, 0.284280, 0.812433, 0.760430,
-    0.114444, 0.378002, 0.977233, 0.289865, 0.789850, 0.589251, 0.843959,
-    0.751396, 0.798212, 0.219275, 0.058535, 0.546159, 0.895779, 0.016999,
-    0.686483, 0.196661, 0.930845, 0.017365, 0.796655, 0.452040, 0.987487,
-    0.139592, 0.860195, 0.168432, 0.046815, 0.201483, 0.494491, 0.871120,
-    0.947172, 0.506088, 0.584613, 0.404584, 0.924009, 0.656545, 0.312540,
-    0.576678, 0.511643, 0.756066, 0.126225, 0.203162, 0.087252, 0.648824,
-    0.179022, 0.458876, 0.838771, 0.357830, 0.271249, 0.941954, 0.437727,
-    0.376904, 0.824976, 0.356761, 0.198767, 0.971770, 0.923154, 0.222907,
-    0.006409, 0.147496, 0.944456, 0.515183, 0.790796, 0.438429, 0.825312,
-    0.641896, 0.833399, 0.176000, 0.479720, 0.666982, 0.684164, 0.392041,
-    0.408856, 0.182928, 0.971374, 0.012452, 0.031281, 0.739891, 0.884854,
-    0.498703, 0.765130, 0.237953, 0.614887, 0.592303, 0.393262, 0.188604,
-    0.526902, 0.319590, 0.743370, 0.251320, 0.354137, 0.912076, 0.213263,
-    0.951964, 0.188818, 0.799341, 0.173467, 0.989166, 0.553789, 0.330271,
-    0.777825, 0.034639, 0.334971, 0.379254, 0.213538, 0.434095, 0.856960,
-    0.493179, 0.922300, 0.714560, 0.881954, 0.735740, 0.822626, 0.304758,
-    0.814142, 0.885464, 0.066225, 0.374645, 0.890103, 0.143284, 0.358257,
-    0.200201, 0.637074, 0.006165, 0.373455, 0.959990, 0.379772, 0.463057,
-    0.299265, 0.369518, 0.077609, 0.169347, 0.037141, 0.059816, 0.272897,
-    0.756066, 0.093295, 0.106357, 0.431806, 0.929991, 0.690115, 0.614643,
-    0.459212, 0.521317, 0.129551, 0.768517, 0.668508, 0.134556, 0.939848,
-    0.248054, 0.987823, 0.559313, 0.836421, 0.422315, 0.683584, 0.597034,
-    0.028748, 0.224067, 0.383435, 0.460158, 0.904111, 0.112278, 0.678640,
-    0.399579, 0.619312, 0.028840, 0.088046, 0.717002, 0.632313, 0.755638,
-    0.664907, 0.818293, 0.704154, 0.578021, 0.027009, 0.464095, 0.402936,
-    0.661733, 0.092349, 0.874020, 0.641255, 0.048372, 0.300729, 0.840358,
-    0.277657, 0.676748, 0.603351, 0.508164, 0.314188, 0.335276, 0.000824,
-    0.977386, 0.720634, 0.953093, 0.911679, 0.383465, 0.417096, 0.134404,
-    0.151738, 0.612903, 0.446089, 0.344005, 0.806513, 0.309671, 0.865047,
-    0.648915, 0.777062, 0.328990, 0.391095, 0.423078, 0.281167, 0.294504,
-    0.328928, 0.921384, 0.090823, 0.415387, 0.813135, 0.128697, 0.787164,
-    0.219306, 0.896023, 0.790979, 0.814234, 0.357738, 0.512772, 0.033723,
-    0.612995, 0.139805],
-   [0.337469, 0.211019, 0.303828, 0.169147, 0.566631,
-    0.265004, 0.229917, 0.266692, 0.707275, 0.181060, 0.891105, 0.151850,
-    0.330346, 0.236540, 0.566669, 0.367808, 0.022893, 0.342128, 0.828586,
-    0.836092, 0.288965, 0.520367, 0.340710, 0.948377, 0.068229, 0.481998,
-    0.961949, 0.321867, 0.409557, 0.096625, 0.235185, 0.963402, 0.086902,
-    0.304833, 0.136653, 0.100314, 0.555993, 0.473476, 0.687371, 0.091541,
-    0.824397, 0.761128, 0.176079, 0.461218, 0.972764, 0.101685, 0.092011,
-    0.704997, 0.786809, 0.845653, 0.048572, 0.532518, 0.294126, 0.790332,
-    0.263704, 0.972708, 0.345158, 0.097973, 0.310588, 0.411926, 0.068545,
-    0.167609, 0.738812, 0.590916, 0.165281, 0.483342, 0.827012, 0.874491,
-    0.706514, 0.764947, 0.810091, 0.569694, 0.516268, 0.052071, 0.182505,
-    0.087599, 0.683585, 0.451136, 0.172146, 0.361382, 0.584432, 0.524382,
-    0.697889, 0.607622, 0.269281, 0.404014, 0.383005, 0.465719, 0.133359,
-    0.848459, 0.329923, 0.676798, 0.918466, 0.925962, 0.912074, 0.448496,
-    0.592100, 0.143557, 0.664445, 0.531189, 0.525847, 0.767499, 0.299313,
-    0.578332, 0.624400, 0.466934, 0.132613, 0.062552, 0.904959, 0.127579,
-    0.818607, 0.446923, 0.465014, 0.273226, 0.337396, 0.414281, 0.956502,
-    0.834423, 0.290169, 0.990990, 0.851944, 0.418151, 0.380813, 0.826651,
-    0.462244, 0.779744, 0.812940, 0.421702, 0.511798, 0.737402, 0.242433,
-    0.976064, 0.082025, 0.373773, 0.357622, 0.499017, 0.402349, 0.271163,
-    0.773220, 0.143733, 0.266738, 0.050067, 0.499764, 0.788335, 0.090030,
-    0.517396, 0.443833, 0.574189, 0.552392, 0.191110, 0.418867, 0.138714,
-    0.305420, 0.657505, 0.572325, 0.943814, 0.480564, 0.142950, 0.344197,
-    0.370294, 0.751791, 0.917778, 0.979460, 0.802610, 0.237874, 0.154067,
-    0.546123, 0.157159, 0.840947, 0.881112, 0.184218, 0.258215, 0.482485,
-    0.519804, 0.043765, 0.055481, 0.093186, 0.499097, 0.448311, 0.311212,
-    0.855592, 0.258039, 0.041089, 0.214369, 0.600970, 0.397062, 0.636188,
-    0.356101, 0.081942, 0.210988, 0.129305, 0.371435, 0.371639, 0.813555,
-    0.371106, 0.809968, 0.372638, 0.920697, 0.714700, 0.493914, 0.314693,
-    0.564047, 0.208476, 0.945736, 0.642147, 0.532650, 0.600253, 0.861064,
-    0.231185, 0.557751, 0.243577, 0.108949, 0.781807, 0.164608, 0.116768,
-    0.415680, 0.234421, 0.906828, 0.111577, 0.653296, 0.165778, 0.443490,
-    0.832201, 0.205338, 0.099455, 0.939522, 0.892921, 0.067812, 0.864319,
-    0.700760, 0.271345, 0.210610, 0.439696] ),
-
-  ([0.854610, 0.475326, 0.616596, 0.950865, 0.181310, 0.239937, 0.388104,
-    0.212043, 0.604663, 0.777734, 0.682180, 0.037111, 0.873531, 0.897580,
-    0.711814, 0.242958, 0.692618, 0.919034, 0.401349, 0.869625, 0.605152,
-    0.349773, 0.907193, 0.866420, 0.971740, 0.994659, 0.187109, 0.100467,
-    0.075686, 0.902371, 0.899991, 0.343669, 0.887173, 0.056734, 0.416395,
-    0.394208, 0.516037, 0.218085, 0.222419, 0.989471, 0.886166, 0.821223,
-    0.496567, 0.665883, 0.661061, 0.336375, 0.142308, 0.222571, 0.953185,
-    0.999573, 0.056734, 0.944517, 0.847346, 0.317728, 0.916807, 0.241737,
-    0.270089, 0.256111, 0.264321, 0.861171, 0.235817, 0.513260, 0.171300,
-    0.326365, 0.001282, 0.790063, 0.266274, 0.762535, 0.159398, 0.459365,
-    0.403455, 0.762322, 0.203894, 0.542253, 0.755608, 0.448927, 0.595691,
-    0.397046, 0.611988, 0.392743, 0.862850, 0.027497, 0.662709, 0.537706,
-    0.764550, 0.416578, 0.050600, 0.793786, 0.051119, 0.791528, 0.971892,
-    0.451552, 0.850826, 0.227088, 0.106937, 0.075411, 0.214850, 0.492874,
-    0.662587, 0.031648, 0.851985, 0.550890, 0.306497, 0.307230, 0.583544,
-    0.610065, 0.775964, 0.776147, 0.550768, 0.143223, 0.441389, 0.569140,
-    0.705100, 0.773644, 0.606220, 0.703238, 0.612903, 0.436659, 0.824488,
-    0.627277, 0.106082, 0.723136, 0.016999, 0.839625, 0.809595, 0.810663,
-    0.668081, 0.234626, 0.076937, 0.889065, 0.882870, 0.333628, 0.365429,
-    0.486129, 0.587970, 0.057009, 0.581957, 0.600085, 0.655538, 0.193640,
-    0.430799, 0.044923, 0.232307, 0.223701, 0.294565, 0.914945, 0.055483,
-    0.651296, 0.679708, 0.574450, 0.035493, 0.503189, 0.757500, 0.079470,
-    0.888302, 0.149663, 0.032319, 0.437056, 0.097079, 0.104068, 0.667837,
-    0.608753, 0.985992, 0.956877, 0.502762, 0.664693, 0.185675, 0.100833,
-    0.287271, 0.994018, 0.273446, 0.403882, 0.171575, 0.978393, 0.867855,
-    0.484603, 0.977294, 0.034639, 0.959990, 0.748314, 0.283578, 0.432752,
-    0.762108, 0.838771, 0.859127, 0.795434, 0.855464, 0.662252, 0.470412,
-    0.685659, 0.917722, 0.640034, 0.599139, 0.188330, 0.812006, 0.345836,
-    0.098178, 0.892514, 0.318552, 0.184057, 0.318918, 0.179724, 0.290109,
-    0.265450, 0.740165, 0.226020, 0.512284, 0.136235, 0.630360, 0.622272,
-    0.050356, 0.516984, 0.774438, 0.020600, 0.363872, 0.707480, 0.795923,
-    0.712027, 0.969573, 0.814051, 0.106540, 0.542009, 0.934843, 0.455031,
-    0.013642, 0.070437, 0.982299, 0.101444, 0.017182, 0.381726, 0.486923,
-    0.708243, 0.827479],
-   [0.358315, 0.270049, 0.342954, 0.214249, 0.838752,
-    0.310564, 0.336771, 0.491659, 0.732358, 0.146048, 0.875334, 0.177203,
-    0.340052, 0.229098, 0.470689, 0.199422, 0.013477, 0.437964, 0.834417,
-    0.801902, 0.374778, 0.710470, 0.380647, 0.932384, 0.136688, 0.415547,
-    0.964993, 0.435191, 0.308797, 0.163246, 0.208703, 0.966874, 0.093376,
-    0.265505, 0.059608, 0.236134, 0.535674, 0.631452, 0.664845, 0.282025,
-    0.768258, 0.736782, 0.122918, 0.461566, 0.987912, 0.084404, 0.129183,
-    0.480177, 0.727945, 0.669787, 0.062807, 0.564469, 0.428409, 0.826974,
-    0.384675, 0.966756, 0.210445, 0.272487, 0.317097, 0.370697, 0.125074,
-    0.121726, 0.635255, 0.498751, 0.333923, 0.279037, 0.831576, 0.742353,
-    0.554140, 0.759262, 0.788903, 0.342407, 0.402883, 0.054452, 0.192420,
-    0.161426, 0.594132, 0.626459, 0.311456, 0.580723, 0.643488, 0.466939,
-    0.751366, 0.460380, 0.344418, 0.299266, 0.238402, 0.530317, 0.201173,
-    0.845135, 0.368270, 0.901918, 0.933553, 0.879270, 0.896686, 0.242673,
-    0.645876, 0.221722, 0.671788, 0.696868, 0.613856, 0.594100, 0.345442,
-    0.478488, 0.365499, 0.560186, 0.419429, 0.068769, 0.764765, 0.122668,
-    0.800360, 0.269527, 0.402713, 0.334230, 0.186238, 0.417001, 0.967712,
-    0.853496, 0.310179, 0.990401, 0.731177, 0.343208, 0.224512, 0.855574,
-    0.460790, 0.815310, 0.857852, 0.702756, 0.390921, 0.820575, 0.520593,
-    0.972868, 0.068325, 0.330995, 0.461637, 0.405847, 0.510358, 0.189043,
-    0.743286, 0.146544, 0.298520, 0.047979, 0.553638, 0.834975, 0.179460,
-    0.576135, 0.432415, 0.424000, 0.680846, 0.195304, 0.569258, 0.102375,
-    0.234922, 0.416825, 0.427743, 0.919058, 0.366473, 0.080673, 0.323088,
-    0.458077, 0.866718, 0.887048, 0.954464, 0.853763, 0.211882, 0.257413,
-    0.401140, 0.143234, 0.711803, 0.858469, 0.176694, 0.376906, 0.538888,
-    0.499580, 0.083381, 0.049338, 0.126933, 0.301235, 0.503423, 0.417381,
-    0.790785, 0.244376, 0.054084, 0.341139, 0.605380, 0.327142, 0.557695,
-    0.273406, 0.123661, 0.177072, 0.239960, 0.264496, 0.289714, 0.758051,
-    0.287238, 0.796446, 0.445350, 0.931600, 0.752621, 0.391089, 0.172409,
-    0.373470, 0.299196, 0.900410, 0.786394, 0.402751, 0.604255, 0.859393,
-    0.225666, 0.533102, 0.141675, 0.139006, 0.737770, 0.172180, 0.215538,
-    0.462962, 0.197081, 0.947766, 0.109388, 0.597156, 0.074044, 0.534133,
-    0.892876, 0.319288, 0.078681, 0.906544, 0.855450, 0.069378, 0.791340,
-    0.571897, 0.240928, 0.309915, 0.333618] ),
-
-  ([0.451521, 0.147221, 0.793268, 0.134800, 0.476577, 0.611164, 0.619312,
-    0.662313, 0.073580, 0.838679, 0.636280, 0.533280, 0.753319, 0.481674,
-    0.839106, 0.484176, 0.576586, 0.062868, 0.198126, 0.954619, 0.398022,
-    0.234657, 0.817927, 0.585437, 0.603961, 0.899411, 0.980773, 0.156499,
-    0.750755, 0.472213, 0.731285, 0.494858, 0.009735, 0.067598, 0.158452,
-    0.385083, 0.825037, 0.891324, 0.030732, 0.012787, 0.690573, 0.618091,
-    0.941404, 0.972564, 0.452345, 0.037629, 0.619587, 0.371441, 0.042665,
-    0.748924, 0.563768, 0.059786, 0.051729, 0.184606, 0.653706, 0.519852,
-    0.043977, 0.747215, 0.897092, 0.444105, 0.024262, 0.337168, 0.967315,
-    0.534165, 0.961150, 0.055483, 0.688437, 0.551775, 0.772637, 0.360759,
-    0.123692, 0.152776, 0.681478, 0.463057, 0.423811, 0.535783, 0.345561,
-    0.235115, 0.091189, 0.436445, 0.670095, 0.422437, 0.816492, 0.498489,
-    0.707541, 0.433393, 0.543687, 0.553453, 0.551897, 0.490768, 0.920011,
-    0.839228, 0.633168, 0.425855, 0.786615, 0.689840, 0.318613, 0.896237,
-    0.866817, 0.726920, 0.226783, 0.308817, 0.307596, 0.084445, 0.160772,
-    0.229316, 0.231239, 0.697897, 0.066927, 0.558763, 0.952391, 0.189154,
-    0.924924, 0.259499, 0.018006, 0.378399, 0.976012, 0.910947, 0.725455,
-    0.954070, 0.195318, 0.876461, 0.275369, 0.332316, 0.414594, 0.363414,
-    0.215857, 0.237434, 0.001343, 0.156438, 0.333476, 0.033784, 0.501236,
-    0.306101, 0.648152, 0.341227, 0.149297, 0.553819, 0.667592, 0.964965,
-    0.656789, 0.774438, 0.557909, 0.670919, 0.179449, 0.217383, 0.386395,
-    0.838435, 0.873989, 0.828394, 0.092746, 0.520737, 0.948180, 0.431837,
-    0.345286, 0.945158, 0.611988, 0.056398, 0.937925, 0.983947, 0.834864,
-    0.184088, 0.884640, 0.627003, 0.315989, 0.204352, 0.867244, 0.987884,
-    0.573992, 0.854793, 0.193091, 0.874325, 0.561632, 0.929228, 0.918790,
-    0.454176, 0.712302, 0.034577, 0.295877, 0.048708, 0.824549, 0.678182,
-    0.195654, 0.583819, 0.690542, 0.465743, 0.668020, 0.730705, 0.874996,
-    0.692587, 0.291879, 0.267403, 0.550737, 0.108310, 0.472610, 0.692251,
-    0.797235, 0.136631, 0.343059, 0.620319, 0.268136, 0.331645, 0.424207,
-    0.994598, 0.634236, 0.351482, 0.702170, 0.642689, 0.708243, 0.230903,
-    0.277017, 0.210700, 0.657064, 0.234046, 0.240455, 0.004852, 0.208808,
-    0.068270, 0.938200, 0.773156, 0.259468, 0.740928, 0.273110, 0.957274,
-    0.786981, 0.839503, 0.206091, 0.446608, 0.477462, 0.517289, 0.109989,
-    0.365703, 0.971221],
-   [0.322975, 0.414170, 0.161146, 0.219434, 0.685011,
-    0.207119, 0.124562, 0.313554, 0.680383, 0.204607, 0.926401, 0.123031,
-    0.342319, 0.160562, 0.383025, 0.263413, 0.031530, 0.278214, 0.854517,
-    0.938668, 0.207718, 0.530081, 0.599408, 0.967141, 0.060306, 0.216206,
-    0.956149, 0.457582, 0.287160, 0.123662, 0.170455, 0.944915, 0.075664,
-    0.367949, 0.137354, 0.245977, 0.789458, 0.601613, 0.753918, 0.205538,
-    0.801701, 0.727608, 0.099538, 0.372815, 0.980670, 0.128872, 0.153952,
-    0.733913, 0.697334, 0.832264, 0.048116, 0.476656, 0.542969, 0.813115,
-    0.428087, 0.974934, 0.283452, 0.267722, 0.308373, 0.467845, 0.073733,
-    0.060755, 0.726314, 0.632607, 0.207968, 0.198739, 0.724649, 0.827431,
-    0.659246, 0.606561, 0.804978, 0.605795, 0.421802, 0.080890, 0.184399,
-    0.042613, 0.669469, 0.636515, 0.163279, 0.506129, 0.443891, 0.538560,
-    0.687417, 0.616605, 0.243001, 0.421577, 0.417744, 0.332821, 0.104680,
-    0.814680, 0.274723, 0.854675, 0.928105, 0.822819, 0.907391, 0.392828,
-    0.560366, 0.167488, 0.771640, 0.421482, 0.502021, 0.705366, 0.356323,
-    0.236132, 0.465837, 0.673047, 0.271604, 0.044967, 0.875918, 0.101957,
-    0.690344, 0.418263, 0.416007, 0.385675, 0.177956, 0.381637, 0.926377,
-    0.834779, 0.212896, 0.991925, 0.837922, 0.493060, 0.257955, 0.881184,
-    0.455624, 0.759888, 0.797075, 0.476411, 0.546274, 0.653626, 0.437864,
-    0.979247, 0.101421, 0.310239, 0.301380, 0.315334, 0.540806, 0.179717,
-    0.803455, 0.157591, 0.320087, 0.061332, 0.563749, 0.755219, 0.043938,
-    0.411661, 0.403751, 0.445964, 0.558204, 0.265296, 0.639173, 0.087912,
-    0.230078, 0.404120, 0.337301, 0.932361, 0.434332, 0.084389, 0.343341,
-    0.257858, 0.761906, 0.918835, 0.952784, 0.774380, 0.105933, 0.159839,
-    0.830403, 0.338071, 0.526166, 0.863985, 0.233685, 0.379596, 0.616285,
-    0.618324, 0.069956, 0.031873, 0.139768, 0.470940, 0.707807, 0.243367,
-    0.727987, 0.305121, 0.104586, 0.262189, 0.546923, 0.339179, 0.566545,
-    0.340525, 0.118514, 0.187525, 0.391617, 0.309406, 0.182629, 0.782616,
-    0.233684, 0.765575, 0.523726, 0.866878, 0.699958, 0.572039, 0.237482,
-    0.526532, 0.374557, 0.928282, 0.707831, 0.618044, 0.446578, 0.624965,
-    0.199537, 0.468197, 0.182506, 0.083061, 0.585536, 0.276978, 0.076367,
-    0.358145, 0.224962, 0.838192, 0.129973, 0.763684, 0.229108, 0.557319,
-    0.866519, 0.293349, 0.163828, 0.895601, 0.903358, 0.058000, 0.789358,
-    0.591071, 0.270399, 0.131062, 0.486600] ),
-
-  ([0.965209, 0.133641, 0.925626, 0.133671, 0.650899, 0.231605, 0.871517,
-    0.258309, 0.107364, 0.016541, 0.557054, 0.607166, 0.550859, 0.089724,
-    0.176702, 0.195593, 0.110752, 0.006592, 0.188025, 0.227668, 0.951659,
-    0.533219, 0.454115, 0.087741, 0.069246, 0.349925, 0.138401, 0.295358,
-    0.041841, 0.858791, 0.882534, 0.328928, 0.517289, 0.250343, 0.298502,
-    0.725211, 0.718314, 0.486862, 0.306864, 0.359874, 0.746239, 0.357524,
-    0.351665, 0.316630, 0.964873, 0.262246, 0.023408, 0.249794, 0.245796,
-    0.880398, 0.122013, 0.647938, 0.356243, 0.380047, 0.689871, 0.903531,
-    0.270577, 0.325297, 0.047121, 0.595904, 0.687124, 0.936308, 0.360454,
-    0.893399, 0.531205, 0.859523, 0.775628, 0.480361, 0.725822, 0.103824,
-    0.646290, 0.916501, 0.010987, 0.299142, 0.889737, 0.833583, 0.093417,
-    0.933103, 0.000305, 0.876553, 0.907254, 0.722800, 0.753166, 0.794946,
-    0.267495, 0.777764, 0.127628, 0.590930, 0.697531, 0.709616, 0.483627,
-    0.130345, 0.711173, 0.345744, 0.520463, 0.122745, 0.331400, 0.202582,
-    0.050539, 0.876949, 0.126804, 0.374828, 0.118503, 0.737968, 0.546495,
-    0.997009, 0.497635, 0.612384, 0.835261, 0.933500, 0.093997, 0.487197,
-    0.310099, 0.853481, 0.290597, 0.349590, 0.279397, 0.346660, 0.761834,
-    0.412946, 0.385571, 0.236427, 0.789911, 0.056154, 0.653279, 0.746544,
-    0.614765, 0.381603, 0.023560, 0.677328, 0.848170, 0.798975, 0.655934,
-    0.248329, 0.483566, 0.540361, 0.778741, 0.762841, 0.533067, 0.513596,
-    0.370281, 0.751061, 0.822260, 0.399396, 0.450819, 0.748253, 0.974914,
-    0.399030, 0.267159, 0.363384, 0.118046, 0.538774, 0.151311, 0.795740,
-    0.339244, 0.937040, 0.334025, 0.454329, 0.426740, 0.940641, 0.494705,
-    0.837642, 0.924558, 0.536699, 0.328990, 0.329020, 0.032716, 0.946013,
-    0.914975, 0.064608, 0.384930, 0.804102, 0.159703, 0.529588, 0.234169,
-    0.837001, 0.106906, 0.039155, 0.077731, 0.436689, 0.387310, 0.760826,
-    0.253212, 0.043825, 0.592669, 0.433638, 0.536180, 0.742943, 0.855220,
-    0.441084, 0.271157, 0.976867, 0.412976, 0.393719, 0.067049, 0.786706,
-    0.443129, 0.877956, 0.588458, 0.483413, 0.943754, 0.526688, 0.473434,
-    0.156957, 0.945952, 0.069094, 0.910062, 0.930143, 0.837275, 0.514573,
-    0.902127, 0.362255, 0.077548, 0.128025, 0.755486, 0.909848, 0.088778,
-    0.352489, 0.816553, 0.850124, 0.599902, 0.334941, 0.993927, 0.573504,
-    0.227882, 0.212073, 0.094333, 0.651753, 0.576739, 0.812311, 0.504532,
-    0.587451, 0.634816],
-   [0.302431, 0.592346, 0.385344, 0.262467, 0.590451,
-    0.183795, 0.213462, 0.439501, 0.685453, 0.160185, 0.933631, 0.128044,
-    0.473315, 0.155567, 0.492202, 0.220253, 0.019522, 0.469708, 0.877853,
-    0.882415, 0.430326, 0.645252, 0.298033, 0.974497, 0.075881, 0.454331,
-    0.980756, 0.353203, 0.227064, 0.112352, 0.204441, 0.986582, 0.111204,
-    0.360922, 0.104295, 0.042607, 0.664624, 0.575153, 0.703935, 0.219955,
-    0.724316, 0.760176, 0.086626, 0.569313, 0.985771, 0.070120, 0.125450,
-    0.608872, 0.735175, 0.869160, 0.116281, 0.382006, 0.535477, 0.916268,
-    0.339548, 0.951149, 0.269138, 0.158267, 0.227921, 0.496810, 0.078373,
-    0.109946, 0.857936, 0.460175, 0.325318, 0.226608, 0.881037, 0.765901,
-    0.643060, 0.624702, 0.860348, 0.550049, 0.440815, 0.045541, 0.260502,
-    0.076994, 0.577882, 0.615792, 0.139510, 0.358114, 0.612593, 0.347721,
-    0.818075, 0.526762, 0.377618, 0.514885, 0.205696, 0.501251, 0.196091,
-    0.886461, 0.334135, 0.829124, 0.919315, 0.913637, 0.931191, 0.463876,
-    0.534980, 0.183099, 0.612192, 0.441730, 0.502768, 0.648400, 0.513146,
-    0.572191, 0.598630, 0.502384, 0.334881, 0.031650, 0.855085, 0.124462,
-    0.852059, 0.450404, 0.460454, 0.470191, 0.387106, 0.341040, 0.953467,
-    0.868460, 0.346095, 0.991675, 0.840988, 0.432867, 0.309167, 0.832854,
-    0.502416, 0.631140, 0.913146, 0.646113, 0.533057, 0.744471, 0.344817,
-    0.940144, 0.095737, 0.351065, 0.352773, 0.470006, 0.334397, 0.168739,
-    0.758467, 0.118992, 0.163775, 0.065261, 0.683652, 0.880562, 0.097123,
-    0.524062, 0.373206, 0.612702, 0.639353, 0.118260, 0.626205, 0.073664,
-    0.238101, 0.415854, 0.550570, 0.891418, 0.355098, 0.070208, 0.362777,
-    0.318568, 0.738166, 0.900724, 0.976352, 0.702925, 0.146500, 0.299967,
-    0.705262, 0.364984, 0.552743, 0.965066, 0.116578, 0.213095, 0.466038,
-    0.747374, 0.067506, 0.087477, 0.178816, 0.416269, 0.468249, 0.214696,
-    0.835123, 0.118108, 0.025186, 0.379601, 0.633495, 0.177899, 0.682522,
-    0.295777, 0.141661, 0.153813, 0.116872, 0.401177, 0.173447, 0.851914,
-    0.213767, 0.629566, 0.332266, 0.909032, 0.721796, 0.678533, 0.154774,
-    0.709337, 0.292937, 0.943155, 0.633317, 0.467546, 0.571542, 0.892620,
-    0.209587, 0.472640, 0.425492, 0.096146, 0.488989, 0.063471, 0.114715,
-    0.354080, 0.168293, 0.811268, 0.093427, 0.730772, 0.163385, 0.495506,
-    0.936379, 0.234286, 0.082734, 0.884049, 0.750206, 0.102785, 0.857904,
-    0.691171, 0.194803, 0.207255, 0.440377] ),
-
-  ([0.929533, 0.249916, 0.651570, 0.752678, 0.825922, 0.961516, 0.715232,
-    0.981933, 0.119022, 0.782250, 0.481582, 0.056917, 0.710440, 0.744163,
-    0.024689, 0.800104, 0.911008, 0.647359, 0.041017, 0.232368, 0.420331,
-    0.972259, 0.720145, 0.170141, 0.315378, 0.856197, 0.640889, 0.589434,
-    0.705618, 0.666005, 0.599170, 0.539232, 0.209906, 0.197089, 0.773492,
-    0.884823, 0.912564, 0.031281, 0.134800, 0.662252, 0.953429, 0.083590,
-    0.506851, 0.325632, 0.409558, 0.869930, 0.182592, 0.668203, 0.624042,
-    0.526902, 0.504379, 0.698263, 0.637928, 0.114566, 0.312449, 0.251686,
-    0.882595, 0.233741, 0.669393, 0.622059, 0.787561, 0.489059, 0.765893,
-    0.989288, 0.460860, 0.828913, 0.414533, 0.928587, 0.097812, 0.293558,
-    0.037843, 0.780816, 0.274758, 0.202918, 0.556444, 0.165197, 0.783349,
-    0.314676, 0.083987, 0.416028, 0.162694, 0.984741, 0.835170, 0.224250,
-    0.584674, 0.860591, 0.152470, 0.265755, 0.248909, 0.139317, 0.058779,
-    0.096744, 0.944182, 0.921293, 0.241127, 0.098422, 0.931639, 0.690481,
-    0.872860, 0.751366, 0.806818, 0.453597, 0.179449, 0.021455, 0.496414,
-    0.568194, 0.155065, 0.138371, 0.045839, 0.791528, 0.335582, 0.547716,
-    0.354442, 0.581622, 0.034608, 0.318491, 0.513718, 0.181249, 0.948485,
-    0.786798, 0.905820, 0.516587, 0.536851, 0.716880, 0.717704, 0.441359,
-    0.084780, 0.761498, 0.027741, 0.358196, 0.852809, 0.501877, 0.120792,
-    0.747978, 0.220954, 0.849330, 0.187933, 0.638630, 0.233589, 0.089114,
-    0.067476, 0.544877, 0.450301, 0.348674, 0.182867, 0.909635, 0.510178,
-    0.770287, 0.334483, 0.578784, 0.314920, 0.170507, 0.500961, 0.340342,
-    0.237617, 0.467055, 0.306589, 0.059359, 0.262856, 0.654500, 0.310953,
-    0.439802, 0.464888, 0.610065, 0.777306, 0.944517, 0.730033, 0.510666,
-    0.075198, 0.904721, 0.129185, 0.142705, 0.374828, 0.350352, 0.847346,
-    0.885556, 0.787927, 0.592059, 0.075533, 0.650136, 0.612690, 0.086581,
-    0.772607, 0.553880, 0.838374, 0.616688, 0.701407, 0.613178, 0.565600,
-    0.316538, 0.647694, 0.234718, 0.499344, 0.574175, 0.226051, 0.787072,
-    0.170141, 0.342265, 0.180517, 0.033082, 0.040284, 0.888180, 0.585284,
-    0.705618, 0.150731, 0.514817, 0.852107, 0.006226, 0.465651, 0.283395,
-    0.950774, 0.309885, 0.570208, 0.269387, 0.748466, 0.855129, 0.878201,
-    0.383007, 0.874722, 0.702322, 0.005676, 0.285348, 0.017823, 0.740684,
-    0.467086, 0.431471, 0.059359, 0.025330, 0.349376, 0.771599, 0.952605,
-    0.225471, 0.121464],
-   [0.471172, 0.394669, 0.206750, 0.210992, 0.672674,
-    0.219721, 0.244692, 0.426030, 0.784261, 0.125930, 0.920721, 0.154459,
-    0.450891, 0.147751, 0.367723, 0.353484, 0.026113, 0.408033, 0.834816,
-    0.836353, 0.222549, 0.727688, 0.436814, 0.937279, 0.062492, 0.322380,
-    0.970168, 0.358693, 0.165828, 0.163289, 0.179660, 0.946080, 0.107585,
-    0.214507, 0.120466, 0.146463, 0.513517, 0.744142, 0.796061, 0.229379,
-    0.872125, 0.699375, 0.097177, 0.456963, 0.983115, 0.103819, 0.067400,
-    0.572813, 0.619288, 0.738678, 0.064006, 0.534990, 0.457646, 0.821854,
-    0.245365, 0.935265, 0.292294, 0.273248, 0.484045, 0.650145, 0.134589,
-    0.129359, 0.760950, 0.500222, 0.244806, 0.295520, 0.888711, 0.794874,
-    0.648125, 0.671853, 0.861657, 0.618463, 0.418073, 0.037680, 0.213474,
-    0.081569, 0.498616, 0.466083, 0.254703, 0.579328, 0.489857, 0.365154,
-    0.823990, 0.691592, 0.177938, 0.402626, 0.413972, 0.432276, 0.128408,
-    0.861022, 0.334743, 0.852509, 0.905923, 0.855449, 0.907655, 0.449490,
-    0.525716, 0.146824, 0.576212, 0.621424, 0.631967, 0.680759, 0.213491,
-    0.453037, 0.455632, 0.589247, 0.386547, 0.051896, 0.834187, 0.065552,
-    0.821578, 0.352428, 0.257310, 0.496232, 0.325953, 0.415318, 0.944347,
-    0.879332, 0.271775, 0.994542, 0.755022, 0.297164, 0.397653, 0.922277,
-    0.248507, 0.646424, 0.828524, 0.605859, 0.566800, 0.766935, 0.501635,
-    0.968145, 0.101199, 0.250424, 0.261777, 0.417199, 0.420268, 0.129902,
-    0.670874, 0.244133, 0.465330, 0.072836, 0.635216, 0.847806, 0.110087,
-    0.366808, 0.501077, 0.518786, 0.719245, 0.116495, 0.614688, 0.075322,
-    0.230603, 0.497451, 0.382493, 0.916194, 0.445191, 0.092338, 0.298070,
-    0.477992, 0.755918, 0.914011, 0.974732, 0.707787, 0.173469, 0.199932,
-    0.765572, 0.213141, 0.596297, 0.892776, 0.147179, 0.364556, 0.506639,
-    0.737935, 0.078835, 0.081713, 0.207005, 0.301130, 0.607415, 0.176493,
-    0.729900, 0.207783, 0.024178, 0.266947, 0.655454, 0.133159, 0.598460,
-    0.426653, 0.098941, 0.108835, 0.144931, 0.394514, 0.293194, 0.870920,
-    0.156846, 0.751377, 0.464677, 0.895932, 0.790477, 0.579755, 0.462048,
-    0.682392, 0.230107, 0.921158, 0.641127, 0.610895, 0.569350, 0.699673,
-    0.178217, 0.276934, 0.170802, 0.081585, 0.765277, 0.194187, 0.089230,
-    0.378231, 0.151939, 0.827206, 0.093455, 0.748796, 0.175005, 0.362430,
-    0.899749, 0.406536, 0.105491, 0.936633, 0.825872, 0.095697, 0.877409,
-    0.610769, 0.203597, 0.204503, 0.606680] ),
-
-  ([0.142003, 0.751518, 0.465590, 0.234352, 0.876461, 0.696310, 0.339915,
-    0.668569, 0.669485, 0.761986, 0.382611, 0.085208, 0.223121, 0.575793,
-    0.773675, 0.736900, 0.707907, 0.110324, 0.562853, 0.794153, 0.569628,
-    0.058077, 0.192145, 0.244758, 0.713095, 0.294137, 0.598560, 0.021302,
-    0.594043, 0.332591, 0.677908, 0.513382, 0.250404, 0.183752, 0.391614,
-    0.120975, 0.804621, 0.517899, 0.296945, 0.005188, 0.467360, 0.541704,
-    0.782586, 0.692190, 0.574999, 0.494095, 0.790277, 0.687185, 0.691214,
-    0.167272, 0.304422, 0.754418, 0.304331, 0.359569, 0.390179, 0.019105,
-    0.151738, 0.666005, 0.061647, 0.548479, 0.702445, 0.513138, 0.761681,
-    0.566820, 0.828913, 0.844234, 0.733970, 0.962340, 0.199927, 0.361064,
-    0.069002, 0.240516, 0.425275, 0.728690, 0.705344, 0.581744, 0.483444,
-    0.649129, 0.166875, 0.158025, 0.464034, 0.210852, 0.317911, 0.366222,
-    0.155736, 0.419538, 0.917020, 0.133152, 0.511338, 0.316782, 0.250801,
-    0.949675, 0.520859, 0.593127, 0.629414, 0.788903, 0.524155, 0.101291,
-    0.024079, 0.566149, 0.494308, 0.176244, 0.628986, 0.295633, 0.322825,
-    0.167791, 0.627735, 0.600818, 0.638203, 0.092868, 0.946715, 0.734642,
-    0.188726, 0.812616, 0.275399, 0.765618, 0.321360, 0.641591, 0.136143,
-    0.086184, 0.587024, 0.794610, 0.283456, 0.899930, 0.004608, 0.577685,
-    0.214942, 0.842891, 0.014191, 0.729667, 0.074770, 0.396619, 0.650868,
-    0.820124, 0.731040, 0.247932, 0.970763, 0.110355, 0.307810, 0.252602,
-    0.260140, 0.783593, 0.954222, 0.158452, 0.058901, 0.950316, 0.130284,
-    0.744774, 0.529954, 0.335520, 0.192419, 0.533708, 0.205237, 0.053743,
-    0.558275, 0.730583, 0.640339, 0.378185, 0.233345, 0.548448, 0.008240,
-    0.910215, 0.980041, 0.574084, 0.163976, 0.055635, 0.910550, 0.331095,
-    0.211127, 0.213782, 0.784875, 0.696524, 0.101505, 0.585772, 0.795099,
-    0.327189, 0.299417, 0.007965, 0.117161, 0.752190, 0.041505, 0.717429,
-    0.011841, 0.287454, 0.223609, 0.454909, 0.755211, 0.429151, 0.445753,
-    0.812281, 0.180944, 0.881344, 0.246742, 0.230079, 0.115024, 0.875149,
-    0.059297, 0.551988, 0.484176, 0.934996, 0.917264, 0.541856, 0.379467,
-    0.748222, 0.445784, 0.270180, 0.856349, 0.294778, 0.166387, 0.775903,
-    0.751946, 0.892605, 0.647328, 0.909574, 0.301675, 0.315500, 0.531083,
-    0.764855, 0.835444, 0.639454, 0.970031, 0.603778, 0.335368, 0.973693,
-    0.501480, 0.682699, 0.136326, 0.732688, 0.893765, 0.884610, 0.549852,
-    0.605731, 0.993652],
-   [0.253504, 0.534326, 0.251760, 0.237928, 0.664410,
-    0.126609, 0.132684, 0.418006, 0.666470, 0.215330, 0.920184, 0.117055,
-    0.355147, 0.170783, 0.327884, 0.256327, 0.027910, 0.470747, 0.880988,
-    0.889491, 0.479139, 0.521001, 0.393600, 0.972722, 0.085265, 0.415580,
-    0.972281, 0.482544, 0.346985, 0.134187, 0.148290, 0.967033, 0.064457,
-    0.308757, 0.091188, 0.106056, 0.666364, 0.644436, 0.738676, 0.157409,
-    0.796504, 0.819582, 0.161226, 0.572395, 0.985212, 0.056289, 0.124700,
-    0.684193, 0.738343, 0.858700, 0.119422, 0.531593, 0.540814, 0.806578,
-    0.255111, 0.953920, 0.375051, 0.132877, 0.304271, 0.424460, 0.108830,
-    0.140324, 0.726330, 0.390954, 0.344656, 0.297103, 0.836113, 0.845710,
-    0.541340, 0.593495, 0.799546, 0.607697, 0.385357, 0.059555, 0.275257,
-    0.043167, 0.741677, 0.452371, 0.186232, 0.458056, 0.634944, 0.440253,
-    0.781245, 0.585590, 0.386615, 0.299644, 0.311233, 0.638113, 0.139079,
-    0.818473, 0.272349, 0.785139, 0.910448, 0.847825, 0.909313, 0.463918,
-    0.570289, 0.136830, 0.605815, 0.361042, 0.480547, 0.633562, 0.233467,
-    0.466913, 0.601511, 0.711690, 0.285150, 0.039565, 0.908040, 0.081223,
-    0.741324, 0.409105, 0.448214, 0.349451, 0.247382, 0.355812, 0.891038,
-    0.892278, 0.230916, 0.983817, 0.739059, 0.550368, 0.366082, 0.896731,
-    0.351754, 0.755379, 0.861318, 0.627702, 0.478943, 0.759569, 0.411450,
-    0.968553, 0.062213, 0.275821, 0.331454, 0.331865, 0.397601, 0.223281,
-    0.710319, 0.145954, 0.317140, 0.057056, 0.578738, 0.816384, 0.047016,
-    0.525610, 0.336833, 0.552102, 0.683525, 0.119884, 0.484933, 0.066421,
-    0.280478, 0.551438, 0.287947, 0.877956, 0.468814, 0.059983, 0.421428,
-    0.275246, 0.737221, 0.887111, 0.973068, 0.761741, 0.125024, 0.179706,
-    0.712262, 0.175115, 0.647305, 0.929135, 0.099306, 0.232157, 0.620496,
-    0.679094, 0.034862, 0.051003, 0.142482, 0.370931, 0.493494, 0.258032,
-    0.837991, 0.177554, 0.086700, 0.207737, 0.563446, 0.417696, 0.483721,
-    0.268154, 0.138681, 0.203293, 0.290859, 0.364657, 0.312939, 0.843912,
-    0.214481, 0.670471, 0.528396, 0.848559, 0.746439, 0.552310, 0.207122,
-    0.532526, 0.364218, 0.940528, 0.635287, 0.556140, 0.505382, 0.879060,
-    0.255610, 0.447759, 0.191044, 0.081017, 0.529700, 0.163505, 0.202604,
-    0.245266, 0.199667, 0.866675, 0.114402, 0.669242, 0.149501, 0.338364,
-    0.852990, 0.361792, 0.111204, 0.925449, 0.829030, 0.085374, 0.849162,
-    0.590237, 0.245031, 0.150276, 0.340917] ),
-
-  ([0.564470, 0.693442, 0.879666, 0.107578, 0.513840, 0.306131, 0.271432,
-    0.947142, 0.450636, 0.831721, 0.927030, 0.669912, 0.940580, 0.550462,
-    0.742088, 0.047792, 0.156682, 0.041353, 0.661550, 0.293374, 0.382855,
-    0.755455, 0.113773, 0.575396, 0.667714, 0.981658, 0.235786, 0.755394,
-    0.535142, 0.986694, 0.045747, 0.376049, 0.157872, 0.609790, 0.218940,
-    0.432936, 0.899991, 0.093966, 0.623646, 0.960265, 0.634938, 0.434828,
-    0.272652, 0.962981, 0.745201, 0.027924, 0.847713, 0.725242, 0.209784,
-    0.896725, 0.451704, 0.027467, 0.685934, 0.281228, 0.746239, 0.302713,
-    0.991058, 0.869991, 0.129826, 0.263619, 0.891629, 0.455061, 0.113681,
-    0.031587, 0.604541, 0.292825, 0.550615, 0.298959, 0.918088, 0.950591,
-    0.874081, 0.555651, 0.337840, 0.920957, 0.003021, 0.911557, 0.164525,
-    0.785180, 0.069155, 0.545976, 0.909726, 0.206366, 0.622486, 0.315073,
-    0.955535, 0.534104, 0.471877, 0.548936, 0.864864, 0.301584, 0.816462,
-    0.569140, 0.248146, 0.396710, 0.824427, 0.958556, 0.593219, 0.188147,
-    0.315226, 0.114170, 0.963958, 0.387860, 0.701682, 0.114353, 0.974639,
-    0.930906, 0.847865, 0.431928, 0.945891, 0.654439, 0.999481, 0.524003,
-    0.648366, 0.056551, 0.442701, 0.830317, 0.540605, 0.916623, 0.047761,
-    0.210761, 0.907559, 0.057924, 0.353465, 0.353740, 0.805231, 0.034425,
-    0.349071, 0.186407, 0.218818, 0.022553, 0.609790, 0.818262, 0.339518,
-    0.699057, 0.941710, 0.048799, 0.366863, 0.386822, 0.193091, 0.971587,
-    0.742851, 0.249214, 0.387860, 0.704428, 0.223762, 0.814692, 0.837397,
-    0.778466, 0.696280, 0.612629, 0.387249, 0.216193, 0.143742, 0.201758,
-    0.455000, 0.830653, 0.669515, 0.372478, 0.015076, 0.776055, 0.982635,
-    0.804102, 0.187414, 0.882138, 0.253090, 0.958678, 0.585559, 0.802576,
-    0.742302, 0.492080, 0.080996, 0.509293, 0.115177, 0.964324, 0.139897,
-    0.163701, 0.840327, 0.129429, 0.387829, 0.896115, 0.583880, 0.587237,
-    0.559923, 0.524461, 0.004425, 0.077090, 0.491440, 0.744163, 0.853969,
-    0.196173, 0.306101, 0.819422, 0.792077, 0.822077, 0.457564, 0.307962,
-    0.819178, 0.022309, 0.780969, 0.850459, 0.734977, 0.731315, 0.210089,
-    0.555071, 0.529038, 0.975768, 0.317301, 0.009491, 0.108585, 0.930784,
-    0.331614, 0.451064, 0.271065, 0.586749, 0.791589, 0.126011, 0.326701,
-    0.309183, 0.489364, 0.369976, 0.277749, 0.072176, 0.861965, 0.439833,
-    0.960906, 0.647023, 0.485916, 0.629292, 0.058443, 0.527085, 0.831874,
-    0.698630, 0.385174],
-   [0.495618, 0.441464, 0.557017, 0.272405, 0.594053,
-    0.213913, 0.095401, 0.330141, 0.756265, 0.213387, 0.945661, 0.215836,
-    0.478364, 0.166789, 0.265475, 0.224600, 0.011292, 0.356525, 0.881330,
-    0.899717, 0.340867, 0.762765, 0.398643, 0.959794, 0.076373, 0.411068,
-    0.956087, 0.425671, 0.267392, 0.086429, 0.230950, 0.969761, 0.077102,
-    0.364494, 0.110616, 0.201659, 0.655970, 0.529764, 0.775525, 0.178886,
-    0.732134, 0.748248, 0.129081, 0.515934, 0.980429, 0.110490, 0.140175,
-    0.754832, 0.623327, 0.732077, 0.072652, 0.447853, 0.313085, 0.880703,
-    0.231171, 0.966561, 0.265433, 0.153128, 0.496576, 0.485365, 0.232871,
-    0.147871, 0.742083, 0.608403, 0.367386, 0.242410, 0.889346, 0.726072,
-    0.567069, 0.541939, 0.876543, 0.588447, 0.463390, 0.048924, 0.332279,
-    0.112237, 0.583767, 0.708608, 0.194895, 0.406334, 0.623418, 0.521972,
-    0.732477, 0.736640, 0.234700, 0.436454, 0.332746, 0.552401, 0.149503,
-    0.896181, 0.132756, 0.723063, 0.864270, 0.737282, 0.896088, 0.500499,
-    0.435932, 0.208168, 0.772405, 0.552217, 0.466660, 0.676089, 0.363508,
-    0.511280, 0.383914, 0.680339, 0.244844, 0.037614, 0.821954, 0.097665,
-    0.866579, 0.369076, 0.428357, 0.289866, 0.218990, 0.386788, 0.958202,
-    0.895966, 0.332165, 0.987714, 0.837437, 0.415629, 0.234766, 0.762833,
-    0.575631, 0.802375, 0.868664, 0.547072, 0.361121, 0.787932, 0.372006,
-    0.962287, 0.132690, 0.364041, 0.272380, 0.455698, 0.386066, 0.211024,
-    0.726992, 0.223019, 0.238927, 0.028980, 0.619901, 0.829672, 0.114443,
-    0.530184, 0.384064, 0.570925, 0.593174, 0.172192, 0.479118, 0.055151,
-    0.175546, 0.543465, 0.386083, 0.921652, 0.407870, 0.111462, 0.413042,
-    0.409689, 0.804235, 0.840629, 0.970208, 0.698751, 0.221048, 0.330415,
-    0.674973, 0.245212, 0.661346, 0.911649, 0.197003, 0.272622, 0.678364,
-    0.645042, 0.082575, 0.073088, 0.102925, 0.483113, 0.540776, 0.190397,
-    0.789439, 0.199725, 0.028167, 0.298789, 0.666024, 0.294616, 0.698567,
-    0.244601, 0.071771, 0.145942, 0.372541, 0.500928, 0.208398, 0.810336,
-    0.256493, 0.752106, 0.419867, 0.844875, 0.739738, 0.589028, 0.172165,
-    0.576336, 0.388612, 0.942727, 0.605002, 0.466328, 0.573021, 0.868937,
-    0.193609, 0.484958, 0.312042, 0.164538, 0.625321, 0.355834, 0.114481,
-    0.326462, 0.120043, 0.885765, 0.155206, 0.625728, 0.175445, 0.336309,
-    0.853385, 0.299478, 0.164527, 0.921071, 0.777973, 0.099571, 0.860153,
-    0.491092, 0.205249, 0.258365, 0.463333] ),
-
-  ([0.870357, 0.935087, 0.150121, 0.356639, 0.240822, 0.138127, 0.380718,
-    0.045442, 0.429823, 0.562517, 0.242409, 0.731742, 0.138768, 0.464309,
-    0.042634, 0.353954, 0.804498, 0.131626, 0.514969, 0.766320, 0.348430,
-    0.478835, 0.791864, 0.209052, 0.130772, 0.994385, 0.910764, 0.898007,
-    0.891110, 0.198492, 0.884426, 0.139439, 0.956359, 0.266915, 0.867061,
-    0.876614, 0.498032, 0.976684, 0.447493, 0.073946, 0.119053, 0.630573,
-    0.600482, 0.846004, 0.552141, 0.116428, 0.327250, 0.735923, 0.750786,
-    0.757378, 0.517228, 0.051332, 0.154057, 0.109104, 0.061281, 0.662770,
-    0.406384, 0.361095, 0.748314, 0.171056, 0.313822, 0.497330, 0.976440,
-    0.850581, 0.317667, 0.872921, 0.809565, 0.273690, 0.267159, 0.363384,
-    0.411298, 0.023469, 0.772149, 0.742088, 0.386822, 0.400220, 0.916929,
-    0.442579, 0.064089, 0.528459, 0.617023, 0.361950, 0.246193, 0.770837,
-    0.399457, 0.861446, 0.465133, 0.854518, 0.888180, 0.620563, 0.269173,
-    0.617115, 0.776025, 0.500992, 0.574511, 0.777551, 0.563921, 0.076479,
-    0.612659, 0.639058, 0.849269, 0.985076, 0.504776, 0.129612, 0.444014,
-    0.759636, 0.994293, 0.087008, 0.104495, 0.293527, 0.368694, 0.193701,
-    0.153478, 0.596973, 0.102481, 0.468856, 0.776269, 0.000702, 0.251717,
-    0.723014, 0.271676, 0.463393, 0.131748, 0.881924, 0.039613, 0.138493,
-    0.309763, 0.585681, 0.585986, 0.857418, 0.442610, 0.969939, 0.326548,
-    0.684713, 0.991852, 0.034211, 0.470840, 0.201971, 0.346904, 0.505295,
-    0.767449, 0.676412, 0.387707, 0.600116, 0.391675, 0.770318, 0.017975,
-    0.595965, 0.757439, 0.948088, 0.700552, 0.613239, 0.533708, 0.236518,
-    0.525773, 0.517441, 0.647847, 0.495041, 0.844569, 0.346507, 0.555956,
-    0.851680, 0.996948, 0.169897, 0.562578, 0.461623, 0.167638, 0.785394,
-    0.470077, 0.244209, 0.900052, 0.160161, 0.339549, 0.754509, 0.299173,
-    0.022309, 0.644307, 0.846034, 0.455824, 0.508805, 0.597034, 0.280923,
-    0.122440, 0.276406, 0.932340, 0.943175, 0.172155, 0.982025, 0.925138,
-    0.812067, 0.872494, 0.537828, 0.927244, 0.351482, 0.504379, 0.048799,
-    0.202124, 0.471297, 0.358623, 0.837458, 0.340373, 0.717582, 0.640278,
-    0.463027, 0.035951, 0.847407, 0.312296, 0.141240, 0.505356, 0.444563,
-    0.410382, 0.470290, 0.330546, 0.732871, 0.859432, 0.869991, 0.006806,
-    0.242683, 0.323160, 0.640065, 0.977264, 0.487289, 0.118381, 0.043641,
-    0.434400, 0.305338, 0.724967, 0.322703, 0.671255, 0.025483, 0.922483,
-    0.050966, 0.261727],
-   [0.260157, 0.307517, 0.358097, 0.252689, 0.772330,
-    0.168730, 0.199755, 0.263603, 0.796697, 0.181093, 0.908662, 0.220840,
-    0.448967, 0.056864, 0.383428, 0.252245, 0.028268, 0.379121, 0.920537,
-    0.931111, 0.376615, 0.702265, 0.339892, 0.951384, 0.054280, 0.473895,
-    0.985559, 0.437227, 0.257565, 0.131997, 0.163347, 0.974754, 0.051855,
-    0.364200, 0.179886, 0.139106, 0.533888, 0.439360, 0.658220, 0.284960,
-    0.802907, 0.717600, 0.108974, 0.423505, 0.979426, 0.072133, 0.140069,
-    0.642677, 0.641243, 0.648287, 0.086454, 0.332935, 0.442687, 0.900471,
-    0.324827, 0.970455, 0.321905, 0.153388, 0.273655, 0.560316, 0.054492,
-    0.164323, 0.775053, 0.618409, 0.320127, 0.217728, 0.806489, 0.830306,
-    0.422330, 0.576379, 0.884398, 0.516388, 0.381542, 0.044992, 0.252025,
-    0.077069, 0.768432, 0.381270, 0.154768, 0.518110, 0.765505, 0.365825,
-    0.591896, 0.683737, 0.155926, 0.240362, 0.234728, 0.662729, 0.099457,
-    0.899237, 0.244236, 0.906834, 0.903701, 0.839181, 0.900426, 0.410311,
-    0.610486, 0.151047, 0.777519, 0.399258, 0.474944, 0.605231, 0.337552,
-    0.385688, 0.341139, 0.679593, 0.385755, 0.035838, 0.872824, 0.144731,
-    0.756607, 0.337629, 0.336516, 0.400295, 0.349064, 0.239996, 0.890461,
-    0.918159, 0.191377, 0.993292, 0.743830, 0.487235, 0.297947, 0.904181,
-    0.347443, 0.796035, 0.902446, 0.487609, 0.457696, 0.661949, 0.538200,
-    0.961316, 0.048804, 0.252998, 0.376427, 0.402341, 0.368201, 0.151905,
-    0.719359, 0.208973, 0.274783, 0.051515, 0.586169, 0.870502, 0.067245,
-    0.473591, 0.397839, 0.618277, 0.627337, 0.094868, 0.342847, 0.082950,
-    0.306641, 0.610109, 0.216219, 0.850829, 0.415679, 0.109415, 0.430899,
-    0.368500, 0.672157, 0.943332, 0.973869, 0.654748, 0.097660, 0.130777,
-    0.714200, 0.168292, 0.513323, 0.919240, 0.323300, 0.443992, 0.613737,
-    0.690707, 0.038421, 0.054618, 0.152763, 0.333967, 0.530286, 0.307992,
-    0.929752, 0.188744, 0.063666, 0.359969, 0.680815, 0.212698, 0.676648,
-    0.319024, 0.140095, 0.220252, 0.142314, 0.333826, 0.266799, 0.812927,
-    0.297978, 0.767975, 0.598235, 0.890015, 0.710723, 0.567831, 0.346083,
-    0.587204, 0.342478, 0.962254, 0.687791, 0.580150, 0.457589, 0.859200,
-    0.168856, 0.500052, 0.205292, 0.075898, 0.546948, 0.241454, 0.054149,
-    0.449954, 0.299996, 0.883236, 0.178772, 0.792651, 0.196661, 0.379851,
-    0.872677, 0.203970, 0.132733, 0.919790, 0.809352, 0.089786, 0.863894,
-    0.624949, 0.109569, 0.242875, 0.490815] ),
-
-  ([0.109653, 0.085360, 0.731498, 0.853023, 0.430921, 0.667531, 0.044008,
-    0.850154, 0.842463, 0.407300, 0.649648, 0.774590, 0.193823, 0.284799,
-    0.957732, 0.577776, 0.450789, 0.762169, 0.762383, 0.691122, 0.074648,
-    0.338389, 0.154241, 0.093356, 0.318003, 0.949950, 0.613880, 0.177160,
-    0.592273, 0.248024, 0.692862, 0.695242, 0.564287, 0.284463, 0.189398,
-    0.568255, 0.137181, 0.636647, 0.224097, 0.835078, 0.972625, 0.503494,
-    0.122288, 0.527024, 0.709952, 0.803125, 0.509537, 0.746971, 0.539415,
-    0.803919, 0.525956, 0.734947, 0.284402, 0.319864, 0.566210, 0.201239,
-    0.650410, 0.001801, 0.450911, 0.708457, 0.795862, 0.755516, 0.436171,
-    0.383374, 0.881466, 0.817835, 0.966979, 0.740532, 0.754509, 0.522599,
-    0.581103, 0.897977, 0.424116, 0.287027, 0.869961, 0.967071, 0.483627,
-    0.850154, 0.901700, 0.897488, 0.136662, 0.294290, 0.014008, 0.558214,
-    0.982940, 0.881375, 0.382244, 0.336375, 0.219855, 0.234382, 0.268654,
-    0.034822, 0.416761, 0.896359, 0.360271, 0.349834, 0.517472, 0.797082,
-    0.100467, 0.709983, 0.227424, 0.659627, 0.420942, 0.757775, 0.442335,
-    0.877346, 0.780511, 0.255074, 0.873501, 0.892941, 0.916623, 0.693625,
-    0.527085, 0.610584, 0.216132, 0.391614, 0.192969, 0.872768, 0.111423,
-    0.358409, 0.599780, 0.532609, 0.408124, 0.707389, 0.391797, 0.153142,
-    0.950774, 0.899533, 0.584887, 0.864986, 0.532609, 0.597858, 0.656850,
-    0.413190, 0.455794, 0.414716, 0.928922, 0.925077, 0.648213, 0.332713,
-    0.394421, 0.429762, 0.743095, 0.080905, 0.651234, 0.661153, 0.027985,
-    0.247139, 0.093509, 0.175176, 0.669027, 0.408185, 0.019929, 0.312784,
-    0.116611, 0.058351, 0.813959, 0.039888, 0.099429, 0.618641, 0.852504,
-    0.195654, 0.112186, 0.306833, 0.299783, 0.180029, 0.804041, 0.150334,
-    0.441664, 0.612049, 0.173437, 0.922910, 0.717612, 0.990204, 0.976043,
-    0.286172, 0.106082, 0.885769, 0.251625, 0.918027, 0.019684, 0.700980,
-    0.376598, 0.907865, 0.366314, 0.522385, 0.547777, 0.201270, 0.932493,
-    0.101688, 0.104434, 0.374615, 0.745384, 0.494430, 0.594440, 0.520707,
-    0.569597, 0.388134, 0.990387, 0.527390, 0.194708, 0.651479, 0.962951,
-    0.529740, 0.670400, 0.134983, 0.616688, 0.817530, 0.144810, 0.255318,
-    0.595294, 0.978668, 0.463027, 0.393689, 0.961913, 0.560747, 0.181127,
-    0.640217, 0.761345, 0.030885, 0.152898, 0.915036, 0.670125, 0.316111,
-    0.344829, 0.997864, 0.640645, 0.704550, 0.035859, 0.496719, 0.945677,
-    0.389813, 0.058412],
-   [0.454856, 0.248515, 0.361389, 0.122148, 0.694139,
-    0.146798, 0.280774, 0.412776, 0.702364, 0.163216, 0.902092, 0.093065,
-    0.474958, 0.264249, 0.434468, 0.227983, 0.011746, 0.387684, 0.926212,
-    0.733468, 0.251994, 0.594014, 0.524123, 0.948130, 0.157794, 0.383516,
-    0.975607, 0.466704, 0.307640, 0.100712, 0.141646, 0.956370, 0.042512,
-    0.297531, 0.085487, 0.093468, 0.596480, 0.690076, 0.797975, 0.267221,
-    0.753295, 0.774192, 0.116699, 0.464241, 0.985235, 0.073823, 0.089206,
-    0.447433, 0.719236, 0.815190, 0.046099, 0.489775, 0.405497, 0.906062,
-    0.254434, 0.967531, 0.295697, 0.102913, 0.406725, 0.519415, 0.081144,
-    0.196076, 0.755829, 0.377023, 0.214420, 0.150418, 0.858558, 0.876656,
-    0.635810, 0.630952, 0.729097, 0.625271, 0.333465, 0.042126, 0.224886,
-    0.142931, 0.763860, 0.603410, 0.175108, 0.380019, 0.666179, 0.447647,
-    0.869742, 0.579908, 0.245852, 0.371972, 0.344010, 0.359698, 0.081658,
-    0.833780, 0.219437, 0.796887, 0.949882, 0.901161, 0.913896, 0.377543,
-    0.619674, 0.128213, 0.516002, 0.422384, 0.409693, 0.684524, 0.425780,
-    0.548613, 0.520597, 0.594379, 0.261667, 0.079061, 0.904477, 0.080815,
-    0.801571, 0.404271, 0.580455, 0.402241, 0.263298, 0.523119, 0.942118,
-    0.916117, 0.335429, 0.988195, 0.777338, 0.500755, 0.323573, 0.857648,
-    0.592954, 0.611505, 0.838570, 0.625515, 0.332418, 0.798301, 0.539981,
-    0.981028, 0.122947, 0.425385, 0.327212, 0.369861, 0.378286, 0.154940,
-    0.779355, 0.110862, 0.317416, 0.040495, 0.507705, 0.858675, 0.089329,
-    0.297920, 0.288036, 0.377962, 0.567168, 0.167161, 0.586962, 0.064270,
-    0.234567, 0.532191, 0.422919, 0.913402, 0.394611, 0.032129, 0.312803,
-    0.443883, 0.683181, 0.931617, 0.976537, 0.787270, 0.157918, 0.235750,
-    0.617241, 0.176583, 0.705436, 0.958141, 0.218316, 0.217251, 0.681318,
-    0.793152, 0.079533, 0.080840, 0.214927, 0.437709, 0.604961, 0.227055,
-    0.805453, 0.181182, 0.030641, 0.358724, 0.664910, 0.292232, 0.570454,
-    0.224660, 0.089332, 0.112569, 0.273717, 0.225018, 0.222019, 0.788015,
-    0.214029, 0.802656, 0.590121, 0.912856, 0.734046, 0.469630, 0.260610,
-    0.592389, 0.334603, 0.936535, 0.760104, 0.684230, 0.639625, 0.771056,
-    0.221245, 0.374172, 0.134190, 0.110979, 0.800637, 0.245717, 0.135946,
-    0.260575, 0.133939, 0.933764, 0.118476, 0.528121, 0.136099, 0.495127,
-    0.832425, 0.290466, 0.117380, 0.906839, 0.875183, 0.109638, 0.801086,
-    0.592449, 0.213508, 0.105856, 0.559403] ),
-
-  ([0.287667, 0.529618, 0.438673, 0.236427, 0.456221, 0.072512, 0.464156,
-    0.676840, 0.272042, 0.673482, 0.784814, 0.071169, 0.228248, 0.558977,
-    0.351512, 0.662923, 0.676229, 0.723411, 0.223273, 0.037019, 0.087497,
-    0.907071, 0.873074, 0.388348, 0.473739, 0.818476, 0.104709, 0.424421,
-    0.996277, 0.007080, 0.862880, 0.559435, 0.296335, 0.292642, 0.716330,
-    0.555620, 0.577166, 0.157262, 0.296731, 0.267830, 0.969390, 0.006928,
-    0.473403, 0.648152, 0.210730, 0.708121, 0.546007, 0.666372, 0.171728,
-    0.306284, 0.235694, 0.302835, 0.258034, 0.332102, 0.756676, 0.269784,
-    0.221168, 0.601794, 0.748833, 0.617328, 0.408521, 0.918088, 0.353099,
-    0.880612, 0.984344, 0.577532, 0.210608, 0.924131, 0.152379, 0.090884,
-    0.667013, 0.139714, 0.912015, 0.022645, 0.962706, 0.154088, 0.378460,
-    0.355846, 0.691366, 0.702475, 0.199225, 0.288553, 0.306650, 0.824641,
-    0.096835, 0.868343, 0.959380, 0.039155, 0.070467, 0.370739, 0.445662,
-    0.652913, 0.286416, 0.828272, 0.548173, 0.860988, 0.189764, 0.615894,
-    0.550707, 0.794305, 0.867641, 0.499588, 0.208014, 0.170660, 0.195868,
-    0.053896, 0.952147, 0.705496, 0.800104, 0.854976, 0.615955, 0.938505,
-    0.362468, 0.355022, 0.455947, 0.632893, 0.305307, 0.845149, 0.754814,
-    0.402814, 0.383221, 0.411695, 0.785363, 0.725791, 0.214209, 0.293527,
-    0.417158, 0.996002, 0.282022, 0.545701, 0.146947, 0.774834, 0.439955,
-    0.415845, 0.834132, 0.895138, 0.448195, 0.340190, 0.922422, 0.575060,
-    0.575457, 0.964476, 0.429365, 0.197882, 0.796442, 0.096713, 0.484603,
-    0.914396, 0.616108, 0.998077, 0.697958, 0.723258, 0.052217, 0.917264,
-    0.139195, 0.186743, 0.807428, 0.276101, 0.210242, 0.437208, 0.161779,
-    0.411145, 0.191046, 0.630543, 0.617695, 0.278390, 0.740867, 0.503739,
-    0.827418, 0.027253, 0.135472, 0.191687, 0.835658, 0.849696, 0.522507,
-    0.960417, 0.167425, 0.011017, 0.974883, 0.012116, 0.793146, 0.468978,
-    0.624958, 0.019257, 0.501572, 0.986328, 0.659841, 0.542924, 0.712699,
-    0.144322, 0.458937, 0.992523, 0.260903, 0.162633, 0.655873, 0.282632,
-    0.180303, 0.932218, 0.405011, 0.843440, 0.023194, 0.167119, 0.634602,
-    0.140690, 0.743034, 0.082095, 0.567461, 0.362041, 0.672964, 0.501450,
-    0.290262, 0.425428, 0.631581, 0.805994, 0.653279, 0.965941, 0.686575,
-    0.624012, 0.281045, 0.457595, 0.608081, 0.672903, 0.976012, 0.126011,
-    0.542528, 0.656941, 0.295572, 0.808527, 0.938688, 0.628498, 0.584643,
-    0.417402, 0.256569],
-   [0.218635, 0.357876, 0.173623, 0.173806, 0.673032,
-    0.189860, 0.351286, 0.442685, 0.692897, 0.138260, 0.929152, 0.187127,
-    0.499222, 0.119533, 0.454319, 0.261703, 0.018971, 0.302934, 0.747664,
-    0.921815, 0.284514, 0.658830, 0.284149, 0.956592, 0.066063, 0.446204,
-    0.972693, 0.393397, 0.309208, 0.095630, 0.181192, 0.938930, 0.067703,
-    0.237331, 0.113878, 0.093320, 0.503422, 0.681623, 0.733120, 0.312091,
-    0.650519, 0.652697, 0.137933, 0.532398, 0.983085, 0.084617, 0.065343,
-    0.549961, 0.745401, 0.892501, 0.074734, 0.519583, 0.376233, 0.753947,
-    0.242325, 0.964071, 0.286072, 0.208462, 0.337912, 0.594345, 0.092390,
-    0.212956, 0.694319, 0.460707, 0.237936, 0.361339, 0.858933, 0.819767,
-    0.467638, 0.727528, 0.746701, 0.532651, 0.330979, 0.050657, 0.332196,
-    0.035503, 0.658197, 0.457472, 0.193841, 0.467948, 0.537894, 0.345733,
-    0.718487, 0.513743, 0.333842, 0.380397, 0.321536, 0.427051, 0.148436,
-    0.799359, 0.348584, 0.849755, 0.868229, 0.841677, 0.909258, 0.539411,
-    0.690853, 0.152109, 0.660805, 0.456971, 0.539072, 0.776359, 0.274709,
-    0.519946, 0.582156, 0.705097, 0.382707, 0.054506, 0.834956, 0.064999,
-    0.809754, 0.418180, 0.407116, 0.378793, 0.226499, 0.431485, 0.869723,
-    0.873152, 0.149430, 0.982588, 0.630468, 0.370831, 0.299135, 0.909328,
-    0.323344, 0.720702, 0.875886, 0.584744, 0.507132, 0.548361, 0.426220,
-    0.959330, 0.112001, 0.223089, 0.350064, 0.521868, 0.493527, 0.204729,
-    0.762551, 0.219292, 0.210416, 0.070511, 0.560222, 0.754688, 0.060908,
-    0.647756, 0.250738, 0.593946, 0.819360, 0.207920, 0.412829, 0.103411,
-    0.364463, 0.585421, 0.424595, 0.913237, 0.494716, 0.067945, 0.427710,
-    0.381549, 0.765270, 0.912343, 0.971849, 0.806889, 0.129748, 0.287356,
-    0.736490, 0.295920, 0.689556, 0.923895, 0.205147, 0.320950, 0.615522,
-    0.694049, 0.058830, 0.072159, 0.210321, 0.362232, 0.547235, 0.186022,
-    0.851536, 0.164144, 0.022905, 0.236097, 0.560682, 0.291979, 0.590515,
-    0.365463, 0.178689, 0.189426, 0.202501, 0.315727, 0.251595, 0.922035,
-    0.244061, 0.671076, 0.500123, 0.894621, 0.834322, 0.546120, 0.309387,
-    0.600686, 0.311961, 0.941726, 0.612745, 0.578015, 0.654615, 0.818524,
-    0.202517, 0.443512, 0.141913, 0.090282, 0.711760, 0.207059, 0.192837,
-    0.374708, 0.308595, 0.899807, 0.086978, 0.753923, 0.143085, 0.494978,
-    0.853515, 0.231696, 0.082054, 0.950877, 0.857621, 0.094328, 0.831074,
-    0.575920, 0.180761, 0.182903, 0.451331] ),
-
-  ([0.718009, 0.244209, 0.163427, 0.491195, 0.639515, 0.517624, 0.195013,
-    0.041749, 0.877834, 0.575610, 0.809778, 0.957854, 0.963408, 0.181585,
-    0.894559, 0.093814, 0.741722, 0.717978, 0.750359, 0.202765, 0.042695,
-    0.855434, 0.958098, 0.501022, 0.656911, 0.645558, 0.441786, 0.734794,
-    0.024689, 0.319102, 0.385052, 0.279641, 0.544420, 0.570025, 0.157659,
-    0.305033, 0.906003, 0.607593, 0.907834, 0.533891, 0.356182, 0.756920,
-    0.976928, 0.629597, 0.301828, 0.889828, 0.792657, 0.741111, 0.157048,
-    0.466933, 0.397015, 0.237220, 0.840907, 0.472427, 0.265328, 0.162053,
-    0.831782, 0.022462, 0.572344, 0.441908, 0.184606, 0.928922, 0.562059,
-    0.375927, 0.417127, 0.999023, 0.177313, 0.440596, 0.671804, 0.353252,
-    0.605213, 0.940550, 0.058901, 0.541429, 0.894925, 0.535783, 0.588183,
-    0.739128, 0.304025, 0.177526, 0.593890, 0.805506, 0.529710, 0.483230,
-    0.060884, 0.483535, 0.480575, 0.082461, 0.756981, 0.524247, 0.746330,
-    0.964660, 0.578143, 0.015839, 0.420362, 0.360057, 0.013123, 0.699393,
-    0.432600, 0.185247, 0.133427, 0.551744, 0.048128, 0.584246, 0.014496,
-    0.417707, 0.688009, 0.596515, 0.995483, 0.971984, 0.728782, 0.483383,
-    0.682394, 0.792535, 0.436720, 0.743736, 0.102390, 0.826472, 0.692984,
-    0.350414, 0.914212, 0.029969, 0.666128, 0.238746, 0.081515, 0.463027,
-    0.088076, 0.578051, 0.915708, 0.620594, 0.289987, 0.857662, 0.893735,
-    0.281381, 0.653859, 0.318766, 0.157811, 0.655507, 0.636708, 0.763237,
-    0.103030, 0.112033, 0.023133, 0.270272, 0.958892, 0.268075, 0.562639,
-    0.852962, 0.771264, 0.720237, 0.647908, 0.585314, 0.691366, 0.200079,
-    0.190405, 0.231269, 0.977233, 0.434706, 0.349742, 0.907041, 0.614277,
-    0.493332, 0.272164, 0.807581, 0.961699, 0.901822, 0.495834, 0.529160,
-    0.329905, 0.305857, 0.177801, 0.018616, 0.896573, 0.964263, 0.799707,
-    0.680990, 0.866024, 0.853542, 0.508316, 0.676382, 0.279611, 0.665059,
-    0.746910, 0.937742, 0.382702, 0.476272, 0.334086, 0.940519, 0.954009,
-    0.376476, 0.645924, 0.755516, 0.504685, 0.829615, 0.058077, 0.416181,
-    0.752617, 0.053926, 0.303842, 0.131596, 0.278085, 0.201056, 0.904294,
-    0.376568, 0.767815, 0.614795, 0.327250, 0.389630, 0.752647, 0.951445,
-    0.030793, 0.110721, 0.245949, 0.442457, 0.047884, 0.089572, 0.188604,
-    0.081332, 0.268227, 0.395978, 0.106754, 0.015137, 0.073580, 0.063143,
-    0.888882, 0.922636, 0.482986, 0.095767, 0.087985, 0.659810, 0.463851,
-    0.573687, 0.655934],
-   [0.426641, 0.368498, 0.324384, 0.244630, 0.810313,
-    0.154400, 0.349735, 0.383929, 0.592216, 0.152524, 0.905401, 0.140957,
-    0.476962, 0.196000, 0.330754, 0.277185, 0.018883, 0.277773, 0.862392,
-    0.903272, 0.303903, 0.594118, 0.361856, 0.941660, 0.079700, 0.480783,
-    0.969456, 0.472912, 0.230198, 0.098414, 0.160896, 0.968786, 0.046620,
-    0.262502, 0.139625, 0.175795, 0.361952, 0.682237, 0.823679, 0.267849,
-    0.790622, 0.778540, 0.116554, 0.395309, 0.970600, 0.098625, 0.083999,
-    0.714550, 0.748284, 0.835519, 0.077502, 0.521743, 0.326032, 0.755997,
-    0.251540, 0.976562, 0.302812, 0.305042, 0.410685, 0.551413, 0.117068,
-    0.132348, 0.621621, 0.626591, 0.383646, 0.184807, 0.834431, 0.780612,
-    0.507623, 0.612959, 0.794717, 0.533914, 0.477495, 0.029843, 0.227917,
-    0.108277, 0.660436, 0.700065, 0.209277, 0.487593, 0.541569, 0.553619,
-    0.731494, 0.580211, 0.275850, 0.372828, 0.243097, 0.420385, 0.098984,
-    0.857177, 0.250690, 0.833313, 0.913703, 0.867545, 0.951534, 0.361687,
-    0.527698, 0.243859, 0.717807, 0.467260, 0.580161, 0.714308, 0.267384,
-    0.456982, 0.374384, 0.692335, 0.299550, 0.083761, 0.919893, 0.096244,
-    0.848201, 0.232173, 0.484829, 0.245712, 0.249837, 0.437164, 0.970420,
-    0.887475, 0.244833, 0.991818, 0.763004, 0.286520, 0.264178, 0.806474,
-    0.660562, 0.674266, 0.860876, 0.734945, 0.467590, 0.805231, 0.447643,
-    0.964540, 0.110531, 0.299224, 0.495899, 0.439600, 0.515685, 0.221798,
-    0.708328, 0.123330, 0.259151, 0.045842, 0.530350, 0.760107, 0.140522,
-    0.285037, 0.378773, 0.458631, 0.583821, 0.141129, 0.426094, 0.055360,
-    0.322095, 0.582423, 0.468241, 0.884921, 0.413174, 0.046554, 0.445516,
-    0.540792, 0.812143, 0.869259, 0.956194, 0.762436, 0.207954, 0.269481,
-    0.813644, 0.223316, 0.794380, 0.903227, 0.153186, 0.216683, 0.710133,
-    0.745967, 0.076032, 0.082960, 0.138856, 0.522247, 0.371434, 0.332129,
-    0.891117, 0.218265, 0.071134, 0.248548, 0.680875, 0.198809, 0.592904,
-    0.277751, 0.089860, 0.167141, 0.243550, 0.326903, 0.306565, 0.898553,
-    0.198083, 0.618236, 0.607264, 0.941108, 0.790631, 0.602020, 0.208493,
-    0.649504, 0.429139, 0.913258, 0.681561, 0.603627, 0.630023, 0.737105,
-    0.243026, 0.483829, 0.173393, 0.060755, 0.683204, 0.284398, 0.103508,
-    0.451004, 0.147505, 0.885852, 0.105137, 0.803031, 0.112451, 0.412019,
-    0.725960, 0.227560, 0.200442, 0.915390, 0.853311, 0.078259, 0.842300,
-    0.799232, 0.236802, 0.236590, 0.327087] ),
-
-  ([0.954619, 0.565477, 0.882290, 0.514939, 0.431104, 0.530839, 0.601520,
-    0.873959, 0.745659, 0.043428, 0.083987, 0.694906, 0.115177, 0.264992,
-    0.254036, 0.215796, 0.019532, 0.320292, 0.658498, 0.936796, 0.358745,
-    0.385907, 0.300882, 0.975127, 0.846828, 0.538285, 0.290017, 0.195654,
-    0.922880, 0.018097, 0.834101, 0.023194, 0.961272, 0.066805, 0.612140,
-    0.342235, 0.061831, 0.991760, 0.053194, 0.391247, 0.201239, 0.615833,
-    0.555406, 0.057314, 0.027192, 0.768517, 0.175451, 0.477218, 0.076205,
-    0.973907, 0.820093, 0.351512, 0.696615, 0.992309, 0.470962, 0.877926,
-    0.457930, 0.371685, 0.473708, 0.709677, 0.327677, 0.665059, 0.422895,
-    0.846034, 0.397076, 0.470138, 0.673788, 0.860347, 0.436934, 0.947569,
-    0.012513, 0.372204, 0.064577, 0.973785, 0.515427, 0.170415, 0.803797,
-    0.585101, 0.129429, 0.892026, 0.818018, 0.868954, 0.004059, 0.664693,
-    0.599261, 0.958464, 0.106784, 0.618000, 0.392895, 0.287179, 0.152989,
-    0.670248, 0.640126, 0.759484, 0.381329, 0.496689, 0.219337, 0.993439,
-    0.206183, 0.086032, 0.767602, 0.292032, 0.278512, 0.790704, 0.863277,
-    0.499344, 0.985839, 0.277596, 0.351390, 0.397595, 0.922941, 0.285684,
-    0.592853, 0.801569, 0.364940, 0.596271, 0.918546, 0.006256, 0.273080,
-    0.122410, 0.069948, 0.744957, 0.865230, 0.523911, 0.907346, 0.312357,
-    0.281869, 0.253761, 0.166540, 0.010956, 0.379498, 0.442518, 0.546251,
-    0.575243, 0.181585, 0.526841, 0.906095, 0.730888, 0.019501, 0.028474,
-    0.857814, 0.545152, 0.894040, 0.389874, 0.529893, 0.724143, 0.088504,
-    0.272439, 0.787500, 0.513932, 0.565783, 0.224372, 0.688589, 0.361431,
-    0.178961, 0.123508, 0.457686, 0.990905, 0.228339, 0.302072, 0.758507,
-    0.053224, 0.395123, 0.759056, 0.546556, 0.003449, 0.583239, 0.367016,
-    0.283151, 0.362987, 0.700766, 0.479049, 0.791986, 0.023072, 0.912137,
-    0.842555, 0.539506, 0.745323, 0.391858, 0.225715, 0.620411, 0.515885,
-    0.112064, 0.663411, 0.229438, 0.909360, 0.694113, 0.728050, 0.900784,
-    0.118595, 0.855739, 0.732658, 0.296213, 0.807093, 0.485733, 0.271249,
-    0.823481, 0.439283, 0.876308, 0.003815, 0.865810, 0.246467, 0.145054,
-    0.091372, 0.904202, 0.483016, 0.377850, 0.187872, 0.313334, 0.130009,
-    0.523209, 0.394818, 0.112827, 0.702780, 0.570452, 0.085238, 0.454512,
-    0.317667, 0.041719, 0.002808, 0.127476, 0.675253, 0.330271, 0.542833,
-    0.861965, 0.115421, 0.915250, 0.620991, 0.713157, 0.401471, 0.984863,
-    0.036164, 0.306619],
-   [0.359776, 0.367097, 0.360432, 0.206506, 0.754471,
-    0.285965, 0.166168, 0.326315, 0.800244, 0.206862, 0.902224, 0.139618,
-    0.610692, 0.143672, 0.351668, 0.325182, 0.025730, 0.455092, 0.929569,
-    0.796769, 0.251855, 0.747627, 0.331670, 0.964723, 0.081021, 0.389377,
-    0.981844, 0.573396, 0.213534, 0.174239, 0.116232, 0.955129, 0.098010,
-    0.382178, 0.106874, 0.088279, 0.545543, 0.621791, 0.575619, 0.146018,
-    0.761163, 0.653365, 0.150332, 0.606838, 0.980184, 0.110615, 0.146229,
-    0.514361, 0.704054, 0.766151, 0.064525, 0.409417, 0.439298, 0.897061,
-    0.299828, 0.971770, 0.367509, 0.291184, 0.281051, 0.502794, 0.096782,
-    0.083478, 0.840663, 0.583090, 0.395116, 0.281379, 0.877926, 0.828898,
-    0.625191, 0.619742, 0.853877, 0.536377, 0.372904, 0.073845, 0.199405,
-    0.100709, 0.606060, 0.473555, 0.180722, 0.531621, 0.601256, 0.244270,
-    0.741130, 0.594147, 0.163998, 0.204984, 0.241442, 0.590100, 0.134714,
-    0.816974, 0.270377, 0.806844, 0.880223, 0.902738, 0.878790, 0.222071,
-    0.650206, 0.154455, 0.539164, 0.455021, 0.436253, 0.719163, 0.462310,
-    0.466113, 0.538283, 0.504002, 0.245044, 0.046836, 0.881469, 0.148622,
-    0.804958, 0.406845, 0.435662, 0.364701, 0.291077, 0.404339, 0.948996,
-    0.888650, 0.217218, 0.988262, 0.810153, 0.354070, 0.251472, 0.892376,
-    0.390826, 0.855087, 0.934166, 0.635453, 0.402146, 0.843193, 0.463845,
-    0.975613, 0.078484, 0.275776, 0.417762, 0.424582, 0.351462, 0.152584,
-    0.709934, 0.176501, 0.342223, 0.045484, 0.523229, 0.867291, 0.180673,
-    0.433035, 0.494813, 0.457182, 0.578500, 0.122501, 0.627640, 0.059493,
-    0.203059, 0.417564, 0.405842, 0.883510, 0.382213, 0.080276, 0.288037,
-    0.366680, 0.771502, 0.868585, 0.984384, 0.748690, 0.225509, 0.208029,
-    0.508301, 0.300714, 0.593630, 0.933136, 0.149565, 0.327301, 0.570310,
-    0.512326, 0.044906, 0.068581, 0.171144, 0.334918, 0.595896, 0.244451,
-    0.868130, 0.306131, 0.023271, 0.230718, 0.581006, 0.262223, 0.475655,
-    0.306093, 0.119837, 0.192525, 0.192306, 0.363700, 0.344519, 0.844001,
-    0.236159, 0.757393, 0.441866, 0.873148, 0.723895, 0.628312, 0.289490,
-    0.471274, 0.276109, 0.933656, 0.774933, 0.515753, 0.508829, 0.878633,
-    0.161455, 0.487705, 0.194438, 0.073326, 0.719559, 0.146848, 0.064468,
-    0.295699, 0.159501, 0.841205, 0.130773, 0.727858, 0.213309, 0.529196,
-    0.900356, 0.375119, 0.133807, 0.913048, 0.900510, 0.175900, 0.858299,
-    0.624336, 0.144456, 0.290592, 0.449766] ),
-
-  ([0.388440, 0.499100, 0.733940, 0.225929, 0.232795, 0.223090, 0.876339,
-    0.324351, 0.299356, 0.762169, 0.124699, 0.241615, 0.421522, 0.130528,
-    0.041871, 0.907041, 0.671590, 0.884213, 0.019318, 0.309915, 0.296731,
-    0.349498, 0.636219, 0.319224, 0.977630, 0.978820, 0.856349, 0.833064,
-    0.065096, 0.364208, 0.969207, 0.039460, 0.952208, 0.940916, 0.681356,
-    0.069918, 0.236579, 0.911008, 0.264534, 0.826624, 0.830744, 0.419446,
-    0.166601, 0.264809, 0.675344, 0.513321, 0.991638, 0.911466, 0.212561,
-    0.915128, 0.255379, 0.901486, 0.275369, 0.142155, 0.822535, 0.312845,
-    0.549120, 0.002838, 0.431623, 0.081851, 0.261422, 0.000977, 0.214240,
-    0.279397, 0.257302, 0.679678, 0.614551, 0.030152, 0.114689, 0.435926,
-    0.615497, 0.855617, 0.457808, 0.837184, 0.677969, 0.721702, 0.123600,
-    0.971038, 0.298898, 0.573473, 0.338267, 0.859340, 0.594989, 0.636738,
-    0.559618, 0.468276, 0.817927, 0.268838, 0.141697, 0.345042, 0.207495,
-    0.639485, 0.478042, 0.412946, 0.088961, 0.022736, 0.779626, 0.955870,
-    0.620685, 0.981933, 0.143742, 0.323527, 0.098392, 0.227912, 0.070437,
-    0.388592, 0.222510, 0.432844, 0.082003, 0.287027, 0.234504, 0.780084,
-    0.602710, 0.472945, 0.328471, 0.531602, 0.754234, 0.619098, 0.244667,
-    0.394452, 0.223426, 0.394330, 0.450758, 0.967101, 0.858760, 0.649190,
-    0.817225, 0.047121, 0.151219, 0.041231, 0.193121, 0.081668, 0.256630,
-    0.630696, 0.788629, 0.541459, 0.714805, 0.478256, 0.770287, 0.500076,
-    0.522507, 0.776086, 0.975463, 0.199438, 0.716086, 0.543352, 0.152318,
-    0.883206, 0.120151, 0.417158, 0.631336, 0.678243, 0.418531, 0.570818,
-    0.834529, 0.807184, 0.203528, 0.290048, 0.529160, 0.911405, 0.160436,
-    0.238777, 0.231574, 0.767174, 0.042421, 0.945555, 0.667928, 0.175390,
-    0.593280, 0.541917, 0.697378, 0.306375, 0.073183, 0.284127, 0.604968,
-    0.281075, 0.544816, 0.889096, 0.169347, 0.269845, 0.574664, 0.216163,
-    0.412732, 0.889950, 0.507523, 0.325938, 0.438124, 0.183325, 0.968780,
-    0.447096, 0.261116, 0.955596, 0.751854, 0.882717, 0.041932, 0.757408,
-    0.746513, 0.387494, 0.624226, 0.290139, 0.064486, 0.046663, 0.786370,
-    0.516160, 0.018586, 0.188360, 0.112522, 0.255684, 0.111606, 0.360057,
-    0.888607, 0.551195, 0.691214, 0.901181, 0.929960, 0.580615, 0.427168,
-    0.142399, 0.747154, 0.400586, 0.266976, 0.763115, 0.955779, 0.301065,
-    0.026276, 0.338481, 0.336375, 0.052614, 0.270486, 0.607135, 0.451674,
-    0.827326, 0.643361],
-   [0.341520, 0.354248, 0.277172, 0.160909, 0.797057,
-    0.240798, 0.202232, 0.531780, 0.648235, 0.247807, 0.899272, 0.204557,
-    0.643516, 0.176589, 0.498432, 0.206448, 0.025146, 0.357909, 0.889836,
-    0.870475, 0.239393, 0.718789, 0.405395, 0.966255, 0.060351, 0.494726,
-    0.973623, 0.450753, 0.274252, 0.156538, 0.144262, 0.967449, 0.117045,
-    0.347548, 0.190970, 0.086992, 0.503627, 0.736885, 0.627200, 0.147963,
-    0.625970, 0.729231, 0.144069, 0.508258, 0.979544, 0.100684, 0.155637,
-    0.614090, 0.726387, 0.819368, 0.064838, 0.369947, 0.284572, 0.910960,
-    0.231451, 0.965955, 0.243170, 0.194659, 0.336649, 0.518927, 0.181495,
-    0.160324, 0.764995, 0.434198, 0.334108, 0.141132, 0.895691, 0.739906,
-    0.519881, 0.575619, 0.774124, 0.553721, 0.448064, 0.045919, 0.193842,
-    0.091922, 0.777352, 0.523866, 0.113049, 0.299497, 0.627231, 0.439321,
-    0.832294, 0.576561, 0.340493, 0.339656, 0.307748, 0.471689, 0.148783,
-    0.872684, 0.317473, 0.791259, 0.918053, 0.786497, 0.862708, 0.431441,
-    0.684761, 0.260587, 0.733843, 0.426337, 0.532126, 0.655947, 0.510283,
-    0.364938, 0.552296, 0.762060, 0.360770, 0.052184, 0.840864, 0.127741,
-    0.689611, 0.300560, 0.320230, 0.241689, 0.372612, 0.472813, 0.967107,
-    0.929884, 0.252993, 0.992958, 0.742849, 0.411894, 0.345896, 0.770270,
-    0.572115, 0.658990, 0.814392, 0.655808, 0.420486, 0.707766, 0.345577,
-    0.975158, 0.085844, 0.406723, 0.249006, 0.238066, 0.539499, 0.145692,
-    0.790438, 0.168272, 0.230688, 0.057680, 0.571479, 0.740323, 0.066511,
-    0.489331, 0.318142, 0.492005, 0.589285, 0.132762, 0.636211, 0.046943,
-    0.332692, 0.462977, 0.288413, 0.866029, 0.322398, 0.070890, 0.418203,
-    0.476348, 0.784088, 0.918616, 0.971825, 0.687118, 0.119708, 0.226636,
-    0.739284, 0.164853, 0.567597, 0.948301, 0.253904, 0.454577, 0.630131,
-    0.797070, 0.069375, 0.062262, 0.181825, 0.514047, 0.579143, 0.347091,
-    0.790777, 0.249278, 0.041634, 0.302402, 0.692700, 0.223413, 0.806465,
-    0.255903, 0.078892, 0.196589, 0.233383, 0.438091, 0.133392, 0.873997,
-    0.187271, 0.777030, 0.369699, 0.892954, 0.791136, 0.568050, 0.271141,
-    0.550761, 0.438786, 0.966893, 0.695801, 0.625005, 0.646452, 0.847563,
-    0.206998, 0.480985, 0.149400, 0.125530, 0.576586, 0.184683, 0.119176,
-    0.215631, 0.154857, 0.888609, 0.251622, 0.675261, 0.155464, 0.353164,
-    0.907869, 0.196696, 0.109431, 0.930597, 0.817032, 0.075295, 0.760376,
-    0.463851, 0.244921, 0.108898, 0.363699] ),
-
-  ([0.490799, 0.225929, 0.074892, 0.299295, 0.397198, 0.393933, 0.135197,
-    0.595447, 0.837336, 0.225318, 0.868160, 0.699576, 0.888455, 0.430280,
-    0.082522, 0.270516, 0.534074, 0.653493, 0.045015, 0.866939, 0.412214,
-    0.461928, 0.850429, 0.240822, 0.002838, 0.233283, 0.934324, 0.172216,
-    0.786401, 0.850764, 0.509842, 0.001007, 0.403821, 0.611042, 0.209449,
-    0.512284, 0.350383, 0.251167, 0.712882, 0.331492, 0.233283, 0.501053,
-    0.642750, 0.485702, 0.125431, 0.067263, 0.509201, 0.286843, 0.046144,
-    0.455184, 0.984191, 0.193701, 0.099704, 0.534806, 0.287484, 0.808802,
-    0.303781, 0.257302, 0.965209, 0.665822, 0.638356, 0.428144, 0.841853,
-    0.964843, 0.346568, 0.942930, 0.427839, 0.910703, 0.018830, 0.392499,
-    0.563128, 0.811274, 0.491501, 0.443617, 0.578448, 0.591876, 0.090976,
-    0.900815, 0.755394, 0.881619, 0.255013, 0.856624, 0.366649, 0.328623,
-    0.062166, 0.835719, 0.077364, 0.299783, 0.700522, 0.339396, 0.989319,
-    0.621662, 0.407453, 0.696799, 0.108737, 0.518509, 0.911039, 0.629048,
-    0.519395, 0.403943, 0.904782, 0.432417, 0.041688, 0.682455, 0.586871,
-    0.186987, 0.659810, 0.216529, 0.795068, 0.896878, 0.497147, 0.616626,
-    0.768395, 0.968383, 0.622394, 0.009156, 0.067385, 0.932310, 0.466384,
-    0.439619, 0.683523, 0.816675, 0.131870, 0.566332, 0.869289, 0.075869,
-    0.377178, 0.801874, 0.720511, 0.483139, 0.554643, 0.557756, 0.041597,
-    0.891690, 0.285531, 0.748955, 0.525468, 0.271493, 0.152684, 0.214423,
-    0.778893, 0.927824, 0.191748, 0.209876, 0.225135, 0.307291, 0.462600,
-    0.629200, 0.414502, 0.298441, 0.482101, 0.110355, 0.774560, 0.432508,
-    0.799402, 0.682699, 0.330760, 0.890835, 0.495071, 0.111087, 0.429548,
-    0.725181, 0.885434, 0.594012, 0.994079, 0.197241, 0.212867, 0.971038,
-    0.344646, 0.643666, 0.604266, 0.096530, 0.115024, 0.772210, 0.077700,
-    0.535691, 0.295450, 0.796472, 0.879727, 0.238716, 0.933805, 0.314280,
-    0.933409, 0.350383, 0.526536, 0.336650, 0.679617, 0.809870, 0.630024,
-    0.373333, 0.091556, 0.898587, 0.723991, 0.981353, 0.144749, 0.390881,
-    0.858089, 0.682424, 0.523148, 0.465102, 0.112980, 0.656240, 0.842891,
-    0.030122, 0.407239, 0.114841, 0.174810, 0.624500, 0.680746, 0.765282,
-    0.147374, 0.544084, 0.986877, 0.266182, 0.410352, 0.354198, 0.523759,
-    0.084964, 0.741539, 0.443220, 0.136418, 0.661367, 0.577044, 0.772942,
-    0.320780, 0.284127, 0.246986, 0.482833, 0.260842, 0.586688, 0.697104,
-    0.503922, 0.930418],
-   [0.424107, 0.396879, 0.414405, 0.114626, 0.785829,
-    0.223161, 0.220193, 0.579817, 0.719536, 0.172066, 0.875931, 0.125967,
-    0.394629, 0.199909, 0.343574, 0.187285, 0.027203, 0.308855, 0.855927,
-    0.876132, 0.397154, 0.704915, 0.341795, 0.949075, 0.098719, 0.354898,
-    0.976726, 0.321007, 0.223962, 0.124901, 0.175442, 0.971870, 0.143232,
-    0.219022, 0.142665, 0.053376, 0.474999, 0.543850, 0.804155, 0.310526,
-    0.791216, 0.762469, 0.169269, 0.528699, 0.985355, 0.087431, 0.175909,
-    0.577205, 0.625587, 0.768158, 0.096223, 0.503537, 0.413709, 0.885578,
-    0.191869, 0.926045, 0.329703, 0.186974, 0.282816, 0.604256, 0.109594,
-    0.178356, 0.753140, 0.517298, 0.515606, 0.216674, 0.820059, 0.804815,
-    0.611976, 0.631029, 0.803835, 0.591237, 0.322586, 0.052500, 0.328980,
-    0.123051, 0.620348, 0.532733, 0.144982, 0.391361, 0.613410, 0.383974,
-    0.734064, 0.532324, 0.344537, 0.422938, 0.254770, 0.530569, 0.153824,
-    0.835986, 0.547887, 0.832646, 0.901160, 0.830598, 0.935647, 0.287002,
-    0.598803, 0.108118, 0.799591, 0.405487, 0.543971, 0.689053, 0.329327,
-    0.383579, 0.390946, 0.614205, 0.349351, 0.048845, 0.904713, 0.143100,
-    0.771536, 0.357421, 0.459892, 0.389907, 0.224094, 0.376756, 0.948369,
-    0.888373, 0.273341, 0.992956, 0.780531, 0.400960, 0.424054, 0.878922,
-    0.436259, 0.647822, 0.800395, 0.634784, 0.492485, 0.799851, 0.479985,
-    0.964370, 0.058900, 0.276129, 0.348107, 0.391172, 0.603799, 0.216043,
-    0.688422, 0.219302, 0.464335, 0.091783, 0.600059, 0.873305, 0.044057,
-    0.450227, 0.399348, 0.499331, 0.611188, 0.133346, 0.474435, 0.073997,
-    0.290723, 0.628574, 0.407430, 0.898788, 0.407404, 0.074780, 0.427978,
-    0.480693, 0.685756, 0.861848, 0.948614, 0.789383, 0.103810, 0.242024,
-    0.591603, 0.202827, 0.707913, 0.928032, 0.219192, 0.375436, 0.620618,
-    0.740555, 0.085314, 0.073262, 0.123595, 0.291393, 0.559089, 0.284462,
-    0.905447, 0.173849, 0.075588, 0.443385, 0.643536, 0.251822, 0.598107,
-    0.282495, 0.110525, 0.149146, 0.151177, 0.353747, 0.285400, 0.869472,
-    0.224384, 0.648134, 0.328993, 0.908896, 0.810594, 0.513033, 0.234783,
-    0.575107, 0.211473, 0.963435, 0.609522, 0.609734, 0.516709, 0.787513,
-    0.218430, 0.318520, 0.172837, 0.092019, 0.536853, 0.163634, 0.178079,
-    0.368606, 0.184779, 0.929009, 0.159243, 0.748073, 0.172109, 0.597596,
-    0.901627, 0.175661, 0.128399, 0.923317, 0.852674, 0.072980, 0.825466,
-    0.662855, 0.122188, 0.163042, 0.256912] )]
diff --git a/ghc/tests/programs/okeefe_neural/Makefile b/ghc/tests/programs/okeefe_neural/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/record_upd/Main.hs b/ghc/tests/programs/record_upd/Main.hs
deleted file mode 100644 (file)
index 3b6b3ae..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{-     The purpose of this is to test that record update is
-       sufficiently polymorphic.  See comments with
-       tcExpr (RecordUpd) in TcExpr.lhs
--}
-
-module Main where
-
-data T a b c d  = MkT1 { op1 :: a, op2 :: b }
-              | MkT2 { op1 :: a, op3 :: c }
-              | MkT3 { op4 :: a, op5 :: d }
-
-update1 :: a2 -> T a b c d -> T a2 b c d2
-update1 x t = t { op1 = x }
-       -- NB: the MkT3.op4 case doesn't constrain the result because
-       -- it doesn't have an op1 field
-
-update2 :: a2 -> T a b c d -> T a2 b2 c2 d
-update2 x t = t { op4 = x }
-
-main = print (op4 $ 
-             update2 True $ 
-             MkT3 { op4 = op2 $
-                          update1 (1::Int) $
-                          MkT1 { op1 = True }
-             })
diff --git a/ghc/tests/programs/record_upd/Makefile b/ghc/tests/programs/record_upd/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/record_upd/record_upd.stdout b/ghc/tests/programs/record_upd/record_upd.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/programs/rittri/Main.hs b/ghc/tests/programs/rittri/Main.hs
deleted file mode 100644 (file)
index e62c8a4..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-infixr ->!,=\
-
--- auxiliary functions -----------------------------------------------------
-
-g u v w (x:y:z) = i(v x y)(u x y (w z) z)(x:w(y:z))
-g u v w [x]    = [x,512]
-q u v w nil    = u : 95 : z v : w
-
-long = several.length
-((->!),(=\))=(map,($))
-a          = g q f
-y          = (-)32
-z          = (+)32
-several            = (>)2
-fairlySmall = (<)64
-notTooSmall = (>)91
-justRight   = (==)95
-notTooBig   = (<)96
-veryBig            = (>)123
-goodSize x  =foldr(&&)
-  otherwise =\($x)->![notTooBig,veryBig]
-f y z      =fairlySmall(z)&&goodSize(y)&&notTooSmall(z)
-i cond th el=if(cond)then(th)else(el)
-toBeIsToDoAndToDoIsToBeSaidConFuTse
-
--- main functions ----------------------------------------------------------
-
-  g  = interact$map
-           toEnum.g.map
-           fromEnum
-main =
- toBeIsToDoAndToDoIsToBeSaidConFuTse(let h=a;t=x where x x=i(long x)x(h t x)
-                                                      q v w x z = - y w:x
-                                                      a = g q f
-                                                      f x y = justRight x
-                                                            && goodSize y
-                                    in t)
-
--- rittri@cs.chalmers.se ---------------------------------------------------
diff --git a/ghc/tests/programs/rittri/Makefile b/ghc/tests/programs/rittri/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/rittri/rittri.stdin b/ghc/tests/programs/rittri/rittri.stdin
deleted file mode 100644 (file)
index 84e5ba1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-infixr ->!,=\
-
--- auxiliary functions -----------------------------------------------------
-
-g u v w (x:y:z) = i(v x y)(u x y (w z) z)(x:w(y:z))
-g u v w [x]    = [x,512]
-q u v w nil    = u : 95 : z v : w
-
-long = several.length
-((->!),(=\))=(map,($))
-a          = g q f
-y          = (-)32
-z          = (+)32
-several            = (>)2
-fairlySmall = (<)64
-notTooSmall = (>)91
-justRight   = (==)95
-notTooBig   = (<)96
-veryBig            = (>)123
-goodSize x  =foldr(&&)
-  otherwise =\($x)->![notTooBig,veryBig]
-f y z      =fairlySmall(z)&&goodSize(y)&&notTooSmall(z)
-i cond th el=if(cond)then(th)else(el)
-toBeIsToDoAndToDoIsToBeSaidConFuTse
-
--- main functions ----------------------------------------------------------
-
-  g  = interact$map
-           chr.g.map
-           ord
-main =
- toBeIsToDoAndToDoIsToBeSaidConFuTse(let h=a;t=x where x x=i(long x)x(h t x)
-                                                      q v w x z =- y w:x
-                                                      a = g q f
-                                                      f x y = justRight x
-                                                            && goodSize y
-                                    in t)
-
--- rittri@cs.chalmers.se ---------------------------------------------------
diff --git a/ghc/tests/programs/rittri/rittri.stdout b/ghc/tests/programs/rittri/rittri.stdout
deleted file mode 100644 (file)
index c904cda..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-infixr ->!,=\
-
--- auxiliary functions -----------------------------------------------------
-
-g u v w (x:y:z) = i(v x y)(u x y (w z) z)(x:w(y:z))
-g u v w [x]    = [x,512]
-q u v w nil    = u : 95 : z v : w
-
-long = several.length
-((->!),(=\))=(map,($))
-a          = g q f
-y          = (-)32
-z          = (+)32
-several            = (>)2
-fairly_small = (<)64
-not_too_small = (>)91
-just_right   = (==)95
-not_too_big   = (<)96
-very_big           = (>)123
-good_size x  =foldr(&&)
-  otherwise =\($x)->![not_too_big,very_big]
-f y z      =fairly_small(z)&&good_size(y)&&not_too_small(z)
-i cond th el=if(cond)then(th)else(el)
-to_be_is_to_do_and_to_do_is_to_be_said_con_fu_tse
-
--- main functions ----------------------------------------------------------
-
-  g  = interact$map
-           chr.g.map
-           ord
-main =
- to_be_is_to_do_and_to_do_is_to_be_said_con_fu_tse(let h=a;t=x where x x=i(long x)x(h t x)
-                                                      q v w x z =- y w:x
-                                                      a = g q f
-                                                      f x y = just_right x
-                                                            && good_size y
-                                    in t)
-
--- rittri@cs.chalmers.se ---------------------------------------------------
diff --git a/ghc/tests/programs/sanders_array/Main.hs b/ghc/tests/programs/sanders_array/Main.hs
deleted file mode 100644 (file)
index 491a46b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-{-
-From: Paul Sanders <psanders@srd.bt.co.uk>
-To: partain
-Subject: A puzzle for you
-Date: Mon, 28 Oct 91 17:02:19 GMT
-
-I'm struggling with the following code fragment at the moment:
--}
-
-import Array -- 1.3
-import Ix    -- 1.3
-
-conv_list :: (Ix a, Ix b) => [a] -> [b] -> [[c]] -> Array (a,b) c -> Array (a,b) c
-conv_list [] _ _ ar = ar
-conv_list _ _ [] ar = ar
-conv_list (r:rs) cls (rt:rts) ar
-      = conv_list rs cls rts ar'
-        where ar' = conv_elems r cls rt ar
-
-conv_elems :: (Ix a, Ix b) => a -> [b] -> [c] -> Array (a,b) c -> Array (a,b) c
-conv_elems row [] _ ar = ar
-conv_elems _ _ [] ar = ar
-conv_elems row (col:cls) (rt:rts) ar
-      = conv_elems row cls rts ar'
-        where ar' = ar // [((row,col), rt)]
-
-ar :: Array (Int, Int) Int
-ar = conv_list [(1::Int)..(3::Int)] [(1::Int)..(3::Int)] ar_list init_ar
-     where init_ar = array (((1::Int),(1::Int)),((3::Int),(3::Int))) []
-
-
-ar_list :: [[Int]] -- WDP
-ar_list = [[1,2,3],
-           [6,7,8],
-           [10,12,15]]
-
-main = putStrLn (show ar)
-
-{-
-What it tries to do is turn a list of lists into a 2-d array in an incremental
-fashion using 2 nested for-loops. It compiles okay on the prototype compiler
-but gives a segmentation fault when it executes. I know I can define in the
-array in one go (and I have done) but, for my piece of mind, I want to get this
-way working properly.
-
-Is it a bug in the prototype or is there a glaringly obvious error in my code
-which I've been stupid to spot ????
-
-Hoping its the latter,
-
-Paul.
--}
diff --git a/ghc/tests/programs/sanders_array/Makefile b/ghc/tests/programs/sanders_array/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/sanders_array/sanders_array.stdout b/ghc/tests/programs/sanders_array/sanders_array.stdout
deleted file mode 100644 (file)
index d3405a7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-array ((1,1),(3,3)) [((1,1),1),((1,2),2),((1,3),3),((2,1),6),((2,2),7),((2,3),8),((3,1),10),((3,2),12),((3,3),15)]
diff --git a/ghc/tests/programs/seward-space-leak/Main.lhs b/ghc/tests/programs/seward-space-leak/Main.lhs
deleted file mode 100644 (file)
index 327118d..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-{-
-
-This test runs for a Long Time (10mins for the registerised version)
-and allocates 3.4Gbytes.  It also hammers the GC; with -H16M it spend
-40% of the time in the GC.
-
-
-
-Date: Sun, 25 Oct 92 16:38:12 GMT
-From: Julian Seward (DRL PhD) <sewardj@uk.ac.man.cs>
-Message-Id: <9210251638.AA21153@r6b.cs.man.ac.uk>
-To: partain@uk.ac.glasgow.dcs
-Subject: Space consumption in 0.09 produced binary
-Cc: sewardj@uk.ac.man.cs, simonpj@uk.ac.glasgow.dcs
-
-Folks,
-
-At the risk of wasting even more of your valuable time, here is
-a small problem I ran into:
-
-The program (XXXX.lhs) listed below runs in constant space (about 4k)
-in both Gofer and hbc 0.998.5.  When compiled with 0.09, it runs out
-of heap in seconds (4 meg heap).
-
-The program builds a gigantic list of things (CDSs, in fact), I believe
-at least 100,000 long, and searches to find out if a particular CDS is
-present.  The CDS list is generated lazily, and should be thrown away
-as it goes, until apply_cds is found (see the bottom of the listing).
-Gofer and hbc behave as expected, but I suspect ghc is holding onto 
-the complete list unnecessarily.
-
-I include XXXX.stat as supporting evidence.
-
-Jules
-
-(compiled hence:
-ghc9 -v -O -gc-ap -flet-float -Rgc-stats -Rmax-heapsize 14M -o XXXX XXXX.lhs
-)
-
------------------------------------------------------------------------
-
-XXXX +RTS -S 
-
-Collector: APPEL  HeapSize: 4,194,304 (bytes)
-
-  Alloc   Live   Live   Astk   Bstk OldGen   GC    GC     TOT     TOT  Page Flts  Collec  Resid
-  bytes   bytes    %   bytes  bytes  roots  user  elap    user    elap   GC  TOT   tion   %heap
-2097108 1119672  53.4     52    132 1119616  0.33  0.35    1.01    1.15    0    0   Minor
-1537300  918200  59.7     48    128 918188  0.26  0.31    1.76    1.95    0    0   Minor
-1078216  654212  60.7     56    160 652612  0.19  0.18    2.29    2.46    0    0   Minor
- 751108  442140  58.9     52    108 442140  0.12  0.12    2.64    2.84    0    0   Minor
-3134224 2935044  93.6     52    108         1.49  1.50    4.13    4.34    0    0  *MAJOR* 70.0%
- 629612  376848  59.9     52    132 376836  0.11  0.11    4.44    4.64    0    0   Minor
- 441184  265100  60.1     96    200 264416  0.08  0.07    4.66    4.86    0    0   Minor
- 308640  204072  66.1     56    160 199476  0.06  0.05    4.81    5.01    0    0   Minor
-3781064 3687092  97.5     56    160         1.81  1.85    6.62    6.86    0    0  *MAJOR* 87.9%
- 253600  160584  63.3     52    108 160584  0.05  0.04    6.75    6.98    0    0   Minor
- 173312  112344  64.8     56    160 110304  0.03  0.03    6.83    7.07    0    0   Minor
- 117128   77260  66.0     36    140  74112  0.01  0.02    6.88    7.13    0    0   Minor
-4037280 3985284  98.7     36    140         1.96  1.98    8.85    9.11    0    0  *MAJOR* 95.0%
-
--------------------------------------------------------------------------
--}
-
-> module Main where
-
-%============================================================
-%============================================================
-
-\section{A CDS interpreter}
-
-\subsection{Declarations}
-
-Second attempt at a CDS interpreter.  Should do
-loop detection correctly in the presence of higher order functions.
-
-The types allowed are very restrictive at the mo.
-
-> data Type = Two
->           | Fn [Type]
-
-Now, we also have to define CDSs and selectors.
-\begin{itemize}
-\item
-@Empty@ is a non-legitimate CDS, denoting no value at all.  We use
-it as an argument in calls to other CDSs denoting that 
-the particular argument is not really supplied.
-\item
-@Par@ is similarly a non-legit CDS, but useful for constructing
-selectors.  It simply denotes the parameter specified (note
-parameter numbering starts at 1).
-\item
-@Zero@ and @One@ are constant valued CDSs.
-\item 
-@Call@.
-Calls to other functions are done with @Call@, which expects
-the callee to return @Zero@ or @One@, and selects the relevant
-branch.  The @Tag@s identify calls in the dependancy list.
-Although a @Call@ is a glorified @Case@ statement, the only allowed
-return values are @Zero@ and @One@.  Hence the @CDS CDS@ continuations
-rather than the more comprehensive @(AList Return CDS)@.
-We require arguments to be fully disassembled.
-\item @Case@
-Case selectors can only be of the following form:
-\begin{itemize}
-\item
-   @[Par n]@  if the n'th parameter is not a function space.
-\item
-   @[Par n, v1 ... vn]@ if the n'th parameter is a function space of
-                      arity n.  The v's may be only @Empty@, @Zero@,
-                      @One@, or @Par n@.
-\end{itemize}
-\end{itemize}
-We also have a @Magic@ CDS which is a load of mumbo-jumbo for use
-in enumeration of and compilation to CDSs.  Of no significance 
-whatever here.
-
-> data CDS = Empty
->          | Par Int
->          | Zero
->          | One
->          | Case [CDS] (AList Return CDS)
->          | Call String Tag [CDS] CDS CDS
->          | Magic
->
-> type AList a b = [(a, b)]
->
-> type Tag = Int
-
-> instance Eq CDS where
->    (Par n1) == (Par n2) = n1 == n2
->    Zero == Zero = True
->    One == One = True
->    (Case sels1 rets1) == (Case sels2 rets2) = sels1 == sels2 && 
->                                               rets1 == rets2
->    (Call f1 t1 sels1 a1 b1) == (Call f2 t2 sels2 a2 b2)
->       = f1 == f2 && t1 == t2 && sels1 == sels2 && a1 == a2 && b1 == b2
->    Magic == Magic = True
->    _ == _ = False
-
-
-A @Return@ is a temporary thing used to decide which way to go at
-a @Case@ statement.
-
-> data Return = RZero
->             | ROne
->             | RP Int
-
-> instance Eq Return where
->    RZero == RZero  = True
->    ROne == ROne = True
->    (RP p1) == (RP p2) = p1 == p2
->    _ == _ = False
-
-We need a code store, which gives out a fresh instance of a CDS
-as necessary.  ToDo: Need to rename call sites?  I don't think so.
-
-> type Code = AList String CDS
-
-%============================================================
-%============================================================
-
-\subsection{The evaluator}
-Main CDS evaluator takes
-\begin{itemize}
-\item the code store
-\item the dependancy list, a list of @Tag@s of calls which are
-      currently in progress
-\item the current arguments
-\item the CDS fragment currently being worked on
-\end{itemize}
-
-> type Depends = [Tag]
->
-> eval :: Code -> Depends -> [CDS] -> CDS -> CDS
-
-Evaluating a constant valued CDS is trivial.  There may be arguments
-present -- this is not a mistake.
-
-> eval co de args Zero = Zero
-> eval co de args One  = One
-
-Making a call is also pretty simple, because we assume
-that all non-functional arguments are presented as literals,
-and all functional values have already been dismantled (unless
-they are being passed unchanged in the same position in a recursive call
-to the same function, something for the compiler to detect).
-
-Two other issues are at work here.  Guided by the selectors,
-we copy the args to make a set of args for the call.  However, if an
-copied arg is Empty, the call cannot proceed, so we return the CDS as-is.
-Note that an Empty *selector* is not allowed in a Call (although it is
-in a Case).
-
-The second issue arises if the call can go ahead.  We need to check the
-tag on the call just about to be made with the tags of calls already in 
-progress (in de) to see if we are looping.  If the tag has already been
-encountered, the result of the call is Zero, so the Zero alternative is
-immediately selected.
-
-> eval co de args cds@(Call fname tag params alt0 alt1)
->   = let (copied_an_empty, callee_args) = copy_args args params
->         augmented_de      = tag : de
->         callee_code       = lkup co fname
->         callee_result     = eval co augmented_de callee_args callee_code
->         been_here_before  = tag `elem` de
->     in
->         if    copied_an_empty
->         then  cds
->         else
->         if    been_here_before
->         then  eval co augmented_de args alt0
->         else  case callee_result of
->                  Zero -> eval co de args alt0
->                  One  -> eval co de args alt1
->                  _    -> error "Bad callee result"
-
-Case really means "evaluate".  
-
-   - make sure first selector is non-Empty.  If so, return CDS as-is.
-
-   - Copy other args.  If Empty is *copied*, return CDS as-is.
-     Otherwise, call evaluator and switch on head of result.
-
-Note about switching on the head of the result.  We expect to see
-*only* the following as results:
-
-   Zero
-   One
-   Case [Param m, rest]
-
-in which case switching is performed on
-
-   Zero
-   One
-   Case (Param m)
-
-ToDo: what happens if a Call turns up ???
-
-> eval co de args cds@(Case ((Par n):ps) alts)
->   = let (copied_an_empty, new_args) = copy_args args ps
->         functional_param = args !! (n-1)
->     in  if    functional_param == Empty || 
->               copied_an_empty
->         then  cds
->         else  eval co de args 
->                    (lkup alts (get_head 
->                                    (eval co de new_args functional_param)))
-
-Auxiliary for evaluating Case expressions.
-
-> get_head Zero                  = RZero
-> get_head One                   = ROne
-> get_head (Case ((Par n):_) _)  = RP n
-
-Copy args based on directions in a list of selectors.
-Also returns a boolean which is True if an Empty has been
-*copied*.  An Empty *selector* simply produces Empty in the
-corresponding output position.
-
-> copy_args :: [CDS] -> [CDS] -> (Bool, [CDS])
->
-> copy_args args params
->   = case cax False params [] of
->        (empty_copied, res) -> (empty_copied, reverse res)
->     where
->        cax empty [] res = (empty, res)
->        cax empty (Zero:ps) res = cax empty ps (Zero:res)
->        cax empty (One:ps) res = cax empty ps (One:res)
->        cax empty (Empty:ps) res = cax empty ps (Empty:res)
->        cax empty ((Par n):ps) res
->           = case args !! (n-1) of
->                Empty -> cax True ps (Empty:res)
->                other -> cax empty ps (other:res)
-
-> lkup env k = head ( [v | (kk,v) <- env, kk == k] ++ 
->                       [error ( "Can't look up " ) ] )
-
-%============================================================
-%============================================================
-
-%============================================================
-%============================================================
-
-Something to make running tests easier ...
-
-> eval0 fname args = eval test [] args (lkup test fname)
->
-> two = [Zero, One]
-
-Now for some test data ...
-
-> test
->  =
->  [
->    ("add",     add_cds),
->    ("apply",   apply_cds),
->    ("k0",      k0_cds),
->    ("id",      id_cds),
->    ("k1",      k1_cds),
->    ("kkkr",    kkkr_cds),
->    ("kkkl",    kkkl_cds),
->    ("apply2",  apply2_cds)
->  ]
->
-
-Constant Zero function.
-
-> k0_cds
->   = Case [Par 1]
->         [(RZero, Zero),
->          (ROne,  Zero)]
->
-
-Identity.
-
-> id_cds
->   = Case [Par 1]
->         [(RZero, Zero),
->          (ROne,  One)]
-
-Constant One function.
-
-> k1_cds
->   = Case [Par 1]
->         [(RZero, One),
->          (ROne,  One)]
-
-Strict in both of two arguments, for example (+).
-
-> add_cds
->  =    Case [Par 1]
->          [(RZero, Case [Par 2]
->                        [(RZero, Zero),
->                         (ROne,  Zero)
->                        ]),
->           (ROne, Case [Par 2]
->                       [(RZero, Zero),
->                        (ROne, One)
->                       ])
->          ]
-
-The (in)famous apply function.
-
-> apply_cds
->  = Case [Par 1, Empty]
->        [(RZero, Zero),
->         (ROne, One),
->         (RP 1, Case [Par 2]
->                    [(RZero, Case [Par 1, Zero]
->                                 [(RZero, Zero),
->                                  (ROne, One)]),
->                     (ROne,  Case [Par 1, One]
->                                 [(RZero, Zero),
->                                  (ROne, One)])
->                    ])
->        ]
-
-The inverse K-combinator: K x y = y
-
-> kkkr_cds
->  = Case [Par 2]
->        [(RZero, Zero),
->         (ROne, One)
->        ]
-
-The standard K-combinator, defined thus: K x y = K-inverse y x.
-Purpose of this is to test function calling.
-
-> kkkl_cds
->  = Case [Par 1]
->        [(RZero, Case [Par 2]
->                     [(RZero, Call "kkkr" 101 [Zero, Zero] Zero One),
->                      (ROne,  Call "kkkr" 102 [One, Zero]  Zero One)
->                     ]),
->         (ROne,  Case [Par 2]
->                     [(RZero, Call "kkkr" 103 [Zero, One]  Zero One),
->                      (ROne,  Call "kkkr" 104 [One, One]   Zero One)
->                     ])
->        ]
-
-Apply a 2-argument function (apply2 f x y = f x y).
-
-> apply2_cds
->  = Case [Par 1, Empty, Empty]
->        [(RZero, Zero),
->         (ROne, One),
->         (RP 1, Case [Par 2]
->               [(RZero, Case [Par 1, Zero, Empty]
->                            [(RZero, Zero),
->                             (ROne, One),
->                             (RP 2, Case [Par 3]
->                                        [(RZero, Case [Par 1, Zero, Zero]
->                                                [(RZero, Zero),
->                                                 (ROne, One)]),
->                                         (ROne, Case [Par 1, Zero, One]
->                                                [(RZero, Zero),
->                                                 (ROne, One)])
->                                        ])
->                            ]),
->                (ROne,  Case [Par 1, One, Empty]
->                            [(RZero, Zero),
->                             (ROne, One),
->                             (RP 2, Case [Par 3]
->                                        [(RZero, Case [Par 1, One, Zero]
->                                                [(RZero, Zero),
->                                                 (ROne, One)]),
->                                         (ROne, Case [Par 1, One, One]
->                                                [(RZero, Zero),
->                                                 (ROne, One)])
->                                        ])
->                            ])
->               ]),
->         (RP 2, Case [Par 3]
->               [(RZero, Case [Par 1, Empty, Zero]
->                            [(RZero, Zero),
->                             (ROne, One),
->                             (RP 1, Case [Par 2]
->                                        [(RZero, Case [Par 1, Zero, Zero]
->                                                [(RZero, Zero),
->                                                 (ROne, One)]),
->                                         (ROne, Case [Par 1, One, Zero]
->                                                [(RZero, Zero),
->                                                 (ROne, One)])
->                                        ])
->                            ]),
->                (ROne,  Case [Par 1, Empty, One]
->                            [(RZero, Zero),
->                             (ROne, One),
->                             (RP 1, Case [Par 2]
->                                        [(RZero, Case [Par 1, Zero, One]
->                                                [(RZero, Zero),
->                                                 (ROne, One)]),
->                                         (ROne, Case [Par 1, One, One]
->                                                [(RZero, Zero),
->                                                 (ROne, One)])
->                                        ])
->                            ])
->               ])
->           ]
-
-Simple, isn't it!
-
-%============================================================
-%============================================================
-
-%============================================================
-%============================================================
-
-Enumeration of all CDSs of a given type.
-
-Define n-ary branched trees.  These are used to hold the 
-possible prefixes of function arguments, something essential
-when enumerating higher-order CDSs. ToDo: translate to English
-
-> data NTree a = NLeaf
->              | NBranch a [NTree a]
-
-The enumeration enterprise involves some mutual recursion
-when it comes to higher-order functions.  We define the
-top-level enumerator function, for trivial cases, hence:
-
-> enumerate :: Type -> [CDS]
->
-> enumerate Two = [Zero, One]
-> enumerate (Fn ats) = 
->    expand_templates (traverse (length ats) (gen_pfx_trees ats))
-
-Enumerating a function space is tricky.  In summary:
-
-   - Generate the prefix trees for each argument.  
-     For non-function arguments this trivial, but for
-     function-valued arguments this means a call to the
-     enumerator to get all the possible values of the
-     (argument) function space.
-
-   - Traverse the prefix trees, generating a series of
-     "templates" for functions.
-
-   - Expand each template thus generated into a genuine CDS.
-     Each template denotes a group of CDSs, all of
-     the same "shape" and differing only in the constants
-     they return.  The Magic and RMagic constructors are
-     used for these purposes.
-
-Generating prefix trees.  For a Two-argument, is easy:
-
-> gen_pfx_trees :: [Type] -> [NTree [CDS]]
-> 
-> gen_pfx_trees ts = zipWith gen_pfx_tree ts [1 .. length ts]
->
-> gen_pfx_tree :: Type -> Int -> NTree [CDS]
->
-> gen_pfx_tree Two n = NBranch [Par n] []
-
-Note all prefixes are missing the initial (Par n) selector ...
-
-For a function arg
-
-   - enumerate each of the *function's* args
-
-   - starting with a selector [Empty, ...., Empty],
-     make a tree wherein at each level, branching is 
-     achieved by filling in every Empty with every value
-     of that argument type.  ToDo: fix this
-
-> gen_pfx_tree (Fn arg_types) n
->   = let number_args = length arg_types
->         enumed_args = map enumerate arg_types
->         initial_sel = take number_args (repeat Empty)
->         init_tree   = NBranch ((Par n):initial_sel) []
->     in
->         expand_pfx_tree number_args number_args n enumed_args init_tree
-
-@expand_pfx_tree@ expands a tree until there are no Emptys
-at the leaves.  Its first parameter is the number of Emptys
-in the tree it has been given; when zero, expansion is complete.
-The second parameter is the number of Emptys in the original
-tree (equal to the arity of the function being enumerated).
-Third number is the argument number in the top-level function,
-needed to make the initial "Par n" selector.
-Also needs to carry around the enumeration of the function's
-arguments.
-
-> expand_pfx_tree :: Int -> Int -> Int -> [[CDS]] -> NTree [CDS] -> NTree [CDS]
->
-> expand_pfx_tree 0 w i enums tree = tree
->
-> expand_pfx_tree n w i enums (NBranch sels [])
->   = let indices = [0 .. w - 1]
->         n_minus_1 = n - 1
->         new_sels = concat (map expand_sel indices)
->         expand_sel n
->           = case sels !! (n+1) of
->                Empty -> map (upd (n+1) sels) (enums !! n)
->                other -> []
->         mk_trivial_tree sel = NBranch sel []
->     in
->         NBranch sels (map (expand_pfx_tree n_minus_1 w i enums . mk_trivial_tree) 
->                        new_sels)
-
-> upd :: Int -> [a] -> a -> [a]
-> upd 0 (y:ys) x = x:ys
-> upd n (y:ys) x = y:upd (n-1) ys x
-
-In the second phase, the prefix trees are traversed to generate
-CDS templates (full of Magic, but no Zero or One).
-The first arg is the number of arguments, and the
-second the prefix trees for each argument.
-
-> traverse :: Int -> [NTree [CDS]] -> [CDS]
-
-Each pfxtree denotes a selector, one for each argument, plus a load
-of more specific selectors.  So for each argument, one manufactures
-all possible sub-cds using the sub-selectors as the set Z.
-You then take this arg's selector, and manufacture a load of CDSs
-like this:
-\begin{verbatim}
-   Case this_selector
-      0 -> z | z <- Z
-      1 -> z | z <- Z
-      Par n -> z | z <- Z for each n in [1 .. length this_selector]
-                          satisfying this_selector !! n == Empty
-\end{verbatim}
-
-
-> traverse n pfxtrees
->   = Magic : concat (map doOne [0 .. n - 1])
->     where
->        doOne i = traverse_arg n i pfxtrees (pfxtrees !! i) 
-
-@traverse_arg@ makes the CDSs corresponding to descending a
-particular argument, the number of which is given as its second
-parameter.  It also gets the complete set of pfxtrees and the one
-to descend.  Note that having descended in the given argument, we
-check its sub-selectors.  If none, (an empty list), this replaced
-by [NLeaf] to make everything work out.  A NLeaf selector
-is a dummy which generates no CDSs.
-
-> traverse_arg n i pfxtrees NLeaf
->   = []
-
-> traverse_arg n i pfxtrees (NBranch this_selector subsidiary_selectors_init)
->   = let subsidiary_selectors 
->            = case subsidiary_selectors_init of 
->                 [] -> [NLeaf]; (_:_) -> subsidiary_selectors_init
->         subsidiary_pfxtrees = map (upd i pfxtrees) subsidiary_selectors
->         par_requests = preq 1 [] this_selector
->         preq n acc [] = acc
->         preq n acc (Empty:rest) = preq (n+1) ((RP n):acc) rest
->         preq n acc (other:rest) = preq (n+1)         acc  rest
->         subsidiary_cdss = concat (map (traverse n) subsidiary_pfxtrees)
->         all_poss_rhss = splat (2 + length par_requests) subsidiary_cdss
->         all_poss_returns = [RZero,  ROne] ++ par_requests
->     in
->         [Case this_selector (zip all_poss_returns rhs)
->         | rhs <- all_poss_rhss]
->
-> splat :: Int -> [a] -> [[a]]
-> splat 0 set = [[]]
-> splat n set = [x:xs | x <- set, xs <- splat (n-1) set]
-
-The final stage in the game is to fill in all the @Magic@s
-with constants.  A template with $n$ @Magic@s presently generates
-@2^n@ CDSs, obtained by all possible combinations of
-filling each @Magic@ in with @Zero@ or @One@.  To do this we
-first need to count the @Magic@s.
-
-> count_magic :: CDS -> Int
-> 
-> count_magic Magic             = 1
-> count_magic (Case sels alts)  = sum (map (count_magic.snd) alts)
-
-We don't expect to see anything else at this stage.
-Now make $2^n$ lists, each of length $n$, each with a different
-sequence of @Zero@s and @One@s.  Use these to label the 
-@Magic@s in the template.
-
-> label_cds :: CDS -> [CDS] -> ([CDS], CDS)
->
-> label_cds Magic (l:ls) = (ls, l)
-> label_cds (Case sels alts) ls
->   = case f ls alts of (l9, alts_done) -> (l9, Case sels alts_done)
->     where
->        f l0 []     = (l0, [])
->        f l0 (a:as) = let (l1, a_done)  = lalt l0 a
->                          (l2, as_done) = f l1 as
->                      in  (l2, a_done:as_done)
->        lalt l0 (ret, cds) = case label_cds cds l0 of 
->                               (l1, cds_done) -> (l1, (ret, cds_done))
-
-Finally:
-
-> expand_templates :: [CDS] -> [CDS]
->
-> expand_templates ts
->    = concat (map f ts)
->      where
->         f tem = map (snd . label_cds tem) 
->                     (splat (count_magic tem) [Zero, One])
-
---> testq tt = (layn . map show' . nub) (enumerate tt)
-
-> main = putStrLn (show (apply_cds `myElem` (enumerate (Fn [Fn [Two], Two]))))
->
-> i `myElem` [] = False
-> i `myElem` (x:xs) = if i == x then True else i `myElem` xs 
-
-%============================================================
-%============================================================
diff --git a/ghc/tests/programs/seward-space-leak/Makefile b/ghc/tests/programs/seward-space-leak/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/seward-space-leak/README b/ghc/tests/programs/seward-space-leak/README
deleted file mode 100644 (file)
index b43c8a7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-I thought this crashed if compiled without -O, but I
-can't make it do so.
-
-       glhc -darity-checks -C Main.hs
-
-then
-
-       glhc -g -v -optc-O Main.hc -o cg023-reg
-
-It eats 3Gbytes and runs for 10mins but doesn't crash.
-
-
-SLPJ 17 june 93
diff --git a/ghc/tests/programs/seward-space-leak/cg023.stdout b/ghc/tests/programs/seward-space-leak/cg023.stdout
deleted file mode 100644 (file)
index c1f22fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-False
\ No newline at end of file
diff --git a/ghc/tests/programs/seward-space-leak/seward-space-leak.stdout b/ghc/tests/programs/seward-space-leak/seward-space-leak.stdout
deleted file mode 100644 (file)
index bc59c12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-False
diff --git a/ghc/tests/programs/strict_anns/Main.hs b/ghc/tests/programs/strict_anns/Main.hs
deleted file mode 100644 (file)
index b2ee82d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- This test checks that constructors with strictness annotations
--- at least parse correctly.  In GHC 2.02 they didn't!
-
-module Main where
-data Foo1 = Crunch1 ! Int ! Int Int deriving( Show )
-
-data Foo2 = Crunch2 ! Int Int Int   deriving( Show )
-
-main = do
-       print (Crunch1 (1+1) (2+2) (3+3))
-       print (Crunch2 (1+1) (2+2) (3+3))
-  
diff --git a/ghc/tests/programs/strict_anns/Makefile b/ghc/tests/programs/strict_anns/Makefile
deleted file mode 100644 (file)
index 39dc227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/strict_anns/strict_anns.stdout b/ghc/tests/programs/strict_anns/strict_anns.stdout
deleted file mode 100644 (file)
index 0f6e62e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Crunch1 2 4 6
-Crunch2 2 4 6
diff --git a/ghc/tests/programs/zhang_ccall/MAIL b/ghc/tests/programs/zhang_ccall/MAIL
deleted file mode 100644 (file)
index 5592db0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-From: Xiaoming Zhang <X.M.Zhang@uk.ac.swansea>
-Date: Thu, 26 May 94 16:48:44 BST
-Message-Id: <1276.9405261548@csterra.swan.ac.uk>
-To: partain@uk.ac.glasgow.dcs
-Subject: ghc
-
-Hi Will,
-
-Have you got any update for ghc 0.20 recently?  The problem
-I am experiencing is that I cannot receive values from C
-subroutines.  The included program highlights the problem.
-The Haskell program gets a 0 instead of 1.  Any comment?
-By the way, is these any work going on over there in running
-Haskell on PVM?
-
-Regards,
-
-Xiaoming
-
------------------------
-
-Haskell program:
-
-module Main where
-
-import PreludePrimIO
-
-main =
-       appendChan stdout (shows res "\n")
-       exit done
-       where
-       res = unsafePerformPrimIO (
-               ca `thenPrimIO` \r -> returnPrimIO r)
-       ca :: PrimIO Float
-       ca = _ccall_ nn
-
-C subroutine:
-
-float nn () {return 1;}
-
---------------------
diff --git a/ghc/tests/programs/zhang_ccall/Main.hs b/ghc/tests/programs/zhang_ccall/Main.hs
deleted file mode 100644 (file)
index 2cfc081..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -#include "ccall.h" #-}
--- The 'bug' here was the omission of prototypes for
--- a C function peddling floats.
-module Main where
-
-import IOExts
-
-main = putStr (shows res "\n")
-       where
-       res = unsafePerformIO ca
-       ca :: IO Float
-       ca = _ccall_ nn
diff --git a/ghc/tests/programs/zhang_ccall/Makefile b/ghc/tests/programs/zhang_ccall/Makefile
deleted file mode 100644 (file)
index f6932fb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SRC_HC_OPTS += -fglasgow-exts -package lang
-
-all :: runtest
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/programs/zhang_ccall/ccall.c b/ghc/tests/programs/zhang_ccall/ccall.c
deleted file mode 100644 (file)
index 3602fe2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-float nn () {return 1;}
diff --git a/ghc/tests/programs/zhang_ccall/ccall.h b/ghc/tests/programs/zhang_ccall/ccall.h
deleted file mode 100644 (file)
index 8279c8e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-extern float nn();
diff --git a/ghc/tests/programs/zhang_ccall/zhang_ccall.stdout b/ghc/tests/programs/zhang_ccall/zhang_ccall.stdout
deleted file mode 100644 (file)
index d3827e7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.0
diff --git a/ghc/tests/reader/Makefile b/ghc/tests/reader/Makefile
deleted file mode 100644 (file)
index af26578..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile should_fail
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/reader/should_compile/Makefile b/ghc/tests/reader/should_compile/Makefile
deleted file mode 100644 (file)
index a7bb484..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-read012_HC_OPTS += -O -funfold-casms-in-hi-file -fglasgow-exts -ohi T1.hi
-read013_HC_OPTS += -O -funfold-casms-in-hi-file -fglasgow-exts
-read014_HC_OPTS += -Wall
-read022_HC_OPTS = -fglasgow-exts
-read024_HC_OPTS = -fglasgow-exts
-
-CLEAN_FILES += T1.hi T2.hi MyList.hi
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/reader/should_compile/read001.hs b/ghc/tests/reader/should_compile/read001.hs
deleted file mode 100644 (file)
index d0a84ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! import qualified Prelude should leave (), [] etc in scope
-
-module ShouldCompile where
-
-import qualified Prelude
-
-f :: Prelude.IO ()
-f = Prelude.return ()
diff --git a/ghc/tests/reader/should_compile/read002.hs b/ghc/tests/reader/should_compile/read002.hs
deleted file mode 100644 (file)
index 5b069fe..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! tests fixity reading and printing
-module ShouldCompile where
-
-infixl 1 `f`
-infixr 2 \\\
-infix  3 :==>
-infix  4 `MkFoo`
-
-data Foo = MkFoo Int | Float :==> Double
-
-x `f` y = x
-
-(\\\) :: (Eq a) => [a] -> [a] -> [a]
-(\\\) xs ys =  xs
diff --git a/ghc/tests/reader/should_compile/read002.stderr b/ghc/tests/reader/should_compile/read002.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/reader/should_compile/read003.hs b/ghc/tests/reader/should_compile/read003.hs
deleted file mode 100644 (file)
index afc3a21..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
--- !!! Testing layout rule
-module ShouldCompile where
-
-l1 :: IO ()
-l1 = do
-  return a
-  where
-   a = ()
-
-l2 :: IO ()
-l2 = do
-  return a
- where
-  a = ()
-
-l3 :: IO ()
-l3 = do
-  return a
-   where
-   a = ()
diff --git a/ghc/tests/reader/should_compile/read004.hs b/ghc/tests/reader/should_compile/read004.hs
deleted file mode 100644 (file)
index 0741d0c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module ShouldCompile where
-
-{-
-From: Kevin Hammond <kh>
-To: partain
-Subject: Re:  parsing problem w/ queens
-Date: Wed, 9 Oct 91 17:31:46 BST
-
-OK, I've fixed that little problem by disallowing,
--}
-
-f x = x + if True then 1 else 2
-g x = x + 1::Int
-
--- (the conditional/sig need to be parenthesised).  If this is
--- problematic, let me know!
diff --git a/ghc/tests/reader/should_compile/read005.hs b/ghc/tests/reader/should_compile/read005.hs
deleted file mode 100644 (file)
index 6e2c575..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldCompile where
-
--- !!! Empty comments terminating a file..
-main = print "Hello" --
diff --git a/ghc/tests/reader/should_compile/read006.hs b/ghc/tests/reader/should_compile/read006.hs
deleted file mode 100644 (file)
index f04b29b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! Testing handling of troublesome constructor name (:::)
-module MyList (MyList(Empty, (:::))) where
-
-data MyList a =   Empty
-                | (MyList a) ::: (MyList a)
diff --git a/ghc/tests/reader/should_compile/read007.hs b/ghc/tests/reader/should_compile/read007.hs
deleted file mode 100644 (file)
index 55a4332..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-module ShouldCompile where
-
-import MyList
-
-myLength :: MyList a -> Int
-myLength Empty = 0
-myLength (x ::: xs) = 1 + myLength xs
-
diff --git a/ghc/tests/reader/should_compile/read007.stderr b/ghc/tests/reader/should_compile/read007.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/reader/should_compile/read008.hs b/ghc/tests/reader/should_compile/read008.hs
deleted file mode 100644 (file)
index 20060b0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldCompile where
-
-{-# SPECIALISE f :: Int -> Int #-}
-f n = n + 1
diff --git a/ghc/tests/reader/should_compile/read009.hs b/ghc/tests/reader/should_compile/read009.hs
deleted file mode 100644 (file)
index 5294012..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! combining undeclared infix operators
-module ShouldCompile where
-
--- should default to 'infixl 9'
-
-test = let f x y = x+y in 1 `f` 2 `f` 3
-
diff --git a/ghc/tests/reader/should_compile/read010.hs b/ghc/tests/reader/should_compile/read010.hs
deleted file mode 100644 (file)
index d20f5fc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! Infix record constructor.
-module ShouldCompile where
-
-data Rec = (:<-:) { a :: Int, b :: Float }
diff --git a/ghc/tests/reader/should_compile/read010.stderr b/ghc/tests/reader/should_compile/read010.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/reader/should_compile/read011.hs b/ghc/tests/reader/should_compile/read011.hs
deleted file mode 100644 (file)
index 7e20d46..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! do & where interaction
-module ShouldCompile where
-
-f1 :: IO a -> IO [a]
-f1 x = do
-  v <- x
-  return [v]
- where
-  g x = [x,x]
-
-f2 :: IO a -> IO [a]
-f2 x = do
-  v <- x
-  return (g v)
-   where
-    g x = [x,x]
-
-f3 :: IO a -> IO [a]
-f3 x = do
-  v <- x
-  return (g v)
-  where
-   g x = [x,x]
-
diff --git a/ghc/tests/reader/should_compile/read012.hs b/ghc/tests/reader/should_compile/read012.hs
deleted file mode 100644 (file)
index a667c9e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module T1 where
-malloc :: IO Int
-malloc = _casm_ ``%r = 42;''
diff --git a/ghc/tests/reader/should_compile/read013.hs b/ghc/tests/reader/should_compile/read013.hs
deleted file mode 100644 (file)
index 214e20f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module T2 where
-import T1
-blah :: IO Int
-blah = malloc
diff --git a/ghc/tests/reader/should_compile/read014.hs b/ghc/tests/reader/should_compile/read014.hs
deleted file mode 100644 (file)
index 55fc053..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Empty export lists are legal (and useful.)
-module ShouldCompile () where
-
-ng1 x y = negate y
-
-instance (Num a, Num b) => Num (a,b)
-  where
-   negate (a,b) = (ng 'c' a, ng1 'c' b)   where  ng x y = negate y
diff --git a/ghc/tests/reader/should_compile/read014.stderr b/ghc/tests/reader/should_compile/read014.stderr
deleted file mode 100644 (file)
index 9430e68..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-
-read014.hs:4: Warning: Definition but no type signature for `ng1'
-
-read014.hs:4: Warning: Defined but not used: x
-
-read014.hs:8: Warning: Defined but not used: x
-
-read014.hs:6:
-    Warning: No explicit method nor default method for `*'
-            In the instance declaration for `Num (a, b)'
-
-read014.hs:6:
-    Warning: No explicit method nor default method for `+'
-            In the instance declaration for `Num (a, b)'
-
-read014.hs:6:
-    Warning: No explicit method nor default method for `signum'
-            In the instance declaration for `Num (a, b)'
-
-read014.hs:6:
-    Warning: No explicit method nor default method for `abs'
-            In the instance declaration for `Num (a, b)'
-
-read014.hs:6:
-    Warning: No explicit method nor default method for `fromInteger'
-            In the instance declaration for `Num (a, b)'
diff --git a/ghc/tests/reader/should_compile/read015.hs b/ghc/tests/reader/should_compile/read015.hs
deleted file mode 100644 (file)
index 7ba6140..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
--- !!! Testing whether the parser likes empty declarations..
-module ShouldCompile where { ;;;;;x=let{;;;;;y=2;;;;}in y;;;;;}
diff --git a/ghc/tests/reader/should_compile/read016.hs b/ghc/tests/reader/should_compile/read016.hs
deleted file mode 100644 (file)
index c333c40..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Checking that both import lists and 'hiding' lists might
--- !!! be empty.
-module ShouldCompile where
-
-import List  ()
-import List  hiding ()
-
-x :: Int
-x = 1
-
diff --git a/ghc/tests/reader/should_compile/read017.hs b/ghc/tests/reader/should_compile/read017.hs
deleted file mode 100644 (file)
index 4349cb2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! Checking that empty declarations are permitted.
-module ShouldCompile where
-
-
-class Foo a where
-
-class Foz a
-
-x = 2 where 
-y = 3
-
-instance Foo Int where
-
-f = f where g = g where
-type T = Int
diff --git a/ghc/tests/reader/should_compile/read018.hs b/ghc/tests/reader/should_compile/read018.hs
deleted file mode 100644 (file)
index e4abfb6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! Checking that empty contexts are permitted.
-module ShouldCompile where
-
-data () => Foo a = Foo a
-
-newtype () => Bar = Bar Int
-
-f :: () => Int -> Int
-f = (+1)
-
-
-class () => Fob a where
-
-instance () => Fob Int where
-instance () => Fob Float
-
diff --git a/ghc/tests/reader/should_compile/read019.hs b/ghc/tests/reader/should_compile/read019.hs
deleted file mode 100644 (file)
index 3de6a9b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Checking what's legal in the body of a class declaration.
-module ShouldCompile where
-
-class Foo a where {
-  (--<>--) :: a -> a -> Int  ;
-  infixl 5 --<>-- ;
-  (--<>--) _ _ = 2 ; -- empty decl at the end.
-};
-
-
diff --git a/ghc/tests/reader/should_compile/read020.hs b/ghc/tests/reader/should_compile/read020.hs
deleted file mode 100644 (file)
index 50efcf3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! Checking that qualified method names are legal in instance body.
-module ShouldCompile where
-
-import Prelude hiding (Eq, (==))
-import Prelude as P (Eq,(==))
-
-data Foo = Foo Int Integer
-
-instance P.Eq Foo where
-  (Foo a1 b1) P.== (Foo a2 b2) = a1 P.== a2 && b1 P.== b2
-
-
-
diff --git a/ghc/tests/reader/should_compile/read021.hs b/ghc/tests/reader/should_compile/read021.hs
deleted file mode 100644 (file)
index 8d5856e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! Empty export list
-
-module ShouldCompile() where
-
-instance Show (a->b) where
-  show f = "<<function>>"
diff --git a/ghc/tests/reader/should_compile/read022.hs b/ghc/tests/reader/should_compile/read022.hs
deleted file mode 100644 (file)
index 1ed76f3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldCompile where
-
-f (x :: Int) = x + 1
diff --git a/ghc/tests/reader/should_compile/read023.hs b/ghc/tests/reader/should_compile/read023.hs
deleted file mode 100644 (file)
index 3410afe..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module ShouldCompile where
-
--- M.<keyword> isn't a qualified identifier
-f  = Just.let x=id in x
-
--- ---------------------------------------------------------------------------
--- we changed the behaviour of this one in GHC, but the following test
--- is strictly speaking legal Haskell:
-
--- f' = Just.\1 where (.\) = ($)
-
--- -----------------------------------------------------
--- M.{as,hiding,qualified} *are* qualified identifiers:
-
-g  = ShouldCompile.as
-
--- ---------------------------------------------------------------------------
--- special symbols (!, -) can be qualified to make varids.
-
-g' = (ShouldCompile.!)
-
-as x = x
-(!) x = x
diff --git a/ghc/tests/reader/should_compile/read024.hs b/ghc/tests/reader/should_compile/read024.hs
deleted file mode 100644 (file)
index 10e31cd..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--- !!! checking that special ids are correctly handled.
-module ShouldCompile where
-
-as :: [as]
-as = [head as]
-
-qualified :: [qualified]
-qualified = [head qualified]
-
-hiding :: [hiding]
-hiding = [head hiding]
-
-export :: [export]
-export = [head export]
-
-label :: [label]
-label = [head label]
-
-dynamic :: [dynamic]
-dynamic = [head dynamic]
-
-unsafe :: [unsafe]
-unsafe = [head unsafe]
-
-stdcall :: [stdcall]
-stdcall = [head stdcall]
-
-ccall :: [ccall]
-ccall = [head ccall]
-
diff --git a/ghc/tests/reader/should_compile/read025.hs b/ghc/tests/reader/should_compile/read025.hs
deleted file mode 100644 (file)
index bda06c1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Check the handling of 'qualified' and 'as' clauses
-module ShouldCompile where
-
-import List as L ( intersperse ) 
-
-x = L.intersperse
-
-y = intersperse
-
diff --git a/ghc/tests/reader/should_compile/read026.hs b/ghc/tests/reader/should_compile/read026.hs
deleted file mode 100644 (file)
index 0ea695d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldCompile where
-
-(<>)          :: (a -> Maybe b) -> (b -> Maybe c) -> (a -> Maybe c)
-(m1 <> m2) a1  =  case m1 a1 of
-                      Nothing -> Nothing
-                      Just a2 -> m2 a2
diff --git a/ghc/tests/reader/should_compile/read027.hs b/ghc/tests/reader/should_compile/read027.hs
deleted file mode 100644 (file)
index a689345..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-module ShouldCompile where
-
-infix 5 |- 
-infix 9 :=
-
-data Equal = Char := Int
-
--- fails in GHC (all versions), due to not doing fixity resolution on
--- the lhs before deciding which is the function symbol.
-
-(|-) :: Int -> Equal -> Bool
-0 |- x:=y = 1 |- x:=y      -- XXX fails here
-2 |- (x:=y) = 0 |- x:=y
-_ |-  _     = False  
diff --git a/ghc/tests/reader/should_compile/read028.hs b/ghc/tests/reader/should_compile/read028.hs
deleted file mode 100644 (file)
index 1f193a4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldCompile where
-
-data T a b = (:^:) a b
diff --git a/ghc/tests/reader/should_compile/read029.hs b/ghc/tests/reader/should_compile/read029.hs
deleted file mode 100644 (file)
index 1a9e5c1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! Special Ids and ops
-
--- The special ids 'as', 'qualified' and 'hiding' should be 
--- OK in both qualified and unqualified form.
--- Ditto special ops
-
-module ShouldCompile where
-import Prelude hiding ( (-) )
-
-as       = ShouldCompile.as
-hiding   = ShouldCompile.hiding
-qualified = ShouldCompile.qualified
-x!y      = x ShouldCompile.! y
-x-y      = x ShouldCompile.- y
diff --git a/ghc/tests/reader/should_compile/read030.hs b/ghc/tests/reader/should_compile/read030.hs
deleted file mode 100644 (file)
index 2688302..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Infix decls w/ infix data constructors
-
--- GHC used to barf on this...
-
-module ShouldCompile where
-
-infix 2 |-, |+
-
-ps  |-  q:qs   = undefined
-ps  |+  p:q:qs = undefined
diff --git a/ghc/tests/reader/should_fail/Makefile b/ghc/tests/reader/should_fail/Makefile
deleted file mode 100644 (file)
index 3bedd70..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_fail.mk
-
-SRC_HC_OPTS += -ddump-parsed
-
-read013_HC_OPTS += -fglasgow-exts
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/reader/should_fail/read001.hs b/ghc/tests/reader/should_fail/read001.hs
deleted file mode 100644 (file)
index 74704a9..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
--- !!! this module supposedly includes one of each Haskell construct
-
--- HsImpExp stuff
-
-module OneOfEverything (
-       fixn, 
-       FooData,
-       FooDataB(..),
-       FooDataC( .. ),
-       EqTree(EqLeaf, EqBranch),
-       EqClass(..),
-       OrdClass(orda, ordb),
-       module OneC ,
-       module OneOfEverything
-    ) where
-
-import Prelude
-import IO              ( putStr )
-import System hiding   ( getArgs )
-import Monad
-
--- HsDecls stuff
-
-infix  6 `fixn`
-infixl 7 +#
-infixr 8 `fixr`
-
-fixn x y = x
-fixl x y = x
-fixr x y = x
-
-type Pair a b = (a, b)
-
-data FooData = FooCon Int
-
-data FooDataB = FooConB Double
-
-data (Eq a) => EqTree a = EqLeaf a | EqBranch (EqLeaf a) (EqLeaf a)
-
-class (Eq a) => EqClass a where
-    eqc :: a -> Char
-    eqc x = '?'
-
-class (Ord a) => OrdClass a where
-    orda :: a -> Char
-    ordb :: a -> Char
-    ordc :: a -> Char
-
-instance (Eq a) => EqClass (EqTree a) where
-    eqc x = 'a'
-
-default (Integer, Rational)
-
--- HsBinds stuff
-
-singlebind x = x
-
-bindwith :: (OrdClass a, OrdClass b) => a -> b -> b
-bindwith a b = b
-
-reca a = recb a
-recb a = reca a
-
-(~(a,b,c)) | nullity b = a
-          | nullity c  = a
-          | otherwise  = a
-          where
-           nullity = null
-
--- HsMatches stuff
-
-mat a b c d | foof a b = d
-           | foof a c = d
-           | foof b c = d
-           where
-               foof a b = a == b
-
--- HsExpr stuff
-expr a b c d
-  = a
-  + (:) a b
-  + (a : b)
-  + (1 - 'c' - "abc" - 1.293)
-  + ( \ x y z -> x ) 42
-  + (9 *)
-  + (* 8)
-  + (case x of
-       [] | null x     -> 99
-          | otherwise  -> 98
-          | True       -> 97
-          where
-            null x = False
-    )
-  + [ z | z <- c, isSpace z ]
-  + let y = foo
-    in  y
-  + [1,2,3,4]
-  + (4,3,2,1)
-  + (4 :: Num a => a)
-  + (if 42 == 42.0 then 1 else 4)
-  + [1..]
-  + [2,4..]
-  + [3..5]
-  + [4,8..999]
-
--- HsPat stuff
-f _ x 1 1.93 'c' "dog" ~y z@(Foo a b) (c `Bar` d) [1,2] (3,4) (n+42) = y
-
--- HsLit stuff -- done above
-
--- HsTypes stuff
-g :: (Num a, Eq b) => Foo a -> [b] -> (a,a,a) -> b
-g x y z = head y
diff --git a/ghc/tests/reader/should_fail/read001.stderr b/ghc/tests/reader/should_fail/read001.stderr
deleted file mode 100644 (file)
index e414b0b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-read001.hs:5: Unknown module in export list: module `OneC'
-
-read001.hs:5: Type constructor or class not in scope: `FooDataC'
-
-read001.hs:25: Variable not in scope: `+#'
-
-read001.hs:38: Type constructor or class not in scope: `EqLeaf'
-
-read001.hs:38: Type constructor or class not in scope: `EqLeaf'
-
-read001.hs:87: Variable not in scope: `x'
-
-read001.hs:88: Variable not in scope: `x'
-
-read001.hs:94: Variable not in scope: `isSpace'
-
-read001.hs:95: Variable not in scope: `foo'
-
-read001.hs:107: Data constructor not in scope: `Foo'
-
-read001.hs:107: Data constructor not in scope: `Bar'
-
-read001.hs:112: Type constructor or class not in scope: `Foo'
diff --git a/ghc/tests/reader/should_fail/read001.stdout b/ghc/tests/reader/should_fail/read001.stdout
deleted file mode 100644 (file)
index a4d6758..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-
-==================== Parser ====================
-module OneOfEverything (
-       module OneOfEverything, module OneC, OrdClass(orda, ordb),
-       EqClass(..), EqTree(EqLeaf, EqBranch), FooDataC(..), FooDataB(..),
-       FooData, fixn
-    ) where
-import Prelude
-import IO (putStr)
-import System hiding (getArgs)
-import Monad
-bindwith :: (OrdClass a, OrdClass b) => a -> b -> b
-g :: (Num a, Eq b) => Foo a -> [b] -> (a, a, a) -> b
-g x y z = head y
-f _
-  x
-  1
-  1.93
-  'c'
-  "dog"
-  ~y
-  (z@(Foo a b))
-  (c Bar d)
-  [1, 2]
-  (3, 4)
-  ((n+42))
-    = y
-expr a b c d
-       = ((((((((a + ((:) a b)) + (a : b))
-              + (((1 - 'c') - "abc") - 1.293))
-             + ((\ x y z -> x) 42))
-            + ((9 *)))
-           + ((* 8)))
-          + (case x of
-               PrelBase.[]
-                 | null x -> 99
-                 | otherwise -> 98
-                 | True -> 97
-                 where
-                     null x = False))
-         + ([z | z <- c, isSpace z]))
-        + (let y = foo
-           in
-             (((((((y + [1, 2, 3, 4]) + (4, 3, 2, 1)) + (4 :: (Num a) => a))
-                 + (if 42 == 42.0 then 1 else 4))
-                + ([1 .. ]))
-               + ([2, 4 .. ]))
-              + ([3 .. 5]))
-             + ([4, 8 .. 999]))
-mat a b c d
-      | foof a b = d
-      | foof a c = d
-      | foof b c = d
-      where
-         foof a b = a == b
-(~(a, b, c))
-    | nullity b = a
-    | nullity c = a
-    | otherwise = a
-    where
-       nullity = null
-recb a = reca a
-reca a = recb a
-bindwith a b = b
-singlebind x = x
-fixr x y = x
-fixl x y = x
-fixn x y = x
-infix 6 fixn
-infixl 7 +#
-infixr 8 fixr
-type Pair a b = (a, b)
-data FooData = FooCon Int
-data FooDataB = FooConB Double
-data (Eq a) => EqTree a = EqLeaf a | EqBranch (EqLeaf a) (EqLeaf a)
-class (Eq a) => EqClass a where {
-    eqc = :: a -> Char; Just eqc x = '?' }
-class (Ord a) => OrdClass a where {
-    orda = :: a -> Char; ordb = :: a -> Char; ordc = :: a -> Char;
-    Just
-    }
-instance (Eq a) => {EqClass (EqTree a)} where
-    []
-    eqc x = 'a'
-default (Integer, Rational)
-
-
diff --git a/ghc/tests/reader/should_fail/read002.hs b/ghc/tests/reader/should_fail/read002.hs
deleted file mode 100644 (file)
index 869cb86..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
--- !!! newlines in strings aren't allowed
-
-f = "
-"
diff --git a/ghc/tests/reader/should_fail/read002.stderr b/ghc/tests/reader/should_fail/read002.stderr
deleted file mode 100644 (file)
index c7c56e7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read002.hs:5: error in character literal
diff --git a/ghc/tests/reader/should_fail/read003.hs b/ghc/tests/reader/should_fail/read003.hs
deleted file mode 100644 (file)
index 8595312..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Irrefutable patterns + guards
-module Read003 where
-
-~(a,b,c) | nullity b   = a
-        | nullity c    = a
-        | otherwise    = a
-        where
-           nullity = null
diff --git a/ghc/tests/reader/should_fail/read003.stderr b/ghc/tests/reader/should_fail/read003.stderr
deleted file mode 100644 (file)
index 13f34c5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-read003.hs:4:
-    Occurs check: cannot construct the infinite type: t = (t, [a], t1)
-       Expected type: (t, [a], t1)
-       Inferred type: t
-    In a pattern binding: a
diff --git a/ghc/tests/reader/should_fail/read003.stdout b/ghc/tests/reader/should_fail/read003.stdout
deleted file mode 100644 (file)
index e1291a6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-==================== Parser ====================
-module Read003 where
-~(a, b, c)
-    | nullity b = a
-    | nullity c = a
-    | otherwise = a
-    where
-       nullity = null
-
-
diff --git a/ghc/tests/reader/should_fail/read004.hs b/ghc/tests/reader/should_fail/read004.hs
deleted file mode 100644 (file)
index f5e1fb4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
--- !!! string gaps
--- !!!
-module Main(main) where
-
------------
-
-main = putStr "\
-
-\Some girls give me money\n\
-
-\Some girls buy me clothes\n\
-
-\..."
-
------------
-
-main2 = putStr "\
-\ \
-..."
-
------------
-
-main3 = putStr "\
-
-\Some girls give me money\n\
--- and here is a comment
-\Some girls buy me clothes\n\
-
-\..."
-
------------
-
-main3 = putStr "\
-{-
-    and here is a nested {- comment -}
--}
-\Some girls give me money\n\
-
-\Some girls buy me clothes\n\
-
-\..."
diff --git a/ghc/tests/reader/should_fail/read004.stderr b/ghc/tests/reader/should_fail/read004.stderr
deleted file mode 100644 (file)
index c133ed0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read004.hs:19: error in character literal
diff --git a/ghc/tests/reader/should_fail/read005.hs b/ghc/tests/reader/should_fail/read005.hs
deleted file mode 100644 (file)
index 8ed88c0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module Tests where
-
--- this char is forbidden
-c = '\&'
diff --git a/ghc/tests/reader/should_fail/read005.stderr b/ghc/tests/reader/should_fail/read005.stderr
deleted file mode 100644 (file)
index 8b0b8c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read005.hs:4: error in character literal
diff --git a/ghc/tests/reader/should_fail/read006.hs b/ghc/tests/reader/should_fail/read006.hs
deleted file mode 100644 (file)
index fa3d867..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Using pattern syntax on RHS
-module ShouldFail where
-
-f :: Int -> Int
-f x = _
-
-g :: Int -> Int
-g x = 2 + 2@_
-
diff --git a/ghc/tests/reader/should_fail/read006.stderr b/ghc/tests/reader/should_fail/read006.stderr
deleted file mode 100644 (file)
index fca9ae6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read006.hs:8: parse error on input `@'
diff --git a/ghc/tests/reader/should_fail/read007.hs b/ghc/tests/reader/should_fail/read007.hs
deleted file mode 100644 (file)
index 4466f17..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Expressions as patterns inside do stmt blocks
-module ShouldFail where
-
-f :: Int -> IO Int
-f x = do
-  (2+2) <- 2
-  return x
-
diff --git a/ghc/tests/reader/should_fail/read007.stderr b/ghc/tests/reader/should_fail/read007.stderr
deleted file mode 100644 (file)
index 72470b1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-read007.hs:6:
-    `+' is not a data constructor
-    In the pattern: 2 + 2
-    In a 'do' expression pattern binding: (2 + 2) <- 2
-    In the definition of `f':
-       do
-         (2 + 2) <- 2
-         return x
diff --git a/ghc/tests/reader/should_fail/read007.stdout b/ghc/tests/reader/should_fail/read007.stdout
deleted file mode 100644 (file)
index c91365d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-==================== Parser ====================
-module ShouldFail where
-f :: Int -> IO Int
-f x = do
-       (2 + 2) <- 2
-       return x
-
-
diff --git a/ghc/tests/reader/should_fail/read008.hs b/ghc/tests/reader/should_fail/read008.hs
deleted file mode 100644 (file)
index 606af91..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldFail where
-
--- strictness annotations on the argument to a newtype constructor
--- are not allowed.
-newtype N a = T ![a]
diff --git a/ghc/tests/reader/should_fail/read008.stderr b/ghc/tests/reader/should_fail/read008.stderr
deleted file mode 100644 (file)
index f056219..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read008.hs:5: parse error on input `!'
diff --git a/ghc/tests/reader/should_fail/read009.hs b/ghc/tests/reader/should_fail/read009.hs
deleted file mode 100644 (file)
index 4642897..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module ShouldFail where
-
--- !!! Do-notation requires an *expression* at the end.
-
-foo = do let foo = True
-            return () 
-           
-
--- Note the let binding at the end!
--- This gave a pattern-match failure in tcStmts in ghc-4.04proto
-
-h x = x
-
-
-
diff --git a/ghc/tests/reader/should_fail/read009.stderr b/ghc/tests/reader/should_fail/read009.stderr
deleted file mode 100644 (file)
index 84aae1d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read009.hs:12: parse error (possibly incorrect indentation)
diff --git a/ghc/tests/reader/should_fail/read009.stdout b/ghc/tests/reader/should_fail/read009.stdout
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/reader/should_fail/read011.hs b/ghc/tests/reader/should_fail/read011.hs
deleted file mode 100644 (file)
index 4642061..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! Test line numbers in presence of string gaps.
-
-main = print "a\
-            \b\
-            \c"
-
-wibble = = -- this is a parse error on line 7
diff --git a/ghc/tests/reader/should_fail/read011.stderr b/ghc/tests/reader/should_fail/read011.stderr
deleted file mode 100644 (file)
index f582cf0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read011.hs:7: parse error on input `='
diff --git a/ghc/tests/reader/should_fail/read012.hs b/ghc/tests/reader/should_fail/read012.hs
deleted file mode 100644 (file)
index 4a78088..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! test parse errors due to tokens inserted by layout
-
--- used to report "Parse error on input `'" in 4.04pl0.
-
-main = let 
-       f = (a,
-       g = 1
-       in f
-
diff --git a/ghc/tests/reader/should_fail/read012.stderr b/ghc/tests/reader/should_fail/read012.stderr
deleted file mode 100644 (file)
index bbfcad3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read012.hs:7: parse error (possibly incorrect indentation)
diff --git a/ghc/tests/reader/should_fail/read013.hs b/ghc/tests/reader/should_fail/read013.hs
deleted file mode 100644 (file)
index 97e926d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module Main where
-
--- !!! unterminated ``
-a = ``s``
diff --git a/ghc/tests/reader/should_fail/read013.stderr b/ghc/tests/reader/should_fail/read013.stderr
deleted file mode 100644 (file)
index 0867e7b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read013.hs:4: unterminated ``
diff --git a/ghc/tests/reader/should_fail/read014.hs b/ghc/tests/reader/should_fail/read014.hs
deleted file mode 100644 (file)
index 23ef795..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-main = f
-  where
-     f = f }
diff --git a/ghc/tests/reader/should_fail/read014.stderr b/ghc/tests/reader/should_fail/read014.stderr
deleted file mode 100644 (file)
index 5f387d3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read014.hs:3: parse error on input `}'
diff --git a/ghc/tests/reader/should_fail/read015.hs b/ghc/tests/reader/should_fail/read015.hs
deleted file mode 100644 (file)
index 6920083..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module Test where
-
--- should fail; doesn't with happy 1.8.
-f = f where b = f
-            c = (b
diff --git a/ghc/tests/reader/should_fail/read015.stderr b/ghc/tests/reader/should_fail/read015.stderr
deleted file mode 100644 (file)
index 4ea7732..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read015.hs:6: parse error (possibly incorrect indentation)
diff --git a/ghc/tests/reader/should_fail/read016.hs b/ghc/tests/reader/should_fail/read016.hs
deleted file mode 100644 (file)
index 493606a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! Infix decls w/ infix data constructors
-
-module ShouldFail where
-
-infix 6 |-
-
-ps  |-  q:qs   = undefined
diff --git a/ghc/tests/reader/should_fail/read016.stderr b/ghc/tests/reader/should_fail/read016.stderr
deleted file mode 100644 (file)
index 0372411..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-read016.hs:7:
-    precedence parsing error
-       cannot mix `|-' [infix 6] and `:' [infixr 5] in the same infix expression
diff --git a/ghc/tests/reader/should_fail/read016.stdout b/ghc/tests/reader/should_fail/read016.stdout
deleted file mode 100644 (file)
index 7c7f529..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-==================== Parser ====================
-module ShouldFail where
-|- ps q : qs = undefined
-infix 6 |-
-
-
diff --git a/ghc/tests/reader/should_fail/read017.hs b/ghc/tests/reader/should_fail/read017.hs
deleted file mode 100644 (file)
index 1d710f5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
--- GHC < 5.01 used to get the line number wrong.
-f (f f) = f
-
-g = g
diff --git a/ghc/tests/reader/should_fail/read017.stderr b/ghc/tests/reader/should_fail/read017.stderr
deleted file mode 100644 (file)
index 06822e4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-read017.hs:4: Parse error in pattern
diff --git a/ghc/tests/rename/Makefile b/ghc/tests/rename/Makefile
deleted file mode 100644 (file)
index 6d5951c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_fail should_compile
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/rename/should_compile/Int10.hi b/ghc/tests/rename/should_compile/Int10.hi
deleted file mode 100644 (file)
index 44c3bf3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-__interface Int10 1 0 where
-__export Int10 T1{C1} T2{T2C1 T2C2} T3{T3C1 T3C2 T3C3} T4{T4C1 T4C2 T4C3 T4C4} T5{T5C1 T5C2 T5C3 T5C4 T5C5} T6{T6C6} T7{T7C6 T7C7} ;
-1 data T1 a = C1 a;
-1 data T2 a b = T2C1 a | T2C2 b ;
-1 data T3 a b c = T3C1 a | T3C2 b | T3C3 c ;
-1 data T4 a b c d = T4C1 a | T4C2 b | T4C3 c | T4C4 d ;
-1 data T5 a b c d e = T5C1 a | T5C2 b | T5C3 c | T5C4 d | T5C5 e ;
-1 data T6 a = T6C6 a ;
-1 data T7 a b = T7C6 a | T7C7 b ;
-1 data T8 a b c = T8C1 a | T8C2 b | T8C3 c ;
-1 data T9 a b c d = T9C1 a | T9C2 b | T9C3 c | T9C4 d ;
-1 data T10 a b c d e = T10C1 a | T10C2 b | T10C3 c | T10C4 d | T10C5 e ;
diff --git a/ghc/tests/rename/should_compile/Makefile b/ghc/tests/rename/should_compile/Makefile
deleted file mode 100644 (file)
index 9614587..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint
-# There used to be a -noC flag, but I removed it because
-# Rn037Help needs to generate an interface file, and
-# if -noC is on I can't see how to.  (Driver grottiness.)
-
-# rn017_HC_OPTS = -hi -hi-with-exports
-# rn025_HC_OPTS = -hi -hi-with-exports
-# Rn037Help_HC_OPTS = -hi
-
-CLEAN_FILES += Confused.hi Foo.hi Imp10.hi Imp100.hi Imp1000.hi \
-       Imp500.hi Main.hi Mod10.hi OK.hi ShouldSucceed.hi Silly.hi Test.hi
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/rename/should_compile/Rn017.hi b/ghc/tests/rename/should_compile/Rn017.hi
deleted file mode 100644 (file)
index d2f07e2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-__interface Rn017 1 0 where
-__export Rn017 a b c Wibble{MkWibble} Wobble ;
-1 data Wibble = MkWibble Wobble ;
-1 data Wobble ;
-1 a :: PrelBase.Int -> PrelBase.Int ;
-1 b :: PrelBase.Int -> PrelBase.Int ;
-1 c :: PrelBase.Int -> PrelBase.Int ;
diff --git a/ghc/tests/rename/should_compile/Rn037Help.hs b/ghc/tests/rename/should_compile/Rn037Help.hs
deleted file mode 100644 (file)
index 64d1224..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module Rn037Help( T(C) ) where
-
-data T = C
diff --git a/ghc/tests/rename/should_compile/rn003.hs b/ghc/tests/rename/should_compile/rn003.hs
deleted file mode 100644 (file)
index bb22583..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module Foo (f) where
--- export food
-f x = x
-
--- !!! weird patterns with no variables
-1  = f 1
-[] = f []
-1  = f (f 1)
-[] = f (f [])
diff --git a/ghc/tests/rename/should_compile/rn003.stderr b/ghc/tests/rename/should_compile/rn003.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn005.hs b/ghc/tests/rename/should_compile/rn005.hs
deleted file mode 100644 (file)
index 623bd78..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! rn005: simplest case: a few non-recursive bindings
-
-module Test where
-
-f = []
-g x = x
-h x y = x
-i x y z = x
diff --git a/ghc/tests/rename/should_compile/rn005.stderr b/ghc/tests/rename/should_compile/rn005.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn006.hs b/ghc/tests/rename/should_compile/rn006.hs
deleted file mode 100644 (file)
index 4f4c0a4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! rn006: two sets of mutually-recursive blobs:
--- !!!  f, g, h are mut rec
--- !!!  i, j, k are mut rec
-
-module Test where
-
-f x = g x x
-i x = j x x
-
-g x y = h x x y
-j x y = k x x y
-
-h x y z = f z
-k x y z = i z
diff --git a/ghc/tests/rename/should_compile/rn006.stderr b/ghc/tests/rename/should_compile/rn006.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn009.hs b/ghc/tests/rename/should_compile/rn009.hs
deleted file mode 100644 (file)
index dbf6966..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-module Imp10 where
-import Int10
diff --git a/ghc/tests/rename/should_compile/rn009.stderr b/ghc/tests/rename/should_compile/rn009.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn010.hs b/ghc/tests/rename/should_compile/rn010.hs
deleted file mode 100644 (file)
index da32cce..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module Imp100 where
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-
diff --git a/ghc/tests/rename/should_compile/rn010.stderr b/ghc/tests/rename/should_compile/rn010.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn011.hs b/ghc/tests/rename/should_compile/rn011.hs
deleted file mode 100644 (file)
index c71a553..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-module Imp1000 where
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-
diff --git a/ghc/tests/rename/should_compile/rn011.stderr b/ghc/tests/rename/should_compile/rn011.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn012.hs b/ghc/tests/rename/should_compile/rn012.hs
deleted file mode 100644 (file)
index a49abc6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-module Imp500 where
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-import Int10
-
diff --git a/ghc/tests/rename/should_compile/rn012.stderr b/ghc/tests/rename/should_compile/rn012.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn013.hs b/ghc/tests/rename/should_compile/rn013.hs
deleted file mode 100644 (file)
index e48c2c5..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module Mod10 where
-
-data T1 a = C1 a
-
-data T2 a b = T2C1 a | T2C2 b
-
-data T3 a b c = T3C1 a | T3C2 b | T3C3 c
-
-data T4 a b c d = T4C1 a | T4C2 b | T4C3 c | T4C4 d
-
-data T5 a b c d e = T5C1 a | T5C2 b | T5C3 c | T5C4 d | T5C5 e
-
-data T6 a = T6C6 a
-
-data T7 a b = T7C6 a | T7C7 b
-
-data T8 a b c = T8C1 a | T8C2 b | T8C3 c
-
-data T9 a b c d = T9C1 a | T9C2 b | T9C3 c | T9C4 d
-
-data T10 a b c d e = T10C1 a | T10C2 b | T10C3 c | T10C4 d | T10C5 e
diff --git a/ghc/tests/rename/should_compile/rn013.stderr b/ghc/tests/rename/should_compile/rn013.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn016.stderr b/ghc/tests/rename/should_compile/rn016.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn017.hs b/ghc/tests/rename/should_compile/rn017.hs
deleted file mode 100644 (file)
index 6694f24..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !! Rexporting
-module Test ( module Test , module Rn017 ) where
-
-import Rn017
-
-f x = x
-
-data Foo = MkFoo
-
-class FOO a where
-    op :: a -> Int
-
-instance FOO Foo where
-    op x = 42
diff --git a/ghc/tests/rename/should_compile/rn018.stderr b/ghc/tests/rename/should_compile/rn018.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn019.hs b/ghc/tests/rename/should_compile/rn019.hs
deleted file mode 100644 (file)
index 4ff7c0d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module Silly (
-       Array.accum
-  ) where
-import qualified Array
diff --git a/ghc/tests/rename/should_compile/rn020.hs b/ghc/tests/rename/should_compile/rn020.hs
deleted file mode 100644 (file)
index 4b9dbde..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- Duplicate fields in record decls
-
-module OK where
-
-data X = A {a :: Int} | B {a :: Int}
-
-f x = x
-
--- data Y = V {a :: Int}
-
--- f y = y
diff --git a/ghc/tests/rename/should_compile/rn022.hs b/ghc/tests/rename/should_compile/rn022.hs
deleted file mode 100644 (file)
index c59b949..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- this is legal, I think (WDP)
-
-module Confused where
-
-import Prelude hiding (otherwise)
-
-otherwise = False
-
-f x | otherwise = 1
-
-g otherwise | otherwise = 2
diff --git a/ghc/tests/rename/should_compile/rn022.stderr b/ghc/tests/rename/should_compile/rn022.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn023.hs b/ghc/tests/rename/should_compile/rn023.hs
deleted file mode 100644 (file)
index 3522ff0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
--- !! This one is fine in Haskell 1.4
---
-module Foo ( Bar(..) ) where { data Bar = Bar X; data X = Y }
diff --git a/ghc/tests/rename/should_compile/rn024.hs b/ghc/tests/rename/should_compile/rn024.hs
deleted file mode 100644 (file)
index ae9cc6b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !! This is fine in Haskell 1.4
---
-module Foo ( Baz(..) ) where 
-
-class Baz a where
-    opx :: Int -> Bar -> a -> a
-
-data Bar = Bar X
-data X = Y
diff --git a/ghc/tests/rename/should_compile/rn025.hs b/ghc/tests/rename/should_compile/rn025.hs
deleted file mode 100644 (file)
index 9eb64e0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! Re-exporting a module whose contents is partially hidden.
-module ShouldCompile ( module List ) where
-
-import List hiding ( sort )
-
diff --git a/ghc/tests/rename/should_compile/rn025.stderr b/ghc/tests/rename/should_compile/rn025.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/rn026.hs b/ghc/tests/rename/should_compile/rn026.hs
deleted file mode 100644 (file)
index fdba3a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that more than imported module can share a local
--- !!! local alias.
-module ShouldCompile where
-
-import qualified List  as X
-import qualified Maybe as X
-
-x :: Ord a => [a] -> [a]
-x = X.sort
-
-y :: Maybe a -> Bool
-y = X.isJust
diff --git a/ghc/tests/rename/should_compile/rn027.hs b/ghc/tests/rename/should_compile/rn027.hs
deleted file mode 100644 (file)
index e9bd760..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that an imported module may still have
--- !!! a local alias without having used 'qualified'.
-module ShouldCompile where
-
-import List  as X
-import Maybe as X
-
-x :: Ord a => [a] -> [a]
-x = X.sort
-
-y :: Maybe a -> Bool
-y = X.isJust
diff --git a/ghc/tests/rename/should_compile/rn028.hs b/ghc/tests/rename/should_compile/rn028.hs
deleted file mode 100644 (file)
index 16e31a4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! Checking that a toplevel declaration 'f' in module M is accessible
--- !!! as both 'f' and 'M.f' within the scope of M. Similarly for imported
--- !!! entities.
-module ShouldCompile where
-
-import List ( sort )
-
-x :: Int
-x = 2
-
-y :: Int
-y = x
-
-z :: Int
-z = ShouldCompile.x
-
-sortOf :: Ord a=> [a] -> [a]
-sortOf = List.sort
diff --git a/ghc/tests/rename/should_compile/rn029.hs b/ghc/tests/rename/should_compile/rn029.hs
deleted file mode 100644 (file)
index 5b87602..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! Checking that lazy name clashing works.
-module ShouldCompile where
-
-import List ( reverse, sort )
-
-sort :: Int    -- Clashes with List.sort, 
-sort = 4       -- but never used, so OK        
-       
-
-reverse :: Int -- Clashes with List.reverse, 
-reverse = 3    -- but the only uses are qualified
-
-x = ShouldCompile.reverse
-
-y = List.reverse
-
-
diff --git a/ghc/tests/rename/should_compile/rn030.hs b/ghc/tests/rename/should_compile/rn030.hs
deleted file mode 100644 (file)
index fdba3a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that more than imported module can share a local
--- !!! local alias.
-module ShouldCompile where
-
-import qualified List  as X
-import qualified Maybe as X
-
-x :: Ord a => [a] -> [a]
-x = X.sort
-
-y :: Maybe a -> Bool
-y = X.isJust
diff --git a/ghc/tests/rename/should_compile/rn031.hs b/ghc/tests/rename/should_compile/rn031.hs
deleted file mode 100644 (file)
index bea26c0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that an imported module may still have
--- !!! a local alias without having used 'qualified'.
-module ShouldCompile where
-
-import List  as X
-import Maybe as X
-
-x :: Ord a => [a] -> [a]
-x = X.sort
-
-y :: Maybe a -> Bool
-y = isJust
diff --git a/ghc/tests/rename/should_compile/rn032.hs b/ghc/tests/rename/should_compile/rn032.hs
deleted file mode 100644 (file)
index 16e31a4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! Checking that a toplevel declaration 'f' in module M is accessible
--- !!! as both 'f' and 'M.f' within the scope of M. Similarly for imported
--- !!! entities.
-module ShouldCompile where
-
-import List ( sort )
-
-x :: Int
-x = 2
-
-y :: Int
-y = x
-
-z :: Int
-z = ShouldCompile.x
-
-sortOf :: Ord a=> [a] -> [a]
-sortOf = List.sort
diff --git a/ghc/tests/rename/should_compile/rn033.hs b/ghc/tests/rename/should_compile/rn033.hs
deleted file mode 100644 (file)
index 87589e9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! Checking that lazy name clashing works
-module ShouldCompile where
-
-import List ( sort )
-
-sort :: Int
-sort = 3
-
-foo :: Int
-foo = ShouldCompile.sort
-
-baz :: (Ord a) => [a] -> [a]
-baz = List.sort
-
diff --git a/ghc/tests/rename/should_compile/rn034.hs b/ghc/tests/rename/should_compile/rn034.hs
deleted file mode 100644 (file)
index b8fc047..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that empty declarations are permitted.
-module ShouldCompile where
-
-
-class Foo a where
-
-class Foz a
-
-x = 2 where 
-y = 3
-
-instance Foo Int where
diff --git a/ghc/tests/rename/should_compile/rn035.hs b/ghc/tests/rename/should_compile/rn035.hs
deleted file mode 100644 (file)
index 3de6a9b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Checking what's legal in the body of a class declaration.
-module ShouldCompile where
-
-class Foo a where {
-  (--<>--) :: a -> a -> Int  ;
-  infixl 5 --<>-- ;
-  (--<>--) _ _ = 2 ; -- empty decl at the end.
-};
-
-
diff --git a/ghc/tests/rename/should_compile/rn036.hs b/ghc/tests/rename/should_compile/rn036.hs
deleted file mode 100644 (file)
index 50efcf3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! Checking that qualified method names are legal in instance body.
-module ShouldCompile where
-
-import Prelude hiding (Eq, (==))
-import Prelude as P (Eq,(==))
-
-data Foo = Foo Int Integer
-
-instance P.Eq Foo where
-  (Foo a1 b1) P.== (Foo a2 b2) = a1 P.== a2 && b1 P.== b2
-
-
-
diff --git a/ghc/tests/rename/should_compile/rn037.hs b/ghc/tests/rename/should_compile/rn037.hs
deleted file mode 100644 (file)
index bd9a9b6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Checking that you can hide a constructor
-module ShouldCompile where
-
-import Rn037Help hiding( C )
-       -- C is the constructor, but we should
-       -- still be able to hide it
-
-f x = Rn037Help.C
-
-
-
-
diff --git a/ghc/tests/rename/should_compile/timing001.hs b/ghc/tests/rename/should_compile/timing001.hs
deleted file mode 100644 (file)
index b84b341..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
--- !!! 500 defns chained together at the top-level
-module Main(main) where
-main = undefined
-a000 = a001
-a001 = a002
-a002 = a003
-a003 = a004
-a004 = a005
-a005 = a006
-a006 = a007
-a007 = a008
-a008 = a009
-a009 = a010
-a010 = a011
-a011 = a012
-a012 = a013
-a013 = a014
-a014 = a015
-a015 = a016
-a016 = a017
-a017 = a018
-a018 = a019
-a019 = a020
-a020 = a021
-a021 = a022
-a022 = a023
-a023 = a024
-a024 = a025
-a025 = a026
-a026 = a027
-a027 = a028
-a028 = a029
-a029 = a030
-a030 = a031
-a031 = a032
-a032 = a033
-a033 = a034
-a034 = a035
-a035 = a036
-a036 = a037
-a037 = a038
-a038 = a039
-a039 = a040
-a040 = a041
-a041 = a042
-a042 = a043
-a043 = a044
-a044 = a045
-a045 = a046
-a046 = a047
-a047 = a048
-a048 = a049
-a049 = a050
-a050 = a051
-a051 = a052
-a052 = a053
-a053 = a054
-a054 = a055
-a055 = a056
-a056 = a057
-a057 = a058
-a058 = a059
-a059 = a060
-a060 = a061
-a061 = a062
-a062 = a063
-a063 = a064
-a064 = a065
-a065 = a066
-a066 = a067
-a067 = a068
-a068 = a069
-a069 = a070
-a070 = a071
-a071 = a072
-a072 = a073
-a073 = a074
-a074 = a075
-a075 = a076
-a076 = a077
-a077 = a078
-a078 = a079
-a079 = a080
-a080 = a081
-a081 = a082
-a082 = a083
-a083 = a084
-a084 = a085
-a085 = a086
-a086 = a087
-a087 = a088
-a088 = a089
-a089 = a090
-a090 = a091
-a091 = a092
-a092 = a093
-a093 = a094
-a094 = a095
-a095 = a096
-a096 = a097
-a097 = a098
-a098 = a099
-a099 = a100
-
-a100 = a101
-a101 = a102
-a102 = a103
-a103 = a104
-a104 = a105
-a105 = a106
-a106 = a107
-a107 = a108
-a108 = a109
-a109 = a110
-a110 = a111
-a111 = a112
-a112 = a113
-a113 = a114
-a114 = a115
-a115 = a116
-a116 = a117
-a117 = a118
-a118 = a119
-a119 = a120
-a120 = a121
-a121 = a122
-a122 = a123
-a123 = a124
-a124 = a125
-a125 = a126
-a126 = a127
-a127 = a128
-a128 = a129
-a129 = a130
-a130 = a131
-a131 = a132
-a132 = a133
-a133 = a134
-a134 = a135
-a135 = a136
-a136 = a137
-a137 = a138
-a138 = a139
-a139 = a140
-a140 = a141
-a141 = a142
-a142 = a143
-a143 = a144
-a144 = a145
-a145 = a146
-a146 = a147
-a147 = a148
-a148 = a149
-a149 = a150
-a150 = a151
-a151 = a152
-a152 = a153
-a153 = a154
-a154 = a155
-a155 = a156
-a156 = a157
-a157 = a158
-a158 = a159
-a159 = a160
-a160 = a161
-a161 = a162
-a162 = a163
-a163 = a164
-a164 = a165
-a165 = a166
-a166 = a167
-a167 = a168
-a168 = a169
-a169 = a170
-a170 = a171
-a171 = a172
-a172 = a173
-a173 = a174
-a174 = a175
-a175 = a176
-a176 = a177
-a177 = a178
-a178 = a179
-a179 = a180
-a180 = a181
-a181 = a182
-a182 = a183
-a183 = a184
-a184 = a185
-a185 = a186
-a186 = a187
-a187 = a188
-a188 = a189
-a189 = a190
-a190 = a191
-a191 = a192
-a192 = a193
-a193 = a194
-a194 = a195
-a195 = a196
-a196 = a197
-a197 = a198
-a198 = a199
-a199 = a200
-
-a200 = a201
-a201 = a202
-a202 = a203
-a203 = a204
-a204 = a205
-a205 = a206
-a206 = a207
-a207 = a208
-a208 = a209
-a209 = a210
-a210 = a211
-a211 = a212
-a212 = a213
-a213 = a214
-a214 = a215
-a215 = a216
-a216 = a217
-a217 = a218
-a218 = a219
-a219 = a220
-a220 = a221
-a221 = a222
-a222 = a223
-a223 = a224
-a224 = a225
-a225 = a226
-a226 = a227
-a227 = a228
-a228 = a229
-a229 = a230
-a230 = a231
-a231 = a232
-a232 = a233
-a233 = a234
-a234 = a235
-a235 = a236
-a236 = a237
-a237 = a238
-a238 = a239
-a239 = a240
-a240 = a241
-a241 = a242
-a242 = a243
-a243 = a244
-a244 = a245
-a245 = a246
-a246 = a247
-a247 = a248
-a248 = a249
-a249 = a250
-a250 = a251
-a251 = a252
-a252 = a253
-a253 = a254
-a254 = a255
-a255 = a256
-a256 = a257
-a257 = a258
-a258 = a259
-a259 = a260
-a260 = a261
-a261 = a262
-a262 = a263
-a263 = a264
-a264 = a265
-a265 = a266
-a266 = a267
-a267 = a268
-a268 = a269
-a269 = a270
-a270 = a271
-a271 = a272
-a272 = a273
-a273 = a274
-a274 = a275
-a275 = a276
-a276 = a277
-a277 = a278
-a278 = a279
-a279 = a280
-a280 = a281
-a281 = a282
-a282 = a283
-a283 = a284
-a284 = a285
-a285 = a286
-a286 = a287
-a287 = a288
-a288 = a289
-a289 = a290
-a290 = a291
-a291 = a292
-a292 = a293
-a293 = a294
-a294 = a295
-a295 = a296
-a296 = a297
-a297 = a298
-a298 = a299
-a299 = a300
-
-a300 = a301
-a301 = a302
-a302 = a303
-a303 = a304
-a304 = a305
-a305 = a306
-a306 = a307
-a307 = a308
-a308 = a309
-a309 = a310
-a310 = a311
-a311 = a312
-a312 = a313
-a313 = a314
-a314 = a315
-a315 = a316
-a316 = a317
-a317 = a318
-a318 = a319
-a319 = a320
-a320 = a321
-a321 = a322
-a322 = a323
-a323 = a324
-a324 = a325
-a325 = a326
-a326 = a327
-a327 = a328
-a328 = a329
-a329 = a330
-a330 = a331
-a331 = a332
-a332 = a333
-a333 = a334
-a334 = a335
-a335 = a336
-a336 = a337
-a337 = a338
-a338 = a339
-a339 = a340
-a340 = a341
-a341 = a342
-a342 = a343
-a343 = a344
-a344 = a345
-a345 = a346
-a346 = a347
-a347 = a348
-a348 = a349
-a349 = a350
-a350 = a351
-a351 = a352
-a352 = a353
-a353 = a354
-a354 = a355
-a355 = a356
-a356 = a357
-a357 = a358
-a358 = a359
-a359 = a360
-a360 = a361
-a361 = a362
-a362 = a363
-a363 = a364
-a364 = a365
-a365 = a366
-a366 = a367
-a367 = a368
-a368 = a369
-a369 = a370
-a370 = a371
-a371 = a372
-a372 = a373
-a373 = a374
-a374 = a375
-a375 = a376
-a376 = a377
-a377 = a378
-a378 = a379
-a379 = a380
-a380 = a381
-a381 = a382
-a382 = a383
-a383 = a384
-a384 = a385
-a385 = a386
-a386 = a387
-a387 = a388
-a388 = a389
-a389 = a390
-a390 = a391
-a391 = a392
-a392 = a393
-a393 = a394
-a394 = a395
-a395 = a396
-a396 = a397
-a397 = a398
-a398 = a399
-a399 = a400
-
-a400 = a401
-a401 = a402
-a402 = a403
-a403 = a404
-a404 = a405
-a405 = a406
-a406 = a407
-a407 = a408
-a408 = a409
-a409 = a410
-a410 = a411
-a411 = a412
-a412 = a413
-a413 = a414
-a414 = a415
-a415 = a416
-a416 = a417
-a417 = a418
-a418 = a419
-a419 = a420
-a420 = a421
-a421 = a422
-a422 = a423
-a423 = a424
-a424 = a425
-a425 = a426
-a426 = a427
-a427 = a428
-a428 = a429
-a429 = a430
-a430 = a431
-a431 = a432
-a432 = a433
-a433 = a434
-a434 = a435
-a435 = a436
-a436 = a437
-a437 = a438
-a438 = a439
-a439 = a440
-a440 = a441
-a441 = a442
-a442 = a443
-a443 = a444
-a444 = a445
-a445 = a446
-a446 = a447
-a447 = a448
-a448 = a449
-a449 = a450
-a450 = a451
-a451 = a452
-a452 = a453
-a453 = a454
-a454 = a455
-a455 = a456
-a456 = a457
-a457 = a458
-a458 = a459
-a459 = a460
-a460 = a461
-a461 = a462
-a462 = a463
-a463 = a464
-a464 = a465
-a465 = a466
-a466 = a467
-a467 = a468
-a468 = a469
-a469 = a470
-a470 = a471
-a471 = a472
-a472 = a473
-a473 = a474
-a474 = a475
-a475 = a476
-a476 = a477
-a477 = a478
-a478 = a479
-a479 = a480
-a480 = a481
-a481 = a482
-a482 = a483
-a483 = a484
-a484 = a485
-a485 = a486
-a486 = a487
-a487 = a488
-a488 = a489
-a489 = a490
-a490 = a491
-a491 = a492
-a492 = a493
-a493 = a494
-a494 = a495
-a495 = a496
-a496 = a497
-a497 = a498
-a498 = a499
-a499 = []      -- !!! ta-dah!!!
diff --git a/ghc/tests/rename/should_compile/timing001.stderr b/ghc/tests/rename/should_compile/timing001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/timing002.hs b/ghc/tests/rename/should_compile/timing002.hs
deleted file mode 100644 (file)
index f81b026..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
--- !!! 500 defns chained together with "where"s
-module Main(main) where
-
-main = undefined
-a500 = let a000 = []
-           a001 = a000
-           a002 = a001
-           a003 = a002
-           a004 = a003
-           a005 = a004
-           a006 = a005
-           a007 = a006
-           a008 = a007
-           a009 = a008
-           a010 = a009
-           a011 = a010
-           a012 = a011
-           a013 = a012
-           a014 = a013
-           a015 = a014
-           a016 = a015
-           a017 = a016
-           a018 = a017
-           a019 = a018
-           a020 = a019
-           a021 = a020
-           a022 = a021
-           a023 = a022
-           a024 = a023
-           a025 = a024
-           a026 = a025
-           a027 = a026
-           a028 = a027
-           a029 = a028
-           a030 = a029
-           a031 = a030
-           a032 = a031
-           a033 = a032
-           a034 = a033
-           a035 = a034
-           a036 = a035
-           a037 = a036
-           a038 = a037
-           a039 = a038
-           a040 = a039
-           a041 = a040
-           a042 = a041
-           a043 = a042
-           a044 = a043
-           a045 = a044
-           a046 = a045
-           a047 = a046
-           a048 = a047
-           a049 = a048
-           a050 = a049
-           a051 = a050
-           a052 = a051
-           a053 = a052
-           a054 = a053
-           a055 = a054
-           a056 = a055
-           a057 = a056
-           a058 = a057
-           a059 = a058
-           a060 = a059
-           a061 = a060
-           a062 = a061
-           a063 = a062
-           a064 = a063
-           a065 = a064
-           a066 = a065
-           a067 = a066
-           a068 = a067
-           a069 = a068
-           a070 = a069
-           a071 = a070
-           a072 = a071
-           a073 = a072
-           a074 = a073
-           a075 = a074
-           a076 = a075
-           a077 = a076
-           a078 = a077
-           a079 = a078
-           a080 = a079
-           a081 = a080
-           a082 = a081
-           a083 = a082
-           a084 = a083
-           a085 = a084
-           a086 = a085
-           a087 = a086
-           a088 = a087
-           a089 = a088
-           a090 = a089
-           a091 = a090
-           a092 = a091
-           a093 = a092
-           a094 = a093
-           a095 = a094
-           a096 = a095
-           a097 = a096
-           a098 = a097
-           a099 = a098
-           a100 = a099
-           a101 = a100
-           a102 = a101
-           a103 = a102
-           a104 = a103
-           a105 = a104
-           a106 = a105
-           a107 = a106
-           a108 = a107
-           a109 = a108
-           a110 = a109
-           a111 = a110
-           a112 = a111
-           a113 = a112
-           a114 = a113
-           a115 = a114
-           a116 = a115
-           a117 = a116
-           a118 = a117
-           a119 = a118
-           a120 = a119
-           a121 = a120
-           a122 = a121
-           a123 = a122
-           a124 = a123
-           a125 = a124
-           a126 = a125
-           a127 = a126
-           a128 = a127
-           a129 = a128
-           a130 = a129
-           a131 = a130
-           a132 = a131
-           a133 = a132
-           a134 = a133
-           a135 = a134
-           a136 = a135
-           a137 = a136
-           a138 = a137
-           a139 = a138
-           a140 = a139
-           a141 = a140
-           a142 = a141
-           a143 = a142
-           a144 = a143
-           a145 = a144
-           a146 = a145
-           a147 = a146
-           a148 = a147
-           a149 = a148
-           a150 = a149
-           a151 = a150
-           a152 = a151
-           a153 = a152
-           a154 = a153
-           a155 = a154
-           a156 = a155
-           a157 = a156
-           a158 = a157
-           a159 = a158
-           a160 = a159
-           a161 = a160
-           a162 = a161
-           a163 = a162
-           a164 = a163
-           a165 = a164
-           a166 = a165
-           a167 = a166
-           a168 = a167
-           a169 = a168
-           a170 = a169
-           a171 = a170
-           a172 = a171
-           a173 = a172
-           a174 = a173
-           a175 = a174
-           a176 = a175
-           a177 = a176
-           a178 = a177
-           a179 = a178
-           a180 = a179
-           a181 = a180
-           a182 = a181
-           a183 = a182
-           a184 = a183
-           a185 = a184
-           a186 = a185
-           a187 = a186
-           a188 = a187
-           a189 = a188
-           a190 = a189
-           a191 = a190
-           a192 = a191
-           a193 = a192
-           a194 = a193
-           a195 = a194
-           a196 = a195
-           a197 = a196
-           a198 = a197
-           a199 = a198
-           a200 = a199
-           a201 = a200
-           a202 = a201
-           a203 = a202
-           a204 = a203
-           a205 = a204
-           a206 = a205
-           a207 = a206
-           a208 = a207
-           a209 = a208
-           a210 = a209
-           a211 = a210
-           a212 = a211
-           a213 = a212
-           a214 = a213
-           a215 = a214
-           a216 = a215
-           a217 = a216
-           a218 = a217
-           a219 = a218
-           a220 = a219
-           a221 = a220
-           a222 = a221
-           a223 = a222
-           a224 = a223
-           a225 = a224
-           a226 = a225
-           a227 = a226
-           a228 = a227
-           a229 = a228
-           a230 = a229
-           a231 = a230
-           a232 = a231
-           a233 = a232
-           a234 = a233
-           a235 = a234
-           a236 = a235
-           a237 = a236
-           a238 = a237
-           a239 = a238
-           a240 = a239
-           a241 = a240
-           a242 = a241
-           a243 = a242
-           a244 = a243
-           a245 = a244
-           a246 = a245
-           a247 = a246
-           a248 = a247
-           a249 = a248
-           a250 = a249
-           a251 = a250
-           a252 = a251
-           a253 = a252
-           a254 = a253
-           a255 = a254
-           a256 = a255
-           a257 = a256
-           a258 = a257
-           a259 = a258
-           a260 = a259
-           a261 = a260
-           a262 = a261
-           a263 = a262
-           a264 = a263
-           a265 = a264
-           a266 = a265
-           a267 = a266
-           a268 = a267
-           a269 = a268
-           a270 = a269
-           a271 = a270
-           a272 = a271
-           a273 = a272
-           a274 = a273
-           a275 = a274
-           a276 = a275
-           a277 = a276
-           a278 = a277
-           a279 = a278
-           a280 = a279
-           a281 = a280
-           a282 = a281
-           a283 = a282
-           a284 = a283
-           a285 = a284
-           a286 = a285
-           a287 = a286
-           a288 = a287
-           a289 = a288
-           a290 = a289
-           a291 = a290
-           a292 = a291
-           a293 = a292
-           a294 = a293
-           a295 = a294
-           a296 = a295
-           a297 = a296
-           a298 = a297
-           a299 = a298
-           a300 = a299
-           a301 = a300
-           a302 = a301
-           a303 = a302
-           a304 = a303
-           a305 = a304
-           a306 = a305
-           a307 = a306
-           a308 = a307
-           a309 = a308
-           a310 = a309
-           a311 = a310
-           a312 = a311
-           a313 = a312
-           a314 = a313
-           a315 = a314
-           a316 = a315
-           a317 = a316
-           a318 = a317
-           a319 = a318
-           a320 = a319
-           a321 = a320
-           a322 = a321
-           a323 = a322
-           a324 = a323
-           a325 = a324
-           a326 = a325
-           a327 = a326
-           a328 = a327
-           a329 = a328
-           a330 = a329
-           a331 = a330
-           a332 = a331
-           a333 = a332
-           a334 = a333
-           a335 = a334
-           a336 = a335
-           a337 = a336
-           a338 = a337
-           a339 = a338
-           a340 = a339
-           a341 = a340
-           a342 = a341
-           a343 = a342
-           a344 = a343
-           a345 = a344
-           a346 = a345
-           a347 = a346
-           a348 = a347
-           a349 = a348
-           a350 = a349
-           a351 = a350
-           a352 = a351
-           a353 = a352
-           a354 = a353
-           a355 = a354
-           a356 = a355
-           a357 = a356
-           a358 = a357
-           a359 = a358
-           a360 = a359
-           a361 = a360
-           a362 = a361
-           a363 = a362
-           a364 = a363
-           a365 = a364
-           a366 = a365
-           a367 = a366
-           a368 = a367
-           a369 = a368
-           a370 = a369
-           a371 = a370
-           a372 = a371
-           a373 = a372
-           a374 = a373
-           a375 = a374
-           a376 = a375
-           a377 = a376
-           a378 = a377
-           a379 = a378
-           a380 = a379
-           a381 = a380
-           a382 = a381
-           a383 = a382
-           a384 = a383
-           a385 = a384
-           a386 = a385
-           a387 = a386
-           a388 = a387
-           a389 = a388
-           a390 = a389
-           a391 = a390
-           a392 = a391
-           a393 = a392
-           a394 = a393
-           a395 = a394
-           a396 = a395
-           a397 = a396
-           a398 = a397
-           a399 = a398
-           a400 = a399
-           a401 = a400
-           a402 = a401
-           a403 = a402
-           a404 = a403
-           a405 = a404
-           a406 = a405
-           a407 = a406
-           a408 = a407
-           a409 = a408
-           a410 = a409
-           a411 = a410
-           a412 = a411
-           a413 = a412
-           a414 = a413
-           a415 = a414
-           a416 = a415
-           a417 = a416
-           a418 = a417
-           a419 = a418
-           a420 = a419
-           a421 = a420
-           a422 = a421
-           a423 = a422
-           a424 = a423
-           a425 = a424
-           a426 = a425
-           a427 = a426
-           a428 = a427
-           a429 = a428
-           a430 = a429
-           a431 = a430
-           a432 = a431
-           a433 = a432
-           a434 = a433
-           a435 = a434
-           a436 = a435
-           a437 = a436
-           a438 = a437
-           a439 = a438
-           a440 = a439
-           a441 = a440
-           a442 = a441
-           a443 = a442
-           a444 = a443
-           a445 = a444
-           a446 = a445
-           a447 = a446
-           a448 = a447
-           a449 = a448
-           a450 = a449
-           a451 = a450
-           a452 = a451
-           a453 = a452
-           a454 = a453
-           a455 = a454
-           a456 = a455
-           a457 = a456
-           a458 = a457
-           a459 = a458
-           a460 = a459
-           a461 = a460
-           a462 = a461
-           a463 = a462
-           a464 = a463
-           a465 = a464
-           a466 = a465
-           a467 = a466
-           a468 = a467
-           a469 = a468
-           a470 = a469
-           a471 = a470
-           a472 = a471
-           a473 = a472
-           a474 = a473
-           a475 = a474
-           a476 = a475
-           a477 = a476
-           a478 = a477
-           a479 = a478
-           a480 = a479
-           a481 = a480
-           a482 = a481
-           a483 = a482
-           a484 = a483
-           a485 = a484
-           a486 = a485
-           a487 = a486
-           a488 = a487
-           a489 = a488
-           a490 = a489
-           a491 = a490
-           a492 = a491
-           a493 = a492
-           a494 = a493
-           a495 = a494
-           a496 = a495
-           a497 = a496
-           a498 = a497 in
-       a498
diff --git a/ghc/tests/rename/should_compile/timing002.stderr b/ghc/tests/rename/should_compile/timing002.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_compile/timing003.hs b/ghc/tests/rename/should_compile/timing003.hs
deleted file mode 100644 (file)
index c268646..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
--- !!! 500 defns, not chained together
-module Main(main) where
-
-main = undefined
-a000 = []
-a001 = []
-a002 = []
-a003 = []
-a004 = []
-a005 = []
-a006 = []
-a007 = []
-a008 = []
-a009 = []
-a010 = []
-a011 = []
-a012 = []
-a013 = []
-a014 = []
-a015 = []
-a016 = []
-a017 = []
-a018 = []
-a019 = []
-a020 = []
-a021 = []
-a022 = []
-a023 = []
-a024 = []
-a025 = []
-a026 = []
-a027 = []
-a028 = []
-a029 = []
-a030 = []
-a031 = []
-a032 = []
-a033 = []
-a034 = []
-a035 = []
-a036 = []
-a037 = []
-a038 = []
-a039 = []
-a040 = []
-a041 = []
-a042 = []
-a043 = []
-a044 = []
-a045 = []
-a046 = []
-a047 = []
-a048 = []
-a049 = []
-a050 = []
-a051 = []
-a052 = []
-a053 = []
-a054 = []
-a055 = []
-a056 = []
-a057 = []
-a058 = []
-a059 = []
-a060 = []
-a061 = []
-a062 = []
-a063 = []
-a064 = []
-a065 = []
-a066 = []
-a067 = []
-a068 = []
-a069 = []
-a070 = []
-a071 = []
-a072 = []
-a073 = []
-a074 = []
-a075 = []
-a076 = []
-a077 = []
-a078 = []
-a079 = []
-a080 = []
-a081 = []
-a082 = []
-a083 = []
-a084 = []
-a085 = []
-a086 = []
-a087 = []
-a088 = []
-a089 = []
-a090 = []
-a091 = []
-a092 = []
-a093 = []
-a094 = []
-a095 = []
-a096 = []
-a097 = []
-a098 = []
-a099 = []
-
-a100 = []
-a101 = []
-a102 = []
-a103 = []
-a104 = []
-a105 = []
-a106 = []
-a107 = []
-a108 = []
-a109 = []
-a110 = []
-a111 = []
-a112 = []
-a113 = []
-a114 = []
-a115 = []
-a116 = []
-a117 = []
-a118 = []
-a119 = []
-a120 = []
-a121 = []
-a122 = []
-a123 = []
-a124 = []
-a125 = []
-a126 = []
-a127 = []
-a128 = []
-a129 = []
-a130 = []
-a131 = []
-a132 = []
-a133 = []
-a134 = []
-a135 = []
-a136 = []
-a137 = []
-a138 = []
-a139 = []
-a140 = []
-a141 = []
-a142 = []
-a143 = []
-a144 = []
-a145 = []
-a146 = []
-a147 = []
-a148 = []
-a149 = []
-a150 = []
-a151 = []
-a152 = []
-a153 = []
-a154 = []
-a155 = []
-a156 = []
-a157 = []
-a158 = []
-a159 = []
-a160 = []
-a161 = []
-a162 = []
-a163 = []
-a164 = []
-a165 = []
-a166 = []
-a167 = []
-a168 = []
-a169 = []
-a170 = []
-a171 = []
-a172 = []
-a173 = []
-a174 = []
-a175 = []
-a176 = []
-a177 = []
-a178 = []
-a179 = []
-a180 = []
-a181 = []
-a182 = []
-a183 = []
-a184 = []
-a185 = []
-a186 = []
-a187 = []
-a188 = []
-a189 = []
-a190 = []
-a191 = []
-a192 = []
-a193 = []
-a194 = []
-a195 = []
-a196 = []
-a197 = []
-a198 = []
-a199 = []
-
-a200 = []
-a201 = []
-a202 = []
-a203 = []
-a204 = []
-a205 = []
-a206 = []
-a207 = []
-a208 = []
-a209 = []
-a210 = []
-a211 = []
-a212 = []
-a213 = []
-a214 = []
-a215 = []
-a216 = []
-a217 = []
-a218 = []
-a219 = []
-a220 = []
-a221 = []
-a222 = []
-a223 = []
-a224 = []
-a225 = []
-a226 = []
-a227 = []
-a228 = []
-a229 = []
-a230 = []
-a231 = []
-a232 = []
-a233 = []
-a234 = []
-a235 = []
-a236 = []
-a237 = []
-a238 = []
-a239 = []
-a240 = []
-a241 = []
-a242 = []
-a243 = []
-a244 = []
-a245 = []
-a246 = []
-a247 = []
-a248 = []
-a249 = []
-a250 = []
-a251 = []
-a252 = []
-a253 = []
-a254 = []
-a255 = []
-a256 = []
-a257 = []
-a258 = []
-a259 = []
-a260 = []
-a261 = []
-a262 = []
-a263 = []
-a264 = []
-a265 = []
-a266 = []
-a267 = []
-a268 = []
-a269 = []
-a270 = []
-a271 = []
-a272 = []
-a273 = []
-a274 = []
-a275 = []
-a276 = []
-a277 = []
-a278 = []
-a279 = []
-a280 = []
-a281 = []
-a282 = []
-a283 = []
-a284 = []
-a285 = []
-a286 = []
-a287 = []
-a288 = []
-a289 = []
-a290 = []
-a291 = []
-a292 = []
-a293 = []
-a294 = []
-a295 = []
-a296 = []
-a297 = []
-a298 = []
-a299 = []
-
-a300 = []
-a301 = []
-a302 = []
-a303 = []
-a304 = []
-a305 = []
-a306 = []
-a307 = []
-a308 = []
-a309 = []
-a310 = []
-a311 = []
-a312 = []
-a313 = []
-a314 = []
-a315 = []
-a316 = []
-a317 = []
-a318 = []
-a319 = []
-a320 = []
-a321 = []
-a322 = []
-a323 = []
-a324 = []
-a325 = []
-a326 = []
-a327 = []
-a328 = []
-a329 = []
-a330 = []
-a331 = []
-a332 = []
-a333 = []
-a334 = []
-a335 = []
-a336 = []
-a337 = []
-a338 = []
-a339 = []
-a340 = []
-a341 = []
-a342 = []
-a343 = []
-a344 = []
-a345 = []
-a346 = []
-a347 = []
-a348 = []
-a349 = []
-a350 = []
-a351 = []
-a352 = []
-a353 = []
-a354 = []
-a355 = []
-a356 = []
-a357 = []
-a358 = []
-a359 = []
-a360 = []
-a361 = []
-a362 = []
-a363 = []
-a364 = []
-a365 = []
-a366 = []
-a367 = []
-a368 = []
-a369 = []
-a370 = []
-a371 = []
-a372 = []
-a373 = []
-a374 = []
-a375 = []
-a376 = []
-a377 = []
-a378 = []
-a379 = []
-a380 = []
-a381 = []
-a382 = []
-a383 = []
-a384 = []
-a385 = []
-a386 = []
-a387 = []
-a388 = []
-a389 = []
-a390 = []
-a391 = []
-a392 = []
-a393 = []
-a394 = []
-a395 = []
-a396 = []
-a397 = []
-a398 = []
-a399 = []
-
-a400 = []
-a401 = []
-a402 = []
-a403 = []
-a404 = []
-a405 = []
-a406 = []
-a407 = []
-a408 = []
-a409 = []
-a410 = []
-a411 = []
-a412 = []
-a413 = []
-a414 = []
-a415 = []
-a416 = []
-a417 = []
-a418 = []
-a419 = []
-a420 = []
-a421 = []
-a422 = []
-a423 = []
-a424 = []
-a425 = []
-a426 = []
-a427 = []
-a428 = []
-a429 = []
-a430 = []
-a431 = []
-a432 = []
-a433 = []
-a434 = []
-a435 = []
-a436 = []
-a437 = []
-a438 = []
-a439 = []
-a440 = []
-a441 = []
-a442 = []
-a443 = []
-a444 = []
-a445 = []
-a446 = []
-a447 = []
-a448 = []
-a449 = []
-a450 = []
-a451 = []
-a452 = []
-a453 = []
-a454 = []
-a455 = []
-a456 = []
-a457 = []
-a458 = []
-a459 = []
-a460 = []
-a461 = []
-a462 = []
-a463 = []
-a464 = []
-a465 = []
-a466 = []
-a467 = []
-a468 = []
-a469 = []
-a470 = []
-a471 = []
-a472 = []
-a473 = []
-a474 = []
-a475 = []
-a476 = []
-a477 = []
-a478 = []
-a479 = []
-a480 = []
-a481 = []
-a482 = []
-a483 = []
-a484 = []
-a485 = []
-a486 = []
-a487 = []
-a488 = []
-a489 = []
-a490 = []
-a491 = []
-a492 = []
-a493 = []
-a494 = []
-a495 = []
-a496 = []
-a497 = []
-a498 = []
-a499 = []
diff --git a/ghc/tests/rename/should_compile/timing003.stderr b/ghc/tests/rename/should_compile/timing003.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/rename/should_fail/Makefile b/ghc/tests/rename/should_fail/Makefile
deleted file mode 100644 (file)
index c2170a4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_fail.mk
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/rename/should_fail/rnfail001.hs b/ghc/tests/rename/should_fail/rnfail001.hs
deleted file mode 100644 (file)
index f6758a1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f x x = 2
diff --git a/ghc/tests/rename/should_fail/rnfail001.stderr b/ghc/tests/rename/should_fail/rnfail001.stderr
deleted file mode 100644 (file)
index c640624..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-rnfail001.hs:3:
-    Conflicting definitions for `x'
-    In the definition of `f'
diff --git a/ghc/tests/rename/should_fail/rnfail002.hs b/ghc/tests/rename/should_fail/rnfail002.hs
deleted file mode 100644 (file)
index ab38722..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! rn001: super-simple set of bindings,
--- !!! incl wildcard pattern-bindings and *duplicates*
-
-x = []
-y = []
-y = []
-_ = []
-_ = 1
-z = []
-_ = []
diff --git a/ghc/tests/rename/should_fail/rnfail002.stderr b/ghc/tests/rename/should_fail/rnfail002.stderr
deleted file mode 100644 (file)
index 9ef5c17..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail002.hs:4:
-    Multiple declarations of `Main.y'
-       rnfail002.hs:5
-       rnfail002.hs:6
diff --git a/ghc/tests/rename/should_fail/rnfail003.hs b/ghc/tests/rename/should_fail/rnfail003.hs
deleted file mode 100644 (file)
index fb62bac..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! split definition of f (error)
-f [] = []
-g x = x
-f (x:xs) = []
diff --git a/ghc/tests/rename/should_fail/rnfail003.stderr b/ghc/tests/rename/should_fail/rnfail003.stderr
deleted file mode 100644 (file)
index 1ba4c9c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail003.hs:2:
-    Multiple declarations of `Main.f'
-       rnfail003.hs:2
-       rnfail003.hs:4
diff --git a/ghc/tests/rename/should_fail/rnfail004.hs b/ghc/tests/rename/should_fail/rnfail004.hs
deleted file mode 100644 (file)
index 90a97f8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! multiple definitions, but hidden in patterns
-module Foo where
-
-f x = x
-  where
-    a          = []
-    (b,c,a)    = ([],[],d)
-    [d,b,_]    = ([],a,[])
diff --git a/ghc/tests/rename/should_fail/rnfail004.stderr b/ghc/tests/rename/should_fail/rnfail004.stderr
deleted file mode 100644 (file)
index 73100a7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-rnfail004.hs:7:
-    Conflicting definitions for `a'
-    In a binding group
-
-rnfail004.hs:8:
-    Conflicting definitions for `b'
-    In a binding group
diff --git a/ghc/tests/rename/should_fail/rnfail005.stderr b/ghc/tests/rename/should_fail/rnfail005.stderr
deleted file mode 100644 (file)
index 9ad30e8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-rnfail005.hs:4:
-    Conflicting definitions for: `v'
-       Defined at rnfail005.hs:20
-       Defined at rnfail005.hs:19
-
-
-Compilation had errors
diff --git a/ghc/tests/rename/should_fail/rnfail007.hs b/ghc/tests/rename/should_fail/rnfail007.hs
deleted file mode 100644 (file)
index 272abcf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! Main module with no definition of main
-
-module Main where
-
-f x = x
diff --git a/ghc/tests/rename/should_fail/rnfail007.stderr b/ghc/tests/rename/should_fail/rnfail007.stderr
deleted file mode 100644 (file)
index 91802bc..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-rnfail007.hs:3: Variable not in scope: `main'
diff --git a/ghc/tests/rename/should_fail/rnfail008.hs b/ghc/tests/rename/should_fail/rnfail008.hs
deleted file mode 100644 (file)
index 196214a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- !!! Class and instance decl
-
-module Test where
-
-class K a where
-       op1 :: a -> a -> a
-       op2 :: Int -> a
-
-instance K Int where
-       op1 a b = a+b
-       op2 x   = x
-
-instance K Bool where
-       op1 a b = a
-       -- Pick up the default decl for op2
-       
-instance K [a] where
-       op3 a = a       -- Oops!  Isn't a class op of K
-       
diff --git a/ghc/tests/rename/should_fail/rnfail008.stderr b/ghc/tests/rename/should_fail/rnfail008.stderr
deleted file mode 100644 (file)
index 34788e3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-rnfail008.hs:18: Variable not in scope: `op3'
diff --git a/ghc/tests/rename/should_fail/rnfail009.hs b/ghc/tests/rename/should_fail/rnfail009.hs
deleted file mode 100644 (file)
index 1557f48..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module Foo where
-
-data F = A | B
-
-data G = A | C
diff --git a/ghc/tests/rename/should_fail/rnfail009.stderr b/ghc/tests/rename/should_fail/rnfail009.stderr
deleted file mode 100644 (file)
index 347be46..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail009.hs:1:
-    Multiple declarations of `Foo.A'
-       rnfail009.hs:3
-       rnfail009.hs:5
diff --git a/ghc/tests/rename/should_fail/rnfail010.hs b/ghc/tests/rename/should_fail/rnfail010.hs
deleted file mode 100644 (file)
index d5e51ed..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-f x = 2
-
-g x = 6
-
-f x = 3
diff --git a/ghc/tests/rename/should_fail/rnfail010.stderr b/ghc/tests/rename/should_fail/rnfail010.stderr
deleted file mode 100644 (file)
index 36d10f8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail010.hs:2:
-    Multiple declarations of `Main.f'
-       rnfail010.hs:2
-       rnfail010.hs:6
diff --git a/ghc/tests/rename/should_fail/rnfail011.hs b/ghc/tests/rename/should_fail/rnfail011.hs
deleted file mode 100644 (file)
index b342618..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-type A = Int
-
-type B = Bool
-
-type A = [Bool]
diff --git a/ghc/tests/rename/should_fail/rnfail011.stderr b/ghc/tests/rename/should_fail/rnfail011.stderr
deleted file mode 100644 (file)
index 68d2f40..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail011.hs:2:
-    Multiple declarations of `Main.A'
-       rnfail011.hs:2
-       rnfail011.hs:6
diff --git a/ghc/tests/rename/should_fail/rnfail012.hs b/ghc/tests/rename/should_fail/rnfail012.hs
deleted file mode 100644 (file)
index 725b0d1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-class A a where
- op1 :: a
-
-class B a where
- op2 :: b -> b
-
-class A a where
- op3 :: a
diff --git a/ghc/tests/rename/should_fail/rnfail012.stderr b/ghc/tests/rename/should_fail/rnfail012.stderr
deleted file mode 100644 (file)
index de3999f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail012.hs:2:
-    Multiple declarations of `Main.A'
-       rnfail012.hs:2
-       rnfail012.hs:8
diff --git a/ghc/tests/rename/should_fail/rnfail013.hs b/ghc/tests/rename/should_fail/rnfail013.hs
deleted file mode 100644 (file)
index 4d30ded..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Conflicting constructors from two data type decls
-
-module Foo where
-
-data T1 = MkT Int
-
-data T2 = MkT Bool
-
-f (MkT x) = x
diff --git a/ghc/tests/rename/should_fail/rnfail013.stderr b/ghc/tests/rename/should_fail/rnfail013.stderr
deleted file mode 100644 (file)
index 1a2c8a6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail013.hs:3:
-    Multiple declarations of `Foo.MkT'
-       rnfail013.hs:5
-       rnfail013.hs:7
diff --git a/ghc/tests/rename/should_fail/rnfail014.hs b/ghc/tests/rename/should_fail/rnfail014.hs
deleted file mode 100644 (file)
index a9074e2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{- Check that the context of a type does not
-   constrain any in-scope variables, and only constrains
-   type variables free in the type.
--}
-
-module Foo where
-
-instance Eq a => Eq Bool where
-  (==) = error "help"
-
-
-f :: Eq a => Int -> Int
-f x = x
-
-
-class Foo a where
-  op :: Eq a => a -> a
diff --git a/ghc/tests/rename/should_fail/rnfail014.stderr b/ghc/tests/rename/should_fail/rnfail014.stderr
deleted file mode 100644 (file)
index 2c87641..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-rnfail014.hs:17:
-    All of the type variables in the constraint `Eq a' are already in scope
-       At least one must be universally quantified here
-    In the type `(Eq a) => a -> a'
-    In the class declaration for `Foo'
diff --git a/ghc/tests/rename/should_fail/rnfail015.hs b/ghc/tests/rename/should_fail/rnfail015.hs
deleted file mode 100644 (file)
index 20f9934..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module ShouldFail where
-
--- !!! duplicate constructors in datatype
--- (bug report from Alex Ferguson, c. 2.06)
-
-data Token
-     =  TokNewline
-     |  TokLiteral
-     |  TokCount
-     |  TokCheck
-     |  TokIs
-     |  TokDeref
-     |  TokFind
-     |  TokLiteral             -- Duplicated!
-     |  TokThe
-
-      deriving Show
-
-main = print TokCount
-
diff --git a/ghc/tests/rename/should_fail/rnfail015.stderr b/ghc/tests/rename/should_fail/rnfail015.stderr
deleted file mode 100644 (file)
index 472c5b4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail015.hs:1:
-    Multiple declarations of `ShouldFail.TokLiteral'
-       rnfail015.hs:8
-       rnfail015.hs:14
diff --git a/ghc/tests/rename/should_fail/rnfail016.hs b/ghc/tests/rename/should_fail/rnfail016.hs
deleted file mode 100644 (file)
index 1fa71c5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-module ShouldFail where
-
--- !!! Pattern syntax in expressions
-
-f x = x @ x
-g x = ~ x
-h x = _
-
diff --git a/ghc/tests/rename/should_fail/rnfail016.stderr b/ghc/tests/rename/should_fail/rnfail016.stderr
deleted file mode 100644 (file)
index dc31f5d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-rnfail016.hs:5: Pattern syntax in expression context: x@x
-
-rnfail016.hs:6: Pattern syntax in expression context: ~x
-
-rnfail016.hs:7: Pattern syntax in expression context: _
diff --git a/ghc/tests/rename/should_fail/rnfail017.hs b/ghc/tests/rename/should_fail/rnfail017.hs
deleted file mode 100644 (file)
index 327a9d6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-module ShouldFail where
-
--- !!! Precedence of unary negation
-
-f1 x y = x + -y        -- Fails
-f2 x y = x * -y                -- Fails
-
-
-f3 x y = -x + y                -- OK: means  (-x) + y
-                       -- since - is left associative
-
-f4 x y = - x*y         -- OK: means -(x*y)
-                       -- since - binds less tightly than *
-
-f5 x y = x >= -y       -- OK means x >= (-y)
-
-
diff --git a/ghc/tests/rename/should_fail/rnfail017.stderr b/ghc/tests/rename/should_fail/rnfail017.stderr
deleted file mode 100644 (file)
index 0867ade..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-rnfail017.hs:5:
-    precedence parsing error
-       cannot mix `(+)' [infixl 6] and prefix `-' [infixl 6] in the same infix expression
-
-rnfail017.hs:6:
-    precedence parsing error
-       cannot mix `(*)' [infixl 7] and prefix `-' [infixl 6] in the same infix expression
diff --git a/ghc/tests/rename/should_fail/rnfail018.hs b/ghc/tests/rename/should_fail/rnfail018.hs
deleted file mode 100644 (file)
index 223751c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldFail where
-
--- !!! For-all with parens
-
--- This one crashed ghc-4.04proto; the parens after the for-all fooled it
-
-class Monad m => StateMonad s m where
-   getState :: m s
-
-setState0 :: forall b. (StateMonad (a,b) m => m a)
-setState0 = getState >>= \ (l,_r) -> return l
-
-
diff --git a/ghc/tests/rename/should_fail/rnfail018.stderr b/ghc/tests/rename/should_fail/rnfail018.stderr
deleted file mode 100644 (file)
index 50f4b86..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-rnfail018.hs:12: Type variable not in scope: `a'
-
-rnfail018.hs:12: Type variable not in scope: `m'
-
-rnfail018.hs:12: Type variable not in scope: `m'
-
-rnfail018.hs:12: Type variable not in scope: `a'
diff --git a/ghc/tests/rename/should_fail/rnfail019.hs b/ghc/tests/rename/should_fail/rnfail019.hs
deleted file mode 100644 (file)
index ec97efe..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldFail where
-
--- !!! Section with with a bad precedence
-
-f x y = (x:y:)
-
--- GHC 4.04 (as released) let this by, but it's a precedence error.
diff --git a/ghc/tests/rename/should_fail/rnfail019.stderr b/ghc/tests/rename/should_fail/rnfail019.stderr
deleted file mode 100644 (file)
index f47d357..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rnfail019.hs:5:
-    The operator `:' [infixr 5] of a section
-       must have lower precedence than the operand `(:)' [infixr 5]
-       in the section: `((x : y) :)'
diff --git a/ghc/tests/rename/should_fail/rnfail020.hs b/ghc/tests/rename/should_fail/rnfail020.hs
deleted file mode 100644 (file)
index b434fa4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Error messages with scoped type variables
-
-module Foo where
-
-data Set a = Set a
-
-unionSetB :: Eq a => Set a -> Set a -> Set a
-unionSetB (s1 :: Set a) s2 = unionSets s1 s2
- where
-   unionSets :: Eq a => Set a -> Set a -> Set a
-   unionSets a b = a
-
-
-{- In GHC 4.04 this gave the terrible message:
-
-    None of the type variable(s) in the constraint `Eq a'
-       appears in the type `Set a -> Set a -> Set a'
-    In the type signature for `unionSets'
--}
diff --git a/ghc/tests/rename/should_fail/rnfail020.stderr b/ghc/tests/rename/should_fail/rnfail020.stderr
deleted file mode 100644 (file)
index a2298c0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-rnfail020.hs:12:
-    All of the type variables in the constraint `Eq a' are already in scope
-       At least one must be universally quantified here
-    In the type `(Eq a) => Set a -> Set a -> Set a'
-    In a type signature for `unionSets'
-    In the definition of `unionSetB':
-       unionSetB (s1 :: Set a) s2
-                   = unionSets s1 s2
-                   where
-                       unionSets :: forall. (Eq a) => Set a -> Set a -> Set a
-                       unionSets a b = a
diff --git a/ghc/tests/rename/should_fail/rnfail021.hs b/ghc/tests/rename/should_fail/rnfail021.hs
deleted file mode 100644 (file)
index ead2207..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! Qualified names in binding positions are rejected
-
-module Foo where
-
-Baz.f = True
-
diff --git a/ghc/tests/rename/should_fail/rnfail021.stderr b/ghc/tests/rename/should_fail/rnfail021.stderr
deleted file mode 100644 (file)
index 76a236f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-rnfail021.hs:5:
-    Invalid use of qualified name `Baz.f' in its declaration
diff --git a/ghc/tests/rename/should_fail/rnfail022.hs b/ghc/tests/rename/should_fail/rnfail022.hs
deleted file mode 100644 (file)
index 8f47cf6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! Check that 'qualified' doesn't bring the unqual'ed name into scope.
-module ShouldFail where
-
-import qualified List as L ( intersperse ) 
-
-x = L.intersperse
-
-y = intersperse
-
diff --git a/ghc/tests/rename/should_fail/rnfail022.stderr b/ghc/tests/rename/should_fail/rnfail022.stderr
deleted file mode 100644 (file)
index f425ef4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-rnfail022.hs:8: Variable not in scope: `intersperse'
diff --git a/ghc/tests/rename/should_fail/rnfail023.hs b/ghc/tests/rename/should_fail/rnfail023.hs
deleted file mode 100644 (file)
index bf7c4a2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! Check that type signatures and pragmas that 
--- !!! don't have a "parent" are correctly reported
-
-module ShouldFail where
-
--- Top level test
-f :: Int -> Int
-{-# INLINE f #-}
-
--- Nested test
-h :: Int -> Int        -- This one is ok
-h x = x
-    where
-      g :: Int -> Int  -- Bogus
-
diff --git a/ghc/tests/rename/should_fail/rnfail023.stderr b/ghc/tests/rename/should_fail/rnfail023.stderr
deleted file mode 100644 (file)
index faf09bb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-rnfail023.hs:7: Variable not in scope: `f'
-
-rnfail023.hs:8: Variable not in scope: `f'
-
-rnfail023.hs:14: Variable not in scope: `g'
diff --git a/ghc/tests/rename/should_fail/rnfail024.hs b/ghc/tests/rename/should_fail/rnfail024.hs
deleted file mode 100644 (file)
index 4663319..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
-sig_without_a_defn :: a -> b
-
-f :: a -> b
-f = sig_without_a_defn
diff --git a/ghc/tests/rename/should_fail/rnfail024.stderr b/ghc/tests/rename/should_fail/rnfail024.stderr
deleted file mode 100644 (file)
index 1519c38..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-rnfail024.hs:3: Variable not in scope: `sig_without_a_defn'
-
-rnfail024.hs:6: Variable not in scope: `sig_without_a_defn'
diff --git a/ghc/tests/rename/should_fail/rnfail025.hs b/ghc/tests/rename/should_fail/rnfail025.hs
deleted file mode 100644 (file)
index 42cf3d7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
-sig_without_a_defn :: a -> b
-
--- We don't even refer to the variable.  This compiled without error
--- in ghc-4.08.
diff --git a/ghc/tests/rename/should_fail/rnfail025.stderr b/ghc/tests/rename/should_fail/rnfail025.stderr
deleted file mode 100644 (file)
index cba1afc..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-rnfail025.hs:3: Variable not in scope: `sig_without_a_defn'
diff --git a/ghc/tests/rename/should_fail/rnfail026.hs b/ghc/tests/rename/should_fail/rnfail026.hs
deleted file mode 100644 (file)
index 8dcd154..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- This one made ghc-4.08 crash 
--- rename/RnEnv.lhs:239: Non-exhaustive patterns in function get_tycon_key
--- The type in the Monad instance is utterly bogus, of course
-
-module ShouldCompile ( Set ) where
-
-
-data Set a = Set [a]
-       deriving (Eq, Ord, Read, Show)
-
-instance Functor Set where
-        f `fmap` (Set xs) = Set $ f `fmap` xs
-
-instance Monad (forall a. Eq a => Set a) where
-        return x = Set [x]
-
-instance Eq (forall a. [a]) where 
diff --git a/ghc/tests/rename/should_fail/rnfail027.hs b/ghc/tests/rename/should_fail/rnfail027.hs
deleted file mode 100644 (file)
index fc6d8c8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! infix declarations for unknown identifiers aren't allowed
-
-module ShouldFail where
-
-infixl 9 `wibble`
diff --git a/ghc/tests/rename/should_fail/rnfail027.stderr b/ghc/tests/rename/should_fail/rnfail027.stderr
deleted file mode 100644 (file)
index 33accec..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-rnfail027.hs:5: Variable not in scope: `wibble'
diff --git a/ghc/tests/simplCore/Makefile b/ghc/tests/simplCore/Makefile
deleted file mode 100644 (file)
index 1d1e930..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/simplCore/should_compile/Makefile b/ghc/tests/simplCore/should_compile/Makefile
deleted file mode 100644 (file)
index 323ebba..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-simpl006_HC_OPTS += -package concurrent
-simpl004_HC_OPTS = -package lang
-Simpl006Help_HC_OPTS = -O
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/simplCore/should_compile/Simpl006Help.hs b/ghc/tests/simplCore/should_compile/Simpl006Help.hs
deleted file mode 100644 (file)
index 81baad3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module Simpl006Help( forever ) where
-
-forever c  = sequence_ (repeat c)
diff --git a/ghc/tests/simplCore/should_compile/simpl001.hs b/ghc/tests/simplCore/should_compile/simpl001.hs
deleted file mode 100644 (file)
index 4b2bfcc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! Desugaring sections with function-type arguments
---  Although this is really a desugaring test, the problem is
--- only tickled by the simplifier
-
--- type Foo a b = a -> (b -> a) -> b
-module ShouldCompile where
-
-(++++) :: (a -> (b -> a) -> b) -> (a -> (b -> a) -> b) -> a -> (b -> a) -> b
-x ++++ y = y
-
-g a xs = map (++++ a) xs
-
-h b xs = map (b ++++) xs
diff --git a/ghc/tests/simplCore/should_compile/simpl001.stderr b/ghc/tests/simplCore/should_compile/simpl001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_compile/simpl002.hs b/ghc/tests/simplCore/should_compile/simpl002.hs
deleted file mode 100644 (file)
index b262f47..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! class/instance mumble that failed Lint at one time
---
-module ShouldCompile where
-class Foo a where
-   op :: Int -> a -> Bool
-
-data Wibble a b c = MkWibble a b c
-
-instance (Foo a, Foo b, Foo c) => Foo (Wibble a b c) where
-    op x y = error "xxx"
diff --git a/ghc/tests/simplCore/should_compile/simpl002.stderr b/ghc/tests/simplCore/should_compile/simpl002.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_compile/simpl003.hs b/ghc/tests/simplCore/should_compile/simpl003.hs
deleted file mode 100644 (file)
index 2f36696..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
--- !! INLINE on recursive functions.
-{-
-Date: Thu, 8 Dec 94 11:38:24 GMT
-From: Julian Seward (DRL PhD) <sewardj@computer-science.manchester.ac.uk>
-Message-Id: <9412081138.AA16652@rdf009.cs.man.ac.uk>
-To: partain@dcs.gla.ac.uk
--}
-module ShouldCompile where
-
-type IMonad a
-   = IMonadState -> IMonadReturn a
-
-data IMonadReturn a
-   = IMonadOk  IMonadState a
-   | IMonadFail        IMonadState String
-
-type IMonadState
-   = Int
-
-
-returnI r = \s0 -> IMonadOk   s0 r
-
-failI msg = \s0 -> IMonadFail s0 msg
-
-thenI m k
-   = \s0 -> case m s0 of
-               IMonadFail s1 msg -> IMonadFail s1 msg
-               IMonadOk s1 r1    -> k r1 s1
-   
-tickI n = \s0 -> IMonadOk (s0+n) ()
-
-mapI f [] = returnI []
-mapI f (x:xs) = f x           `thenI` ( \ fx ->
-                mapI f xs     `thenI` ( \ fxs ->
-                returnI (fx:fxs)
-                ))
-
-{-# INLINE returnI #-}
-{-# INLINE failI #-}
-{-# INLINE thenI #-}
-{-# INLINE tickI #-}
-{-# INLINE mapI #-}
diff --git a/ghc/tests/simplCore/should_compile/simpl003.stderr b/ghc/tests/simplCore/should_compile/simpl003.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_compile/simpl004.hs b/ghc/tests/simplCore/should_compile/simpl004.hs
deleted file mode 100644 (file)
index 0008ae1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldCompile where
-
-import Ix
-import GlaExts
-
-
-f ixs@(_, ix_end) frozen# =
- let
-  n# = 
-   case (
-        if null (range ixs)
-         then 0
-         else 1
-        ) of { I# x -> x }
- in
- (# frozen#, False #)
diff --git a/ghc/tests/simplCore/should_compile/simpl004.stderr b/ghc/tests/simplCore/should_compile/simpl004.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_compile/simpl005.hs b/ghc/tests/simplCore/should_compile/simpl005.hs
deleted file mode 100644 (file)
index abf98a3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! CPR on newtype with polymorphic argument
-
-{-# OPTIONS -O #-}
-
-module ShouldCompile where
-
-data StateM m s a = STM (s -> m (a,s)) 
-
-instance Functor m => Functor (StateM m s) where
-  fmap f (STM xs) =  STM (\s -> fmap (\ (x,s') -> (f x, s')) 
-                                    (xs s)                                
-                        )
-{-     With GHC 4.04 (first release) this program gave:
-
-  panic! (the `impossible' happened):
-          mk_cpr_let: not a product
-      forall a{-ruq-} b{-rur-}.
-      (a{-ruq-} -> b{-rur-})
-      -> MonadLibrary.StateM{-r2o,x-} m{-a30Y-} s{-a30Z-} a{-ruq-}
-      -> MonadLibrary.StateM{-r2o,x-} m{-a30Y-} s{-a30Z-} b{-rur-}
-
- The reason: 'Functor' is a newtype, whose element is a for-all type.
-
-       newtype Functor f = Functor (forall a,b.  (a->b) -> f a -> f b)
--}
diff --git a/ghc/tests/simplCore/should_compile/simpl005.stderr b/ghc/tests/simplCore/should_compile/simpl005.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_compile/simpl006.hs b/ghc/tests/simplCore/should_compile/simpl006.hs
deleted file mode 100644 (file)
index 81e43a5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- !!! This one sent 4.06 into an infinite loop
-
--- But it worked ok if Simpl006Help.forever is 
--- defined in this module.  I have no idea why!
-
-{-# OPTIONS -O #-}
-
-module ShouldCompile where
-
-import Concurrent 
-import Simpl006Help
-
-after :: Int -> IO a -> IO a
-after d c = c
-
-every :: Int -> IO a -> IO ()
-every d c = forever (after d c)
-
-
diff --git a/ghc/tests/simplCore/should_compile/simpl007.hs b/ghc/tests/simplCore/should_compile/simpl007.hs
deleted file mode 100644 (file)
index 1eb1a42..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-{-# OPTIONS -fglasgow-exts -fallow-undecidable-instances -fallow-overlapping-instances #-}
-
--- module Formula where
-module Main where
-
-import Prelude hiding (logBase)
-
-import Maybe
-
--------------------------------------------------------------------------------
-
--- Formula
--- The data type for formulas (algegraic expressions).
---
--- It should be an extensible type, so that users of
--- the library can add new kinds of formulas.
--- For example, in this prototype I explore:
---   integer constants (FInt)
---   unknown variables (FVar)
---   sums (FSum)
---   products (FPro)
---   powers (FPow)
---   logarithms (FLog)
--- The user of the library may want to extend it with
--- trigonometric formulas or derivative formulas, for
--- example.
---
--- The idea is to let each kind of formula be a new data
--- type. Similar operations with them are implemented
--- using overloading. So there is a class (FORMULA) to collect
--- them and each kind of formula should be an instance of it.
-
-class (Eq f, Show f) => FORMULA f where
-    ty      :: f -> FType
-    intVal  :: f -> Integer
-    varName :: f -> String
-    argList :: f -> [Formula]
-    same    :: (FORMULA f1) => f -> f1 -> Bool
-    intVal   = error ""
-    varName  = error ""
-    argList  = error ""
-    same _ _ = False
-
--- By now extensibility is accomplished by existentialy
--- quantified type variables.
-
-data Formula = forall f . ( FORMULA f
-                          , AddT f
-                          ) =>
-               Formula f
-
-instance Show Formula where
-    show (Formula f) = show f
-
-instance Eq Formula where
-    (Formula x) == (Formula y) = same x y
-
-instance FORMULA Formula where
-    ty (Formula f) = ty f
-    intVal (Formula f) = intVal f
-    varName (Formula f) = varName f
-    argList (Formula f) = argList f
-    same (Formula f) = same f
-
--------------------------------------------------------------------------------
-
--- How to uniquely identify the type of formula?
--- Each type of formula is associated to a key (FType)
--- that identifies it.
---
--- Here I use an enumated data type. When extending
--- the library, the user will have to modify this
--- data type adding a new constant constructor.
-
-data FType = INT
-           | VAR
-           | SUM
-           | PRO
-           | POW
-           | LOG
-             deriving (Eq,Ord,Enum,Show)
-
--------------------------------------------------------------------------------
-
--- Integer formula
-
-data FInt = FInt Integer
-            deriving (Eq,Show)
-
-mkInt = Formula . FInt
-
-instance FORMULA FInt where
-    ty _ = INT
-    intVal (FInt x) = x
-    same (FInt x) y = isInt y && x == intVal y
-
--- Variable formula
-
-data FVar = FVar String
-            deriving (Eq,Show)
-
-mkVar = Formula . FVar
-
-instance FORMULA FVar where
-    ty _ = VAR
-    varName (FVar x) = x
-    same (FVar x) y = isVar y && x == varName y
-
--- Sum formula
-
-data FSum = FSum [Formula]
-            deriving (Eq,Show)
-
-mkSum = Formula . FSum
-
-instance FORMULA FSum where
-    ty _ = SUM
-    argList (FSum xs) = xs
-    same (FSum xs) y = isSum y && xs == argList y
-
--- Product formula
-
-data FPro = FPro [Formula]
-            deriving (Eq,Show)
-
-mkPro = Formula . FPro
-
-instance FORMULA FPro where
-    ty _ = PRO
-    argList (FPro xs) = xs
-    same (FPro xs) y = isPro y && xs == argList y
-
--- Exponentiation formula
-
-data FPow = FPow Formula Formula
-            deriving (Eq,Show)
-
-mkPow x y = Formula (FPow x y)
-
-instance FORMULA FPow where
-    ty _ = POW
-    argList (FPow b e) = [b,e]
-    same (FPow b e) y = isPow y && [b,e] == argList y
-
--- Logarithm formula
-
-data FLog = FLog Formula Formula
-            deriving (Eq,Show)
-
-mkLog x b = Formula (FLog x b)
-
-instance FORMULA FLog where
-    ty _ = LOG
-    argList (FLog x b) = [x,b]
-    same (FLog x b) y = isLog y && [x,b] == argList y
-
--------------------------------------------------------------------------------
-
--- Some predicates
-
-isInt x = ty x == INT
-isVar x = ty x == VAR
-isSum x = ty x == SUM
-isPro x = ty x == PRO
-isPow x = ty x == POW
-
-isZero x = isInt x && intVal x == 0
-
--------------------------------------------------------------------------------
-
--- Adding two formulas
--- This is a really very simple algorithm for adding
--- two formulas.
-
-add :: Formula -> Formula -> Formula
-add x y
-    | isJust u  = fromJust u
-    | isJust v  = fromJust v
-    | otherwise = mkSum [x,y]
-    where
-    u = addT x y
-    v = addT y x
-
-class AddT a where
-    addT :: a -> Formula -> Maybe Formula
-    addT _ _ = Nothing
-
-instance (FORMULA a) => AddT a where {}
-
-instance AddT Formula where
-    addT (Formula f) = addT f
-
-instance AddT FInt where
-    addT (FInt 0) y  = Just y
-    addT (FInt x) y
-        | isInt y   = Just (mkInt (x + intVal y))
-        | otherwise = Nothing
-
-instance AddT FSum where
-    addT (FSum xs) y
-        | isSum y   = Just (mkSum (merge xs (argList y)))
-        | otherwise = Just (mkSum (merge xs [y]))
-         where
-         merge = (++)
-
-instance AddT FLog where
-    addT (FLog x b) y
-        | isLog y && b == logBase y = Just (mkLog (mkPro [x,logExp y]) b)
-        | otherwise                 = Nothing
-         where
-         merge = (++)
-
-isLog x = ty x == LOG
-
-logBase x
-    | isLog x = head (tail (argList x))
-
-logExp x
-    | isLog x = head (argList x)
-
--------------------------------------------------------------------------------
-
--- Test addition of formulas
-
-main = print [ add (mkInt 78)  (mkInt 110)
-             , add (mkInt 0)   (mkVar "x")
-             , add (mkVar "x") (mkInt 0)
-             , add (mkVar "x") (mkVar "y")
-             , add (mkSum [mkInt 13,mkVar "x"]) (mkVar "y")
-             , add (mkLog (mkVar "x") (mkInt 10))
-                   (mkLog (mkVar "y") (mkInt 10))
-             , add (mkLog (mkVar "x") (mkInt 10))
-                   (mkLog (mkVar "y") (mkVar "e"))
-             ]
diff --git a/ghc/tests/simplCore/should_run/Makefile b/ghc/tests/simplCore/should_run/Makefile
deleted file mode 100644 (file)
index 08c8a8a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-# NB: -O to test simplifier
-SRC_HC_OPTS += -dcore-lint -O
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/simplCore/should_run/simplrun001.hs b/ghc/tests/simplCore/should_run/simplrun001.hs
deleted file mode 100644 (file)
index 6cbbf76..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! Test filter fusion
-
--- In GHC 4.06, the filterFB rule was back to front, which
--- made this program hit the "error foo" case instead of
--- working fine.
-
-
-module Main where
-
-main :: IO ()
-main = print (length (filter (not . foo)
-                             (filter (const False) [Nothing])))
-  where foo (Just x) = x
-        foo _        = error "foo"
diff --git a/ghc/tests/simplCore/should_run/simplrun001.stderr b/ghc/tests/simplCore/should_run/simplrun001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/simplCore/should_run/simplrun001.stdout b/ghc/tests/simplCore/should_run/simplrun001.stdout
deleted file mode 100644 (file)
index 573541a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/ghc/tests/simplCore/should_run/simplrun002.hs b/ghc/tests/simplCore/should_run/simplrun002.hs
deleted file mode 100644 (file)
index aaa6a4a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! A rules test
--- At one time the rule got too specialised a type:
---
---  _R "ffoo" forall {@ a1 v :: (a1, ((), ()))} 
---           fst @ a1 @ () (sndSnd @ a1 @ () @ () v) = fst @ a1 @ ((), ()) v
-
-
-module Main where
-
-import IO
-import PrelIOBase( unsafePerformIO )
-
-sndSnd (a,(b,c)) = (a,c)
-
-trace x y = unsafePerformIO (hPutStr stderr x >> hPutStr stderr "\n" >> return y)
-
-{-# RULES "foo" forall v .  fst (sndSnd v) = trace "Yes" (fst v) #-}
-
-main :: IO ()
-main = print (fst (sndSnd (True, (False,True))))
diff --git a/ghc/tests/simplCore/should_run/simplrun002.stderr b/ghc/tests/simplCore/should_run/simplrun002.stderr
deleted file mode 100644 (file)
index dcd7a5d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Yes
diff --git a/ghc/tests/simplCore/should_run/simplrun002.stdout b/ghc/tests/simplCore/should_run/simplrun002.stdout
deleted file mode 100644 (file)
index 0ca9514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/ghc/tests/stranal/Makefile b/ghc/tests/stranal/Makefile
deleted file mode 100644 (file)
index 5268832..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_compile
-
-include $(TOP)/mk/target.mk
-
diff --git a/ghc/tests/stranal/should_compile/Makefile b/ghc/tests/stranal/should_compile/Makefile
deleted file mode 100644 (file)
index 070a5de..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -O -dcore-lint
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/stranal/should_compile/default.lhs b/ghc/tests/stranal/should_compile/default.lhs
deleted file mode 100644 (file)
index 8557aa6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-> module Test where
-> data Boolean = FF | TT
-> data Pair a b = MkPair a b
-> data LList alpha = Nill | Conss alpha (LList alpha) 
-> data Nat = Zero | Succ Nat
-> data Tree x = Leaf x | Node (Tree x) (Tree x) 
-> data A a = MkA a (A a) 
->
-> append :: LList a -> LList a -> LList a
-> append  xs ys  = case xs of
->                   Conss z zs  -> Conss z (append zs ys) 
->                   v -> ys
-
-
-
-
diff --git a/ghc/tests/stranal/should_compile/default.stderr b/ghc/tests/stranal/should_compile/default.stderr
deleted file mode 100644 (file)
index 7f471e0..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-================================================================================
-Simplified:
-`$d5'  ::  `{PrelBase.Eval (Pair a b)}'
-`$d5' =
-    _/\_ `$x0' `$x1' -> `PrelBase.void'
-`$d4'  ::  `{PrelBase.Eval (LList alpha)}'
-`$d4' =
-    _/\_ `$x0' -> `PrelBase.void'
-`$d2'  ::  `{PrelBase.Eval (Tree x)}'
-`$d2' =
-    _/\_ `$x0' -> `PrelBase.void'
-`$d1'  ::  `{PrelBase.Eval (A a)}'
-`$d1' =
-    _/\_ `$x0' -> `PrelBase.void'
-`MkA'  ::  `a -> A a -> A a'
-`MkA' =
-    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
-                   `$x1' `$x2'  ::  `A $x0'
-                         `$x2' ->
-       `MkA' {_@_ `$x0' `$x1' `$x2'}
-`MkPair'  ::  `a -> b -> Pair a b'
-`MkPair' =
-    _/\_ `$x0' `$x1' -> \ `$x2'  ::  `$x0'
-                         `$x2' `$x3'  ::  `$x1'
-                               `$x3' ->
-       `MkPair' {_@_ `$x0' _@_ `$x1' `$x2' `$x3'}
-`Leaf'  ::  `x -> Tree x'
-`Leaf' =
-    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
-                   `$x1' ->
-       `Leaf' {_@_ `$x0' `$x1'}
-`Node'  ::  `Tree x -> Tree x -> Tree x'
-`Node' =
-    _/\_ `$x0' -> \ `$x1'  ::  `Tree $x0'
-                   `$x1' `$x2'  ::  `Tree $x0'
-                         `$x2' ->
-       `Node' {_@_ `$x0' `$x1' `$x2'}
-`Zero'  ::  `Nat'
-`Zero' =
-    `Zero' {}
-`Succ'  ::  `Nat -> Nat'
-`Succ' =
-    \ `$x0'  ::  `Nat'
-      `$x0' ->
-       `Succ' {`$x0'}
-`Nill'  ::  `LList alpha'
-`Nill' =
-    _/\_ `$x0' -> `Nill' {_@_ `$x0'}
-`Conss'  ::  `alpha -> LList alpha -> LList alpha'
-`Conss' =
-    _/\_ `$x0' -> \ `$x1'  ::  `$x0'
-                   `$x1' `$x2'  ::  `LList $x0'
-                         `$x2' ->
-       `Conss' {_@_ `$x0' `$x1' `$x2'}
-Rec {
-`append'  ::  `LList taC4 -> LList taC4 -> LList taC4'
-`append' =
-    _/\_ `$x0' -> \ `$x1'  ::  `LList $x0'
-                   `$x1' `$x2'  ::  `LList $x0'
-                         `$x2' ->
-       case `$x1' of {
-         `Nill' -> `$x2';
-         `Conss' `$x3' `$x4' ->
-             let {
-               `$x5'  ::  `LList $x0'
-               `$x5' =
-                   `append' _@_ `$x0' `$x4' `$x2'
-             } in  `Conss' {_@_ `$x0' `$x3' `$x5'};
-       }
-end Rec }
-`FF'  ::  `Boolean'
-`FF' =
-    `FF' {}
-`TT'  ::  `Boolean'
-`TT' =
-    `TT' {}
-`$d6'  ::  `{PrelBase.Eval Boolean}'
-`$d6' =
-    `PrelBase.void'
-`$d3'  ::  `{PrelBase.Eval Nat}'
-`$d3' =
-    `PrelBase.void'
diff --git a/ghc/tests/stranal/should_compile/fact.lhs b/ghc/tests/stranal/should_compile/fact.lhs
deleted file mode 100644 (file)
index 20b2256..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-> module Test where
-> fact :: Int -> Int
-> fact n = if n==0 then 2 else (fact n) * n
diff --git a/ghc/tests/stranal/should_compile/fact.stderr b/ghc/tests/stranal/should_compile/fact.stderr
deleted file mode 100644 (file)
index 4b4d5fc..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-================================================================================
-Simplified:
-Rec {
-`$g0'  ::  `GHC.Int# -> PrelBase.Int'
-`$g0' =
-    \ `$x0'  ::  `GHC.Int#'
-      `$x0' ->
-       case# `$x0' of {
-         0 -> `PrelBase.I#' {2};
-         `$x1' ->
-             case `$g0' `$x0' of { `PrelBase.I#' `$x2'  ->
-             case# *#! `$x2' `$x0' of { `$x3' -> `PrelBase.I#' {`$x3'};};};
-       }
-end Rec }
-`fact'  ::  `PrelBase.Int -> PrelBase.Int'
-`fact' =
-    \ `$x0'  ::  `PrelBase.Int'
-      `$x0' ->
-       case `$x0' of { `PrelBase.I#' `$x1'  -> `$g0' `$x1';}
diff --git a/ghc/tests/stranal/should_compile/fun.hs b/ghc/tests/stranal/should_compile/fun.hs
deleted file mode 100644 (file)
index 5bab460..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Test where
-data Fun = MkFun (Fun -> Fun)
-data LList a = Nill | Conss a (LList a)
-
-g :: Fun -> Fun
-g f = f
diff --git a/ghc/tests/stranal/should_compile/fun.stderr b/ghc/tests/stranal/should_compile/fun.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/goo.hs b/ghc/tests/stranal/should_compile/goo.hs
deleted file mode 100644 (file)
index 00282bb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-module Test where
-data Goo a = Gsimpl | Gcompl ([Goo a]) 
-data Moo a b = Msimple | Mcompl (Moo b a)
-
-
-idGoo :: Goo a -> Goo a
-idGoo x = x
-
-idMoo :: Moo a b -> Moo a b
-idMoo x = x
diff --git a/ghc/tests/stranal/should_compile/goo.stderr b/ghc/tests/stranal/should_compile/goo.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/ins.hs b/ghc/tests/stranal/should_compile/ins.hs
deleted file mode 100644 (file)
index a50320c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
--- !! TEST OF DEFACTORISATION FOR FUNCTIONS THAT DROP 
--- !!             POLYMORPHIC VARIABLES
-
-module Test where
-data Boolean = FF | TT
-data Pair a b = MkPair a b
-data LList alpha = Nill | Conss alpha (LList alpha) 
-data Nat = Zero | Succ Nat
-data Tree x = Leaf x | Node (Tree x) (Tree x) 
-data A a = MkA a (A a) 
-
-append :: LList a -> LList a -> LList a
-append  xs ys  = case xs of
-                  Nill -> ys 
-                  Conss z zs  -> Conss z (append zs ys) 
-
--- The following function drops @b@.
-
-flat :: Tree (Pair a b) -> LList a
-flat t =  case t of
-              Leaf (MkPair a b) -> Conss a Nill 
-              Node l r -> append (flat l) (flat r)
-
-fl :: Boolean -> LList Boolean
-fl x = flat (Leaf (MkPair TT Zero)) 
-
-
diff --git a/ghc/tests/stranal/should_compile/ins.stderr b/ghc/tests/stranal/should_compile/ins.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/map.hs b/ghc/tests/stranal/should_compile/map.hs
deleted file mode 100644 (file)
index f4ec1ec..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-module Test where
-data Boolean = FF | TT
-data Pair a b = MkPair a b
-data LList alpha = Nill | Conss alpha (LList alpha) 
-data Nat = Zero | Succ Nat
-data Tree x = Leaf x | Node (Tree x) (Tree x) 
-data A a = MkA a (A a) 
-
-{-
-map :: (a -> b) -> [a] -> [b]
-map f xs = case xs of
-             []     -> []
-             (y:ys) -> (f y):(map f ys)
-
-map_ide :: [[a]] -> [[a]]
-map_ide = map (\x->x)
--}
-
-my_id :: a -> a
-my_id x = x
-
-idNat :: Nat -> Nat
-idNat x = x
-
-idBool :: Boolean -> Boolean
-idBool x = x
-
-fun :: (a->b) -> a -> b
-fun f x = g f
- where 
-  g f   = f x
-
diff --git a/ghc/tests/stranal/should_compile/map.stderr b/ghc/tests/stranal/should_compile/map.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/sim.hs b/ghc/tests/stranal/should_compile/sim.hs
deleted file mode 100644 (file)
index d6de6ec..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-module Test where
-data Boolean = FF | TT
-data Pair a b = MkPair a b
-data LList alpha = Nill | Conss alpha (LList alpha) 
-data Nat = Zero | Succ Nat
-data Tree x = Leaf x | Node (Tree x) (Tree x) 
-data A a = MkA a (A a) 
-{-
-id :: a -> a
-id x = x      
-
-idb :: Boolean -> Boolean
-idb b = b
-
-swap :: Pair a b -> Pair b a
-swap t = case t of 
-           MkPair x y -> MkPair y x
-
-bang :: A (A a) -> Boolean
-bang x = case x of
-           MkA y ys -> TT
-
-neg :: Boolean -> Boolean
-neg b = case b of 
-         FF -> TT 
-         TT -> FF 
-
-null :: LList x -> Boolean
-null l = case l of 
-           Nill -> TT
-           _ -> FF
-
-loop :: Boolean -> a
-loop b = loop b
--}
-idl ::  LList a -> LList a
-idl xs  = case xs of
-           Conss y ys -> Conss y (idl ys)
-           _ -> Nill 
-{-
-idn :: Nat -> Nat
-idn n = case n of
-          Zero -> Zero 
-          Succ m -> Succ (idn m)
-
-add :: Nat -> Nat -> Nat
-add a b = case a of 
-            Zero -> b
-            Succ c -> Succ (add c b) 
-
-length :: LList a -> Nat
-length xs = case xs of 
-              Nill -> Zero
-              Conss y ys  -> Succ(length ys) 
-
-before :: LList Nat -> LList Nat
-before xs = case xs of
-              Nill -> Nill
-              Conss y ys -> case y of 
-                             Zero -> Nill
-                             Succ n -> Conss y (before ys)     
-
-reverse :: LList a -> LList a
-reverse rs = case rs of
-               Nill -> Nill
-               Conss y ys -> append (reverse ys) (Conss y Nill) 
-
-f :: Nat -> Nat
-f n = case n of
-        Zero -> Zero
-        Succ m -> Succ (g m)
-
-g :: Nat -> Nat
-g n = case n of
-       Zero -> Zero
-       Succ m -> Succ (f m)
-
-append :: LList a -> LList a -> LList a
-append  xs ys  = case xs of
-                  Nill -> ys 
-                  Conss z zs  -> Conss z (append zs ys) 
-
-flatten :: Tree alpha -> LList alpha
-flatten t = case t of
-              Leaf x   -> Conss x Nill 
-              Node l r -> append (flatten l) (flatten r)
-
-sum :: Tree Nat -> Nat
-sum t = case t of
-          Leaf t   -> t
-          Node l r -> add (sum l) (sum r) 
-
-suml :: LList Nat -> Nat
-suml Nill = Zero
-suml (Conss n ns) = add n (suml ns)
-
-map :: (a -> b) -> LList a -> LList b
-map f xs = case xs of
-             Nill -> Nill
-             Conss y ys -> Conss (f y) (map f ys)
--}
-
-
diff --git a/ghc/tests/stranal/should_compile/sim.stderr b/ghc/tests/stranal/should_compile/sim.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/str001.hs b/ghc/tests/stranal/should_compile/str001.hs
deleted file mode 100644 (file)
index 2442d44..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-{-# OPTIONS -O #-}
-
-newtype Num a => Point2 a     = Point2 (a,a)
-
-area2 :: Num a => Point2 a -> Point2 a -> Point2 a -> a
-area2 (Point2 (px,py)) (Point2 (qx,qy)) (Point2 (rx,ry))
-     = (px-qx) * (py-ry) - (py-qy) * (px-rx)
diff --git a/ghc/tests/stranal/should_compile/str001.stderr b/ghc/tests/stranal/should_compile/str001.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/str002.hs b/ghc/tests/stranal/should_compile/str002.hs
deleted file mode 100644 (file)
index 65fb8a7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! Recursive newtypes
---     Needs -O
--- This one made GHC < 5.00.2 go into an 
--- infinite loop in the strictness analysier
-
-module Foo where
-
-newtype V = MkV V
-
-f :: V -> V
-f (MkV v) = v
-
diff --git a/ghc/tests/stranal/should_compile/str002.stderr b/ghc/tests/stranal/should_compile/str002.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/syn.hs b/ghc/tests/stranal/should_compile/syn.hs
deleted file mode 100644 (file)
index 6693db7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! THIS TEST IS FOR TYPE SYNONIMS AND FACTORISATION IN THEIR PRESENCE.
-
-module Test where
-data M a = A | B a (M a)
-data L a = N | C a (Syn a)
-type Syn b = L b
-
-idL :: L (Syn c) -> L (Syn c)
-idL N       = N
-idL (C x l) = C x (idL l) 
-
-idM:: M (L (Syn x)) -> M (L (Syn x))
-idM A       = A
-idM (B x l) = B (idL x) (idM l) 
-
diff --git a/ghc/tests/stranal/should_compile/syn.stderr b/ghc/tests/stranal/should_compile/syn.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/test.hs b/ghc/tests/stranal/should_compile/test.hs
deleted file mode 100644 (file)
index c984c32..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Test where
-data LList t = Nill | Conss t (LList t)
-data BBool = TTrue | FFalse
-
-f Nill = TTrue
-f (Conss a as) = FFalse
diff --git a/ghc/tests/stranal/should_compile/test.stderr b/ghc/tests/stranal/should_compile/test.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/tst.hs b/ghc/tests/stranal/should_compile/tst.hs
deleted file mode 100644 (file)
index 5612921..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module Test where
-a :: [a] -> [[a]]
-a x = [x]
diff --git a/ghc/tests/stranal/should_compile/tst.stderr b/ghc/tests/stranal/should_compile/tst.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/stranal/should_compile/unu.hs b/ghc/tests/stranal/should_compile/unu.hs
deleted file mode 100644 (file)
index 54bb25e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-module Test where
-data Boolean = FF | TT
-data Pair a b = Mkpair a b
-data LList alpha = Nill | Conss alpha (LList alpha) 
-data Nat = Zero | Succ Nat
-data Tree t = Leaf t | Node (Tree t) (Tree t) 
-data A a = MkA a (A a) 
-data Foo baz = MkFoo (Foo (Foo baz))
-{-
- append1 :: LList a -> LList a -> LList a
- append1 xs ys = append2 xs
-   where
-     append2 xs = case xs of
-                    Nill -> ys
-                    Conss x xs -> Conss x (append3 xs)
-     append3 xs = case xs of
-                    Nill -> ys
-                    Conss x xs -> Conss x (append2 xs)
-
- loop :: a -> a
- loop x =  loop x
-
- hd :: LList b -> b
- hd Nill         = loop
- hd (Conss y ys) = y
-
- hdb :: LList (LList b) -> LList b
- hdb = hd
-
- append :: [a] -> [a] -> [a]
- append [] ys     = ys
- append (x:xs) ys = x:(append xs ys)
- f :: [a] -> [a]
- f y = append x (f y)
-   where  x = append x (f y)
--}
-app :: LList a -> LList a -> LList a
-app Nill Nill = Nill
-app  xs ys  = case xs of
-                Nill -> ys 
-                Conss z zs  -> Conss z (app zs ys) 
-{-
- app :: LList a -> LList a -> LList a
- app  xs ys = case xs of
-               Nill -> case ys of
-                        Nill -> Nill
-                        Conss u us -> ap 
-               Conss a as -> ap 
-  where ap = case xs of
-              Nill -> ys 
-              Conss z zs  -> Conss z (app zs ys) 
-
- app :: LList a -> LList a -> LList a
- app  xs ys = case xs of
-               Nill -> case ys of
-                        Nill -> Nill
-                        Conss u us -> ap xs ys
-               Conss a as -> ap xs ys
-
- ap xs ys = case xs of
-              Nill -> ys 
-              Conss z zs  -> Conss z (app zs ys) 
-
- ap :: LList a -> LList a -> LList a
- ap  xs ys  = case xs of
-                 Nill -> ys 
-                 Conss z zs  -> Conss z (ap zs ys) 
-
- app :: LList a -> LList a -> LList a
- app  xs ys = case xs of
-               Nill -> case ys of
-                        Nill -> Nill
-                        Conss u us -> ap xs ys
-               Conss a as -> ap xs ys
--}
diff --git a/ghc/tests/stranal/should_compile/unu.stderr b/ghc/tests/stranal/should_compile/unu.stderr
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ghc/tests/typecheck/Makefile b/ghc/tests/typecheck/Makefile
deleted file mode 100644 (file)
index eb82598..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-TOP = ..
-include $(TOP)/mk/boilerplate.mk
-
-SUBDIRS = should_fail should_compile should_run
-
-include $(TOP)/mk/target.mk
-
-
diff --git a/ghc/tests/typecheck/should_compile/ClassFoo.hi b/ghc/tests/typecheck/should_compile/ClassFoo.hi
deleted file mode 100644 (file)
index fbda086..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-_interface_ ClassFoo 1
-_exports_
-ClassFoo Foo(op1 op2);
-_declarations_
-1 class Foo a where { op1 :: a -> PrelBase.Int; op2 :: a -> a -> PrelBase.Int} ;
diff --git a/ghc/tests/typecheck/should_compile/M.hi b/ghc/tests/typecheck/should_compile/M.hi
deleted file mode 100644 (file)
index ffb4e0c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-interface M where
-class (ORD a, Text a) => EQ a where (===) :: a -> a -> Bool
-class (Num a) => ORD a
-data NUM = ONE | TWO
diff --git a/ghc/tests/typecheck/should_compile/Makefile b/ghc/tests/typecheck/should_compile/Makefile
deleted file mode 100644 (file)
index d49a6a1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_compile.mk
-
-SRC_HC_OPTS += -dcore-lint -fno-warn-incomplete-patterns
-
-tc019_HC_OPTS = -fglasgow-exts
-tc065_HC_OPTS = -package lang -package data
-tc085_HC_OPTS = -package lang
-tc087_HC_OPTS = -fglasgow-exts
-tc088_HC_OPTS = -package lang
-tc089_HC_OPTS = -H12m
-tc097_HC_OPTS = -fglasgow-exts
-tc100_HC_OPTS = -O
-tc108_HC_OPTS = -fglasgow-exts
-
-# mkdependHS doesn't understand OPTIONS pragmas...
-SRC_MKDEPENDHS_OPTS += -fglasgow-exts
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/typecheck/should_compile/TheUtils.hi b/ghc/tests/typecheck/should_compile/TheUtils.hi
deleted file mode 100644 (file)
index 7481f0f..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-__interface TheUtils 2 0 where
-import PrelBase 1 :: Int 1 Maybe 1;
-__instimport PrelArr ; __instimport IO ; __instimport PrelNum ;
-__export TheUtils appEager assertPanic assertPprPanic assoc assocDefault assocDefaultUsing assocUsing cmpList cmpPString endsWith equivClasses hasNoDups isIn isSingleton isnzqtIn lengthExceeds mapAccumB mapAccumL mapAccumR mapAndUnzip mapAndUnzip3 mapEager nOfThem naturalMergeSortLe panic paniczh pprError pprPanic pprPaniczh pprTrace removeDups returnEager runEager runs sortLt startsWith thenCmp thenEager transitiveClosure unzipWith zipEqual zipLazy zipWith3Equal zipWith4Equal zipWithEqual Eager Ord3{cmp};
-
-instance {Ord3 PrelBase.Int} = _fOrdc;
-instance __forall [a] {Ord3 a} => {Ord3 (PrelBase.Maybe a)} = _fOrda;
-instance __forall [a] {Ord3 a} => {Ord3 [a]} = _fOrdb;
-
-2 _fOrdc :: {Ord3 PrelBase.Int} ;
-1 _fOrda :: __forall [a] {Ord3 a} => {Ord3 (PrelBase.Maybe a)} ;
-1 _fOrdb :: __forall [a] {Ord3 a} => {Ord3 [a]} ;
-1 _mcmp :: __forall [a] {Ord3 a} => a -> a -> GHC.Intzh ;
-2 type Eager rvB rvC = (rvC -> rvB) -> rvB ;
-2 class Ord3 rvx where {cmp :: rvx -> rvx -> GHC.Intzh} ;
-1 appEager :: __forall [a b] => Eager b a -> (a -> b) -> b ;
-1 assertPanic :: __forall [a] => PrelBase.String -> PrelBase.Int -> a ;
-2 assertPprPanic :: __forall [a] => PrelBase.String -> PrelBase.Int -> Pretty.Doc -> a ;
-1 assoc :: __forall [a b] {PrelBase.Eq a} => PrelBase.String -> [(a, b)] -> a -> b ;
-1 assocDefault :: __forall [a b] {PrelBase.Eq a} => b -> [(a, b)] -> a -> b ;
-1 assocDefaultUsing :: __forall [a b] => (a -> a -> PrelBase.Bool) -> b -> [(a, b)] -> a -> b ;
-1 assocUsing :: __forall [a b] => (a -> a -> PrelBase.Bool) -> PrelBase.String -> [(a, b)] -> a -> b ;
-1 cmpList :: __forall [a] => (a -> a -> GHC.Intzh) -> [a] -> [a] -> GHC.Intzh ;
-1 endsWith :: PrelBase.String -> PrelBase.String -> PrelBase.Maybe PrelBase.String ;
-1 equivClasses :: __forall [a] => (a -> a -> GHC.Intzh) -> [a] -> [[a]] ;
-1 hasNoDups :: __forall [a] {PrelBase.Eq a} => [a] -> PrelBase.Bool ;
-1 infixr 9 thenCmp ;
-1 isIn :: __forall [a] {PrelBase.Eq a} => PrelBase.String -> a -> [a] -> PrelBase.Bool ;
-1 isSingleton :: __forall [a] => [a] -> PrelBase.Bool ;
-1 isnzqtIn :: __forall [a] {PrelBase.Eq a} => PrelBase.String -> a -> [a] -> PrelBase.Bool ;
-1 lengthExceeds :: __forall [a] => [a] -> PrelBase.Int -> PrelBase.Bool ;
-1 mapAccumB :: __forall [a b c d] => (b -> c -> a -> (b, c, d)) -> b -> c -> [a] -> (b, c, [d]) ;
-1 mapAccumL :: __forall [a b c] => (b -> a -> (b, c)) -> b -> [a] -> (b, [c]) ;
-1 mapAccumR :: __forall [a b c] => (b -> a -> (b, c)) -> b -> [a] -> (b, [c]) ;
-1 mapAndUnzip :: __forall [a b c] => (a -> (b, c)) -> [a] -> ([b], [c]) ;
-1 mapAndUnzip3 :: __forall [a b c d] => (a -> (b, c, d)) -> [a] -> ([b], [c], [d]) ;
-1 mapEager :: __forall [a b c] => (a -> (c -> b) -> b) -> [a] -> ([c] -> b) -> b ;
-1 nOfThem :: __forall [a] => PrelBase.Int -> a -> [a] ;
-1 naturalMergeSortLe :: __forall [a] => (a -> a -> PrelBase.Bool) -> [a] -> [a] ;
-1 panic :: __forall [a] => [PrelBase.Char] -> a ;
-1 paniczh :: PrelBase.String -> GHC.Intzh ;
-1 pprError :: __forall [a b] {PrelBase.Show a} => [PrelBase.Char] -> a -> b ;
-1 pprPanic :: __forall [a b] {PrelBase.Show a} => [PrelBase.Char] -> a -> b ;
-1 pprPaniczh :: __forall [a] {PrelBase.Show a} => [PrelBase.Char] -> a -> GHC.Intzh ;
-1 pprTrace :: __forall [a b] {PrelBase.Show a} => [PrelBase.Char] -> a -> b -> b ;
-1 removeDups :: __forall [a] => (a -> a -> GHC.Intzh) -> [a] -> ([a], [[a]]) ;
-1 returnEager :: __forall [a b] => b -> (b -> a) -> a ;
-1 runEager :: __forall [a] => Eager a a -> a ;
-1 runs :: __forall [a] => (a -> a -> PrelBase.Bool) -> [a] -> [[a]] ;
-1 sortLt :: __forall [a] => (a -> a -> PrelBase.Bool) -> [a] -> [a] ;
-1 startsWith :: PrelBase.String -> PrelBase.String -> PrelBase.Maybe PrelBase.String ;
-1 thenCmp :: GHC.Intzh -> GHC.Intzh -> GHC.Intzh ;
-1 thenEager :: __forall [a b c] => Eager b a -> (a -> (c -> b) -> b) -> (c -> b) -> b ;
-1 transitiveClosure :: __forall [a] => (a -> [a]) -> (a -> a -> PrelBase.Bool) -> [a] -> [a] ;
-1 unzipWith :: __forall [a b c] => (a -> b -> c) -> [(a, b)] -> [c] ;
-1 zipEqual :: __forall [a b] => PrelBase.String -> [a] -> [b] -> [(a, b)] ;
-1 zipLazy :: __forall [a b] => [a] -> [b] -> [(a, b)] ;
-1 zipWith3Equal :: __forall [a b c d] => PrelBase.String -> (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] ;
-1 zipWith4Equal :: __forall [a b c d e] => PrelBase.String -> (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e] ;
-1 zipWithEqual :: __forall [a b c] => PrelBase.String -> (a -> b -> c) -> [a] -> [b] -> [c] ;
diff --git a/ghc/tests/typecheck/should_compile/tc001.hs b/ghc/tests/typecheck/should_compile/tc001.hs
deleted file mode 100644 (file)
index c3b0a78..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-a x = y+2 where y = x+3
diff --git a/ghc/tests/typecheck/should_compile/tc002.hs b/ghc/tests/typecheck/should_compile/tc002.hs
deleted file mode 100644 (file)
index 85f1a91..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-b = if True then 1 else 2
diff --git a/ghc/tests/typecheck/should_compile/tc003.hs b/ghc/tests/typecheck/should_compile/tc003.hs
deleted file mode 100644 (file)
index 70459c3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module ShouldSucceed where
-
--- This is a somewhat surprising program.
--- It shows up the monomorphism restriction, *and* ambiguity resolution!
--- The binding is a pattern binding without a signature, so it is monomorphic.
--- Hence the types of c,d,e are not universally quantified.  But then
--- their type variables are ambiguous, so the ambiguity resolution leaps
--- into action, and resolves them to Integer.
-
--- That's why we check the interface file in the test suite.
-
-(c@(d,e)) = if True then (1,2) else (1,3)
diff --git a/ghc/tests/typecheck/should_compile/tc004.hs b/ghc/tests/typecheck/should_compile/tc004.hs
deleted file mode 100644 (file)
index a062730..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldSucceed where
-
-f x = case x of
-       True -> True
-       False -> x
diff --git a/ghc/tests/typecheck/should_compile/tc005.hs b/ghc/tests/typecheck/should_compile/tc005.hs
deleted file mode 100644 (file)
index 9d39da8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-g ((x:z),y) = x
-g (x,y) = 2
diff --git a/ghc/tests/typecheck/should_compile/tc006.hs b/ghc/tests/typecheck/should_compile/tc006.hs
deleted file mode 100644 (file)
index 2a22688..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-h = 1:h
diff --git a/ghc/tests/typecheck/should_compile/tc007.hs b/ghc/tests/typecheck/should_compile/tc007.hs
deleted file mode 100644 (file)
index c654585..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-j = 2
-
-k = 1:j:l
-
-l = 0:k
-
-m = j+j
diff --git a/ghc/tests/typecheck/should_compile/tc008.hs b/ghc/tests/typecheck/should_compile/tc008.hs
deleted file mode 100644 (file)
index 236b575..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-n True = 1
-n False = 0
diff --git a/ghc/tests/typecheck/should_compile/tc009.hs b/ghc/tests/typecheck/should_compile/tc009.hs
deleted file mode 100644 (file)
index b682a94..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-o (True,x) = x
-o (False,y) = y+1
diff --git a/ghc/tests/typecheck/should_compile/tc010.hs b/ghc/tests/typecheck/should_compile/tc010.hs
deleted file mode 100644 (file)
index 8ec9afd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-p = [(y+2,True) | y <- [1,2]]
diff --git a/ghc/tests/typecheck/should_compile/tc011.hs b/ghc/tests/typecheck/should_compile/tc011.hs
deleted file mode 100644 (file)
index 24c5b3b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-x@_ = x
diff --git a/ghc/tests/typecheck/should_compile/tc012.hs b/ghc/tests/typecheck/should_compile/tc012.hs
deleted file mode 100644 (file)
index 6f5e954..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-q = \ y -> y
diff --git a/ghc/tests/typecheck/should_compile/tc013.hs b/ghc/tests/typecheck/should_compile/tc013.hs
deleted file mode 100644 (file)
index f6a08b5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-(r,s) = (1,'a')
diff --git a/ghc/tests/typecheck/should_compile/tc014.hs b/ghc/tests/typecheck/should_compile/tc014.hs
deleted file mode 100644 (file)
index 97ce375..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-t = 1+t
diff --git a/ghc/tests/typecheck/should_compile/tc015.hs b/ghc/tests/typecheck/should_compile/tc015.hs
deleted file mode 100644 (file)
index 41c902b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-u x = \ (y,z) -> x
diff --git a/ghc/tests/typecheck/should_compile/tc016.hs b/ghc/tests/typecheck/should_compile/tc016.hs
deleted file mode 100644 (file)
index 5f3c7e5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-f x@_ y@_ = x
diff --git a/ghc/tests/typecheck/should_compile/tc017.hs b/ghc/tests/typecheck/should_compile/tc017.hs
deleted file mode 100644 (file)
index ec51aeb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-v | True = v+1
-  | False = v
diff --git a/ghc/tests/typecheck/should_compile/tc018.hs b/ghc/tests/typecheck/should_compile/tc018.hs
deleted file mode 100644 (file)
index 7fb398c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-w = a where a = y
-            y = 2
diff --git a/ghc/tests/typecheck/should_compile/tc019.hs b/ghc/tests/typecheck/should_compile/tc019.hs
deleted file mode 100644 (file)
index 3cfe5ea..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-(al:am) = [y+1 | (y,z) <- [(1,2)]]
diff --git a/ghc/tests/typecheck/should_compile/tc020.hs b/ghc/tests/typecheck/should_compile/tc020.hs
deleted file mode 100644 (file)
index a0ef679..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-f x = a where a = x:a
diff --git a/ghc/tests/typecheck/should_compile/tc021.hs b/ghc/tests/typecheck/should_compile/tc021.hs
deleted file mode 100644 (file)
index 418fa38..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
-f x = a
-
-a = (x,x)
-
-x = x
diff --git a/ghc/tests/typecheck/should_compile/tc022.hs b/ghc/tests/typecheck/should_compile/tc022.hs
deleted file mode 100644 (file)
index 1a04d7e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldSucceed where
-
-main = iD iD
-
-iD x = x
diff --git a/ghc/tests/typecheck/should_compile/tc023.hs b/ghc/tests/typecheck/should_compile/tc023.hs
deleted file mode 100644 (file)
index b996719..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
-main  = s k k 
-
-s f g x = f x (g x)
-
-k x y = x
diff --git a/ghc/tests/typecheck/should_compile/tc024.hs b/ghc/tests/typecheck/should_compile/tc024.hs
deleted file mode 100644 (file)
index e28d1ac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
-main x = s k k x
-
-s f g x = f x (g x)
-
-k x y = x
diff --git a/ghc/tests/typecheck/should_compile/tc025.hs b/ghc/tests/typecheck/should_compile/tc025.hs
deleted file mode 100644 (file)
index e9adf9a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-g x = f (f True x) x where f x y = if x then y else (f x y)
diff --git a/ghc/tests/typecheck/should_compile/tc026.hs b/ghc/tests/typecheck/should_compile/tc026.hs
deleted file mode 100644 (file)
index 3e718a5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-g x = f (f True x) x 
-f x y = if x then y else (f x y)
diff --git a/ghc/tests/typecheck/should_compile/tc027.hs b/ghc/tests/typecheck/should_compile/tc027.hs
deleted file mode 100644 (file)
index 6edc01b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldSucceed where
-
-h x = f (f True x) x 
-f x y = if x then y else (g y x)
-g y x = if x then y else (f x y)
diff --git a/ghc/tests/typecheck/should_compile/tc028.hs b/ghc/tests/typecheck/should_compile/tc028.hs
deleted file mode 100644 (file)
index 49a0835..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-type H = (Int,Bool)
diff --git a/ghc/tests/typecheck/should_compile/tc029.hs b/ghc/tests/typecheck/should_compile/tc029.hs
deleted file mode 100644 (file)
index c44b78f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldSucceed where
-
-type G = [Int]
-
-data K = H Bool | M G
-
diff --git a/ghc/tests/typecheck/should_compile/tc030.hs b/ghc/tests/typecheck/should_compile/tc030.hs
deleted file mode 100644 (file)
index 004bc22..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldSucceed where
-
-type H = [Bool]
-
-type G = (H,Char)
diff --git a/ghc/tests/typecheck/should_compile/tc031.hs b/ghc/tests/typecheck/should_compile/tc031.hs
deleted file mode 100644 (file)
index c55bf11..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-data Rec = Node Int Rec
diff --git a/ghc/tests/typecheck/should_compile/tc032.hs b/ghc/tests/typecheck/should_compile/tc032.hs
deleted file mode 100644 (file)
index 9c43bbb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-data AList b = Node b [b] | Other (b,Char)
diff --git a/ghc/tests/typecheck/should_compile/tc033.hs b/ghc/tests/typecheck/should_compile/tc033.hs
deleted file mode 100644 (file)
index 7111d75..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
-data Twine = Twine2 Twist
-
-data Twist = Twist2 Twine
-
-type F = Twine 
diff --git a/ghc/tests/typecheck/should_compile/tc034.hs b/ghc/tests/typecheck/should_compile/tc034.hs
deleted file mode 100644 (file)
index 0e7c4a6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module ShouldSucceed where
-
-data AList a = ANull | ANode a (AList a)
-
-type IntList = AList Int
-
-g (ANull) = 2
-g (ANode b (ANode c d)) | b = 3
-                        | True = 4
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc035.hs b/ghc/tests/typecheck/should_compile/tc035.hs
deleted file mode 100644 (file)
index b8dd554..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-type AnnExpr a = (a,Expr a)
-
-data Expr a = Var [Char]
-              | App (AnnExpr a) (AnnExpr a)
-
-g (a,(Var name)) = [name]
-g (a,(App e1 e2)) = (g e1) ++ (g e2)
diff --git a/ghc/tests/typecheck/should_compile/tc036.hs b/ghc/tests/typecheck/should_compile/tc036.hs
deleted file mode 100644 (file)
index 05b8784..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-class (Eq a) => A a where
- op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_compile/tc037.hs b/ghc/tests/typecheck/should_compile/tc037.hs
deleted file mode 100644 (file)
index 8621b27..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-class Eq' a where
-  deq :: a -> a -> Bool
-
-instance (Eq' a) => Eq' [a] where
- deq []     [] = True
- deq (x:xs) (y:ys) = if (x `deq` y) then (deq xs ys) else False
- deq other1 other2 = False
diff --git a/ghc/tests/typecheck/should_compile/tc038.hs b/ghc/tests/typecheck/should_compile/tc038.hs
deleted file mode 100644 (file)
index d404ee6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-f (x:xs) = if (x == (fromInteger 2)) then xs else []
diff --git a/ghc/tests/typecheck/should_compile/tc039.hs b/ghc/tests/typecheck/should_compile/tc039.hs
deleted file mode 100644 (file)
index 05b8784..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-class (Eq a) => A a where
- op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_compile/tc040.hs b/ghc/tests/typecheck/should_compile/tc040.hs
deleted file mode 100644 (file)
index 4897a2b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
--- !!! tests the deduction of contexts.
-
-f :: (Eq a) => a -> [a]
-
-f x = g x
-      where
-      g y = if (y == x) then [] else [y]
diff --git a/ghc/tests/typecheck/should_compile/tc041.hs b/ghc/tests/typecheck/should_compile/tc041.hs
deleted file mode 100644 (file)
index b42374f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! a very simple test of class and instance declarations
-
-module ShouldSucceed where
-
-class H a where
- op1 :: a -> a -> a
-
-instance H Bool where
- op1 x y = y
-
-f :: Bool -> Int -> Bool
-f x y = op1 x x
diff --git a/ghc/tests/typecheck/should_compile/tc042.hs b/ghc/tests/typecheck/should_compile/tc042.hs
deleted file mode 100644 (file)
index 58a120c..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
--- !!! a file mailed us by Ryzard Kubiak. This provides a good test of the code
--- !!! handling type signatures and recursive data types.
-
-module ShouldSucceed where
-
-data Boolean = FF | TT
-data Pair a b = Mkpair a b
-data List alpha = Nil | Cons alpha (List alpha)
-data Nat = Zero | Succ Nat
-data Tree t = Leaf t | Node (Tree t) (Tree t) 
-
-idb :: Boolean -> Boolean
-idb x = x      
-
-
-swap :: Pair a b -> Pair b a
-swap t = case t of 
-           Mkpair x y -> Mkpair y x 
-
-neg :: Boolean -> Boolean
-neg b = case b of 
-          FF -> TT 
-          TT -> FF 
-
-nUll :: List alpha -> Boolean
-nUll l = case l of 
-           Nil -> TT
-           Cons y ys  -> FF 
-
-idl ::  List a -> List a
-idl xs  = case xs of
-           Nil -> Nil 
-           Cons y ys -> Cons y (idl ys)
-     
-add :: Nat -> Nat -> Nat
-add a b = case a of 
-            Zero -> b 
-            Succ c -> Succ (add c b) 
-
-app :: List alpha -> List alpha -> List alpha
-app  xs zs  = case xs of
-                  Nil -> zs 
-                  Cons y ys  -> Cons y (app ys zs) 
-                 
-lEngth :: List a -> Nat
-lEngth xs = case xs of 
-              Nil -> Zero  
-              Cons y ys  -> Succ(lEngth ys) 
-
-before :: List Nat -> List Nat
-before xs = case xs of
-              Nil -> Nil
-              Cons y ys -> case y of 
-                              Zero -> Nil
-                              Succ n -> Cons y (before ys)       
-
-rEverse :: List alpha -> List alpha
-rEverse rs = case rs of
-               Nil -> Nil
-               Cons y ys -> app (rEverse ys) (Cons y Nil) 
-             
-
-flatten :: Tree alpha -> List alpha
-flatten t = case t of
-              Leaf x   -> Cons x Nil 
-              Node l r -> app (flatten l) (flatten r)
-         
-sUm :: Tree Nat -> Nat
-sUm t = case t of
-          Leaf t   -> t
-          Node l r -> add (sUm l) (sUm r) 
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc043.hs b/ghc/tests/typecheck/should_compile/tc043.hs
deleted file mode 100644 (file)
index 2a2e5f0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
--- !!! another simple test of class and instance code.
-
-class A a where
- op1 :: a
-
-instance A Int where
- op1 = 2
-
-f x = op1
-
-class B b where
- op2 :: b -> Int
-
-instance (B a) => B [a] where
- op2 [] = 0
- op2 (x:xs) = 1 + op2 xs
diff --git a/ghc/tests/typecheck/should_compile/tc044.hs b/ghc/tests/typecheck/should_compile/tc044.hs
deleted file mode 100644 (file)
index 84c91d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- once produced a bug, here as regression test
-
-module ShouldSucceed where
-
-f _ | otherwise = ()
-
diff --git a/ghc/tests/typecheck/should_compile/tc045.hs b/ghc/tests/typecheck/should_compile/tc045.hs
deleted file mode 100644 (file)
index 4ff3766..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-module ShouldSucceed where
-
-class C a where
- op1 :: a -> a
-
-class (C a) => B a where
- op2 :: a -> a -> a
-
-instance (B a) => B [a] where
- op2 xs ys = xs
-
-instance C [a] where
- op1 xs = xs
-
-{- This was passed by the prototype, but failed hard in the new
-typechecker with the message
-
-Fail:No match in theta_class
--}
diff --git a/ghc/tests/typecheck/should_compile/tc046.hs b/ghc/tests/typecheck/should_compile/tc046.hs
deleted file mode 100644 (file)
index c1ae30c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-class C a where
- op1 :: a -> a
-
-class (C a) => B a where
- op2 :: a -> a -> a
-
-{- Failed hard in new tc with "No match in theta_class" -}
diff --git a/ghc/tests/typecheck/should_compile/tc047.hs b/ghc/tests/typecheck/should_compile/tc047.hs
deleted file mode 100644 (file)
index b8c197d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module ShouldSucceed where
-
-type OL a =  [a]
-
--- produces the interface:
--- data OL a = MkOL [a] deriving ()
--- ranOAL :: (OL (a, a)) -> [a]
--- this interface was produced by BOTH hbc and nhc
-
--- the following bogus type sig. was accepted by BOTH hbc and nhc
-f x = ranOAL where -- ranOAL :: OL (a,v) -> [a]
---ranOAL :: OL (a,v) -> [v], the right sig.
-                  ranOAL ( xs) = mp sd xs
-
-
-mp f [] = []
-mp f (x:xs) = (f x) : mp f xs
-
-sd (f,s) = s
-
-
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc048.hs b/ghc/tests/typecheck/should_compile/tc048.hs
deleted file mode 100644 (file)
index eea6f10..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module ShouldSucceed where
-
-data OL a = MkOL [a]
-data FG a b = MkFG (OL (a,b))
-data AFE n a b = MkAFE (OL (n,(FG a b)))
-
---ranOAL :: OL (a,v) -> [a]
-ranOAL :: OL (a,v) -> [v]
-ranOAL (MkOL xs) = mAp sNd xs
-
-mAp f [] = []
-mAp f (x:xs) = (f x) : mAp f xs
-
-sNd (f,s) = s
-
-ranAFE :: AFE n a b -> [FG a b]  -- ?
-ranAFE (MkAFE nfs) = ranOAL nfs
-
-
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc049.hs b/ghc/tests/typecheck/should_compile/tc049.hs
deleted file mode 100644 (file)
index 20be6b7..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-module ShouldSucceed where
-
-fib n = if n <= 2 then n else fib (n-1) + fib (n-2)
-
-----------------------------------------
-
-mem x [] = False
-mem x (y:ys) = (x == y) `oR` mem x ys
-
-a `oR` b = if a then True else b
-
-----------------------------------------
-
-mem1 x [] = False
-mem1 x (y:ys) = (x == y) `oR1` mem2 x ys
-
-a `oR1` b = if a then True else b
-
-mem2 x [] = False
-mem2 x (y:ys) = (x == y) `oR` mem1 x ys
-
----------------------------------------
-
-mem3 x [] = False
-mem3 x (y:ys) = if [x] == [y] then mem4 x ys else False
-
-mem4 y (x:xs) = mem3 y xs
-
----------------------------------------
-
-main1 = [[(1,True)]] == [[(2,False)]]
-
----------------------------------------
-
-main2 = "Hello" == "Goodbye"
-
----------------------------------------
-
-main3 = [[1],[2]] == [[3]]
diff --git a/ghc/tests/typecheck/should_compile/tc050.hs b/ghc/tests/typecheck/should_compile/tc050.hs
deleted file mode 100644 (file)
index ef03b28..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-module ShouldSucceed where
-
-class Foo a where
- o_and :: a -> a -> a
-
-
-instance Foo Bool where
- o_and False x = False
- o_and x False = False
- o_and True True = True
-
-
-instance Foo Int where
- o_and x 0 = 0
- o_and 0 x = 0
- o_and 1 1 = 1
-
-
-f x y = o_and x False
-
-g x y = o_and x 1
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc051.hs b/ghc/tests/typecheck/should_compile/tc051.hs
deleted file mode 100644 (file)
index 7f14282..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module ShouldSucceed where
-
-class Eq' a where
- doubleeq :: a -> a -> Bool
-
-class (Eq' a) => Ord' a where
- lt :: a -> a -> Bool
-
-instance Eq' Int where
- doubleeq x y = True
-
-instance (Eq' a) => Eq' [a] where
- doubleeq x y = True
-
-instance Ord' Int where
- lt x y = True
-
-{-
-class (Ord a) => Ix a where
- range :: (a,a) -> [a]
-
-instance Ix Int where
- range (x,y) = [x,y]
--}
-
-
-
-
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc052.hs b/ghc/tests/typecheck/should_compile/tc052.hs
deleted file mode 100644 (file)
index 108ef12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-module ShouldSucceed where
-
-type A a = B a
-
-type B c = C
-
-type C = Int
-
diff --git a/ghc/tests/typecheck/should_compile/tc053.hs b/ghc/tests/typecheck/should_compile/tc053.hs
deleted file mode 100644 (file)
index 865211d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module ShouldSucceed where
-
-class Eq' a where
- deq :: a -> a -> Bool
-
-instance Eq' Int where
- deq x y = True
-
-instance (Eq' a) => Eq' [a] where
- deq (a:as) (b:bs) = if (deq a b) then (deq as bs) else False
-
-f x = deq x [1]
diff --git a/ghc/tests/typecheck/should_compile/tc054.hs b/ghc/tests/typecheck/should_compile/tc054.hs
deleted file mode 100644 (file)
index df9deb0..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module ShouldSucceed where
-
-class Eq' a where
- doubleeq :: a -> a -> Bool
-
-class (Eq' a) => Ord' a where
- lt :: a -> a -> Bool
-
-instance Eq' Int where
- doubleeq x y = True
-
-instance Ord' Int where
- lt x y = True
-
-f x y | lt x 1 = True
-      | otherwise = False
diff --git a/ghc/tests/typecheck/should_compile/tc055.hs b/ghc/tests/typecheck/should_compile/tc055.hs
deleted file mode 100644 (file)
index cdbb8f4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldSucceed where
-
-(x,y) = (\p -> p,\q -> q)
diff --git a/ghc/tests/typecheck/should_compile/tc056.hs b/ghc/tests/typecheck/should_compile/tc056.hs
deleted file mode 100644 (file)
index da51fc7..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- !!! Duplicate class assertion
-
-module ShouldSucceed where
-
-class Eq' a where
- doubleeq :: a -> a -> Bool
-
-class (Eq' a) => Ord' a where
- lt :: a -> a -> Bool
-
-instance Eq' Int where
- doubleeq x y = True
-
-instance (Eq' a, Eq' a) => Eq' [a] where
- doubleeq x y = True
-
-f x y = doubleeq x [1]
diff --git a/ghc/tests/typecheck/should_compile/tc056.stderr b/ghc/tests/typecheck/should_compile/tc056.stderr
deleted file mode 100644 (file)
index b6a09e3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tc056.hs:14:
-    Warning: Duplicate class assertion `Eq' a' in the context:
-                (Eq' a, Eq' a) => ...
diff --git a/ghc/tests/typecheck/should_compile/tc057.hs b/ghc/tests/typecheck/should_compile/tc057.hs
deleted file mode 100644 (file)
index cc561b9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
--- See also tcfail060.hs
-
-class Eq' a where
- deq :: a -> a -> Bool
-
-instance Eq' Int where
-  deq x y = True
-
-instance (Eq' a) => Eq' [a] where
-   deq (a:as) (b:bs) = dand (f a b) (f as bs)
-
-dand True True = True
-dand x y = False
-
-f :: Eq' a => a -> a -> Bool
-f p q = dand (deq p q) (deq [1::Int] [2::Int])
diff --git a/ghc/tests/typecheck/should_compile/tc058.hs b/ghc/tests/typecheck/should_compile/tc058.hs
deleted file mode 100644 (file)
index 7df1f3b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
-class Eq2 a where
- doubleeq :: a -> a -> Bool
-
-class (Eq2 a) => Ord2 a where
- lt :: a -> a -> Bool
-
-instance Eq2 Int where
- doubleeq x y = True
-
-instance Ord2 Int where
- lt x y = True
-
-instance (Eq2 a,Ord2 a) => Eq2 [a] where
- doubleeq xs ys = True
-
-f x y = doubleeq x [1] 
diff --git a/ghc/tests/typecheck/should_compile/tc059.hs b/ghc/tests/typecheck/should_compile/tc059.hs
deleted file mode 100644 (file)
index f0faac8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module ShouldSucceed where
-
-class Eq2 a where
- deq :: a -> a -> Bool
- foo :: a -> a
-
-instance Eq2 Int where
- deq x y = True
- foo x = x
-
-instance (Eq2 a) => Eq2 [a] where
- deq (a:as) (b:bs) = if (deq a (foo b)) then (deq as (foo bs)) else False
- foo x = x
-
-f x = deq x [1]
diff --git a/ghc/tests/typecheck/should_compile/tc060.hs b/ghc/tests/typecheck/should_compile/tc060.hs
deleted file mode 100644 (file)
index 6ae0ca9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module ShouldSucceed where
-
-class Eq2 a where
- deq :: a -> a -> Bool
-
-instance (Eq2 a) => Eq2 [a] where
- deq (a:as) (b:bs) = if (deq a b) then (deq as bs) else False
-
-
-instance Eq2 Int where
- deq x y = True
-
diff --git a/ghc/tests/typecheck/should_compile/tc061.hs b/ghc/tests/typecheck/should_compile/tc061.hs
deleted file mode 100644 (file)
index 25a8b65..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module ShouldSucceed where
-
-class Eq1 a where
- deq :: a -> a -> Bool
-
-instance (Eq1 a) => Eq1 [a] where
- deq (a:as) (b:bs) = deq a b
-
-instance Eq1 Int where
- deq x y = True
-
diff --git a/ghc/tests/typecheck/should_compile/tc062.hs b/ghc/tests/typecheck/should_compile/tc062.hs
deleted file mode 100644 (file)
index fde6c4b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-module ShouldSucceed where
-
-class Eq1 a where
- deq :: a -> a -> Bool
-
-instance Eq1 Int where
- deq x y = True
-
-instance (Eq1 a) => Eq1 [a] where
- deq (a:as) (b:bs) = if (deq a b) then (deq as bs) else False
-
-f x (y:ys) = deq x ys
diff --git a/ghc/tests/typecheck/should_compile/tc063.hs b/ghc/tests/typecheck/should_compile/tc063.hs
deleted file mode 100644 (file)
index 36affbf..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
-data X a = Tag a 
-
-class Reps r where
- f :: r -> r -> r
-
-instance Reps (X q) where
--- f (Tag x) (Tag y) = Tag y
- f x y = y
-
-instance Reps Bool where
- f True True = True
- f x y = False
-
-g x = f x x
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc064.hs b/ghc/tests/typecheck/should_compile/tc064.hs
deleted file mode 100644 (file)
index 18aecb0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
-data Boolean = FF | TT
-
-idb :: Boolean -> Boolean
-idb x = x      
-
diff --git a/ghc/tests/typecheck/should_compile/tc065.hs b/ghc/tests/typecheck/should_compile/tc065.hs
deleted file mode 100644 (file)
index 8ea71ee..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-module ShouldSucceed where
-
--- import TheUtils
-import Set
-import List (partition )
-
-data Digraph vertex = MkDigraph [vertex]
-
-type Edge  vertex = (vertex, vertex)
-type Cycle vertex = [vertex]
-
-mkDigraph = MkDigraph
-
-stronglyConnComp :: Eq vertex => [Edge vertex] -> [vertex] -> [[vertex]]
-stronglyConnComp es vs
-  = snd (span_tree (new_range reversed_edges)
-                   ([],[])
-                   ( snd (dfs (new_range es) ([],[]) vs) )
-        )
- where
-   reversed_edges = map swap es
-
-   swap :: Edge v -> Edge v
-   swap (x,y) = (y, x)
-
-   new_range    []       w = []
-   new_range ((x,y):xys) w
-       = if x==w
-         then (y : (new_range xys w))
-         else (new_range xys w)
-
-   span_tree r (vs,ns) []   = (vs,ns)
-   span_tree r (vs,ns) (x:xs)
-       | x `elem` vs = span_tree r (vs,ns) xs
-       | otherwise = span_tree r (vs',(x:ns'):ns) xs
-         where
-           (vs',ns') = dfs r (x:vs,[]) (r x)
-
-dfs r (vs,ns)   []   = (vs,ns)
-dfs r (vs,ns) (x:xs) | x `elem` vs = dfs r (vs,ns) xs
-                     | otherwise = dfs r (vs',(x:ns')++ns) xs
-                                   where
-                                     (vs',ns') = dfs r (x:vs,[]) (r x)
-
-
-isCyclic :: Eq vertex => [Edge vertex] -> [vertex] -> Bool
-isCyclic edges [v] = (v,v) `elem` edges
-isCyclic edges vs = True
-
-
-topSort :: (Eq vertex) => [Edge vertex] -> [vertex]
-              -> MaybeErr [vertex] [[vertex]]
-
-
-topSort edges vertices
- = case cycles of
-       [] -> Succeeded [v | [v] <- singletons]
-       _  -> Failed cycles
-   where
-   sccs = stronglyConnComp edges vertices
-   (cycles, singletons) = partition (isCyclic edges) sccs
-
-
-type FlattenedDependencyInfo vertex name code
-   = [(vertex, Set name, Set name, code)]
-
-mkVertices :: FlattenedDependencyInfo vertex name code -> [vertex]
-mkVertices info = [ vertex | (vertex,_,_,_) <- info]
-
-mkEdges :: (Eq vertex, Ord name) =>
-           [vertex]
-        -> FlattenedDependencyInfo vertex name code
-        -> [Edge vertex]
-
-mkEdges vertices flat_info
- = [ (source_vertex, target_vertex)
-   | (source_vertex, _, used_names, _) <- flat_info,
-     target_name   <- setToList used_names,
-     target_vertex <- vertices_defining target_name flat_info
-   ]
- where
-   vertices_defining name flat_info
-    = [ vertex |  (vertex, names_defined, _, _) <- flat_info,
-               name `elementOf` names_defined
-      ]
-
-lookupVertex :: (Eq vertex, Ord name) =>
-                FlattenedDependencyInfo vertex name code
-             -> vertex
-             -> code
-
-lookupVertex flat_info vertex
- = head code_list
- where
-   code_list = [ code | (vertex',_,_,code) <- flat_info, vertex == vertex']
-
-
-isRecursiveCycle :: (Eq vertex) => Cycle vertex -> [Edge vertex] -> Bool
-isRecursiveCycle [vertex] edges = (vertex, vertex) `elem` edges
-isRecursiveCycle cycle    edges = True
-
-
-
--- may go to TheUtils
-
-data MaybeErr a b = Succeeded a | Failed b
-
diff --git a/ghc/tests/typecheck/should_compile/tc066.hs b/ghc/tests/typecheck/should_compile/tc066.hs
deleted file mode 100644 (file)
index 7c92951..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-data Pair a b = MkPair a b
-f x = [ a | (MkPair c a) <- x ]
diff --git a/ghc/tests/typecheck/should_compile/tc067.hs b/ghc/tests/typecheck/should_compile/tc067.hs
deleted file mode 100644 (file)
index 853caf3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-f [] = []
-f (x:xs) = x : (f xs)
diff --git a/ghc/tests/typecheck/should_compile/tc068.hs b/ghc/tests/typecheck/should_compile/tc068.hs
deleted file mode 100644 (file)
index f455d41..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
-data T a = D (B a) | C
-data B b = X | Y b
-
-instance (Eq a) => Eq (T a) where
- (D x) == (D y) = x == y
- C == C = True
- a == b = False
-
- a /= b = not (a == b)
-
-instance (Eq b) => Eq (B b) where
- X == X = True
- (Y a) == (Y b) = a == b
- a == b = False
-
- a /= b = not (a == b)
diff --git a/ghc/tests/typecheck/should_compile/tc069.hs b/ghc/tests/typecheck/should_compile/tc069.hs
deleted file mode 100644 (file)
index 539b304..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldSucceed where
-
-x = 'a'
-(y:ys) = ['a','b','c'] where p = x
diff --git a/ghc/tests/typecheck/should_compile/tc070.hs b/ghc/tests/typecheck/should_compile/tc070.hs
deleted file mode 100644 (file)
index 831195f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-
-data Boolean = FF | TT
-
-
-idb :: Boolean -> Boolean
-idb x = x      
-
diff --git a/ghc/tests/typecheck/should_compile/tc073.hs b/ghc/tests/typecheck/should_compile/tc073.hs
deleted file mode 100644 (file)
index 44e4129..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-module ShouldSucceed where
-
-f [] = []
-f (x:xs) = x : (f xs)
diff --git a/ghc/tests/typecheck/should_compile/tc074.hs b/ghc/tests/typecheck/should_compile/tc074.hs
deleted file mode 100644 (file)
index f455d41..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-module ShouldSucceed where
-
-data T a = D (B a) | C
-data B b = X | Y b
-
-instance (Eq a) => Eq (T a) where
- (D x) == (D y) = x == y
- C == C = True
- a == b = False
-
- a /= b = not (a == b)
-
-instance (Eq b) => Eq (B b) where
- X == X = True
- (Y a) == (Y b) = a == b
- a == b = False
-
- a /= b = not (a == b)
diff --git a/ghc/tests/typecheck/should_compile/tc076.hs b/ghc/tests/typecheck/should_compile/tc076.hs
deleted file mode 100644 (file)
index 493e967..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! scoping in list comprehensions right way 'round?
--- a bug reported by Jon Hill
---
-module ShouldSucceed where
-
-x = [[True]]
-xs :: [Bool]
-xs = [x | x <- x, x <- x]
diff --git a/ghc/tests/typecheck/should_compile/tc077.hs b/ghc/tests/typecheck/should_compile/tc077.hs
deleted file mode 100644 (file)
index c4f6c4e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! make sure context of EQ is minimised in interface file.
---
-module ShouldSucceed where
-
-data NUM = ONE | TWO
-class (Num a) => ORD a
-
-class (ORD a, Show a) => EQ a where
-       (===) :: a -> a -> Bool
diff --git a/ghc/tests/typecheck/should_compile/tc078.hs b/ghc/tests/typecheck/should_compile/tc078.hs
deleted file mode 100644 (file)
index de5e748..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! instance decls with no binds
---
-module ShouldFail where
-
-data Bar a = MkBar Int a
-
-instance Eq a => Eq (Bar a)
-instance Ord a => Ord (Bar a)
diff --git a/ghc/tests/typecheck/should_compile/tc079.hs b/ghc/tests/typecheck/should_compile/tc079.hs
deleted file mode 100644 (file)
index db07ad1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! small class decl with local polymorphism;
--- !!! "easy" to check default methods and such...
--- !!! (this is the example given in TcClassDcl)
---
-module ShouldSucceed where
-
-class Foo a where
-    op1 :: a -> Bool
-    op2 :: Ord b => a -> b -> b -> b
-
-    op1 x = True
-    op2 x y z = if (op1 x) && (y < z) then y else z
-
-instance Foo Int where {}
-
-instance Foo a => Foo [a] where {}
diff --git a/ghc/tests/typecheck/should_compile/tc080.hs b/ghc/tests/typecheck/should_compile/tc080.hs
deleted file mode 100644 (file)
index 2f01f96..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
---module Parse(Parse(..),whiteSpace,seperatedBy) where
---import StdLib
-module ShouldSucceed where
-
-import Char
-
-class Parse a where
-       parseFile :: String -> [a]
-       parseLine :: String -> a
-       parseType :: String -> (a,String)
-       parse :: String -> (a,String)
-       forced :: a -> Bool
-
-       parseFile string | all forced x = x
-                      where x = map parseLine (lines' string)
-       parseLine = pl.parse where pl (a,_) = a
-       parse = parseType.whiteSpace
-       forced x = True
-
-instance Parse Int where
-       parseType str = pl (span' isDigit str)
-              where    pl (l,r) = (strToInt l,r)
-       forced n | n>=0 = True
-
-instance Parse Char where
-       parseType (ch:str) = (ch,str)
-       forced n = True
-
-instance (Parse a) => Parse [a] where
-       parseType more = (map parseLine (seperatedBy ',' (l++",")),out)
-                      where    (l,']':out) = span' (\x->x/=']') (tail more)
-       forced = all forced
-
-seperatedBy :: Char -> String -> [String]
-seperatedBy ch [] = []
-seperatedBy ch xs = twaddle ch (span' (\x->x/=ch) xs)
-              where    twaddle ch (l,_:r) = l:seperatedBy ch r
-
-whiteSpace :: String -> String
-whiteSpace = dropWhile isSpace
-
-span' :: (a->Bool) -> [a] -> ([a],[a])
-span' p [] = ([],[])
-span' p (x:xs') | p x = fixLeak x (span' p xs') where fixLeak x (xs,ys) = (x:xs,ys)
-span' _ xs = ([],xs)
-
-lines' :: [Char] -> [[Char]]
-lines' "" = []
-lines' s = plumb (span' ((/=) '\n') s)
-       where   plumb (l,s') = l:if null s' then [] else lines' (tail s')
-
-strToInt :: String -> Int
-strToInt x = strToInt' (length x-1) x
-      where   strToInt' _ [] = 0
-             strToInt' x (a:l) = (charToInt a)*(10^x) + (strToInt' (x-1) l)
-
-charToInt :: Char -> Int
-charToInt x = (ord x - ord '0')
diff --git a/ghc/tests/typecheck/should_compile/tc081.hs b/ghc/tests/typecheck/should_compile/tc081.hs
deleted file mode 100644 (file)
index a01eaa9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
--- !!! an example Simon made up
---
-module ShouldSucceed where
-
-f x = (x+1, x<3, g True, g 'c')
-       where
-       g y = if x>2 then [] else [y]
-{-
-Here the type-check of g will yield an LIE with an Ord dict
-for x.  g still has type forall a. a -> [a].  The dictionary is
-free, bound by the x.
-
-It should be ok to add the signature:
--}
-
-f2 x = (x+1, x<3, g2 True, g2 'c')
-       where
-       -- NB: this sig:
-       g2 :: a -> [a]
-       g2 y = if x>2 then [] else [y]
-{-
-or to write:
--}
-
-f3 x = (x+1, x<3, g3 True, g3 'c')
-       where
-       -- NB: this line:
-       g3 = (\ y -> if x>2 then [] else [y])::(a -> [a])
diff --git a/ghc/tests/typecheck/should_compile/tc082.hs b/ghc/tests/typecheck/should_compile/tc082.hs
deleted file mode 100644 (file)
index 8ef70af..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! tc082: an instance for functions
---
-module ShouldSucceed where
-
-class Normal a
-       where
-       normal :: a -> Bool
-
-instance Normal ( a -> b ) where
-       normal _ = True
-
-f x = normal id
diff --git a/ghc/tests/typecheck/should_compile/tc084.hs b/ghc/tests/typecheck/should_compile/tc084.hs
deleted file mode 100644 (file)
index 597a296..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{- This program shows up a bug in the handling of
-   the monomorphism restriction in an earlier version of
-   ghc.  With ghc 0.18 and before, f gets a type with
-   an unbound type variable, which shows up in the
-   interface file.  Reason: it was being monomorphised.
-
-   Simon PJ
--}
-
-module ShouldSucceed where
-
-
-g :: Num a => Bool -> a -> b -> a
-g b x y = if b then x+x else x-x
-
--- Everything is ok if this signature is put in
--- but the program should be perfectly legal without it.
--- f :: Num a => a -> b -> a
-f = g True
-
-h y x = f (x::Int) y
-       -- This use of f binds the overloaded monomorphic
-       -- type to Int
diff --git a/ghc/tests/typecheck/should_compile/tc085.hs b/ghc/tests/typecheck/should_compile/tc085.hs
deleted file mode 100644 (file)
index f37082b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
--- !!! From a bug report from Satnam.
--- !!! To do with re-exporting importees from PreludeGla* modules.
-module ShouldSucceed ( module IOExts, module PrelGHC ) where
-
-import IOExts
-import PrelGHC
-
-type FooType = Int
-data FooData = FooData
diff --git a/ghc/tests/typecheck/should_compile/tc086.hs b/ghc/tests/typecheck/should_compile/tc086.hs
deleted file mode 100644 (file)
index 2db3b70..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-{-
-  From: Marc van Dongen <dongen@cs.ucc.ie>
-  Date: Sat, 31 May 1997 19:57:46 +0100 (BST)
-
-   panic! (the `impossible' happened):
-           tcLookupTyVar:a_r6F
-
-   Please report it as a compiler bug to glasgow-haskell-bugs@dcs.gla.ac.uk.
-
-
-If the instance definition for (*) at the end of this toy module
-is replaced by the definition that is commented, this all compiles
-fine. Strange, because the two implementations are equivalent modulo
-the theory {(*) = multiply}.
-
-Remove the `multiply :: a -> a -> a' part, and it compiles without
-problems.
-
-
-SPJ note: the type signature on "multiply" should be
-       multiply :: Group a => a -> a -> a
-
--}
-
-module ShouldSucceed( Group, Ring ) where
-
-import qualified Prelude( Ord(..), Eq(..), Num(..) )
-import Prelude hiding( Ord(..), Eq(..), Num(..) )
-
-class Group a where
-  compare     :: a -> a -> Prelude.Ordering
-  fromInteger :: Integer -> a
-  (+) :: a -> a -> a
-  (-) :: a -> a -> a
-  zero :: a
-  one  :: a
-  zero = fromInteger 0
-  one  = fromInteger 1
-
--- class (Group a) => Ring a where
--- (*) :: a -> a -> a
--- (*) a b =
---                  case (compare a zero) of
---                    EQ -> zero
---                    LT -> zero - ((*) (zero - a) b)
---                    GT -> case compare a one of
---                            EQ -> b
---                            _  -> b + ((*) (a - one) b)
-
-class (Group a) => Ring a where
-  (*) :: a -> a -> a
-  (*) a b = multiply a b
-          where multiply :: Group b => b -> b -> b
-                multiply a b
-                  = case (compare a zero) of
-                      EQ -> zero
-                      LT -> zero - (multiply (zero - a) b)
-                      GT -> case compare a one of
-                              EQ -> b
-                              _  -> b + (multiply (a - one) b)
diff --git a/ghc/tests/typecheck/should_compile/tc087.hs b/ghc/tests/typecheck/should_compile/tc087.hs
deleted file mode 100644 (file)
index ae46714..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module ShouldSucceed where
-
-data SeqView t a              =  Null
-                              |  Cons a (t a)
-
-class PriorityQueue q where
-    empty                      :: (Ord a) => q a
-    single                     :: (Ord a) => a -> q a
-    insert                     :: (Ord a) => a -> q a -> q a
-    meld                       :: (Ord a) => q a -> q a -> q a
-    splitMin                   :: (Ord a) => q a -> SeqView q a
-    insert a q         =  single a `meld` q
-
-toOrderedList q                =  case splitMin q of
-   Null                        -> []
-   Cons a q            -> a : toOrderedList q
-
-insertMany x q         =  foldr insert q x
-pqSort q x             =  toOrderedList (insertMany x q)
-
-check                  :: forall q. (PriorityQueue q) => (forall a. Ord a => q a) -> IO ()
-check empty            =  do
-    putStr "*** sorting\n"
-    out (pqSort empty [1 .. 99])
-    out (pqSort empty [1.0, 1.1 ..99.9])
-
-out                            :: (Num a) => [a] -> IO ()
-out x | sum x == 0             =  putStr "ok\n"
-      | otherwise              =  putStr "ok\n"
-
diff --git a/ghc/tests/typecheck/should_compile/tc088.hs b/ghc/tests/typecheck/should_compile/tc088.hs
deleted file mode 100644 (file)
index 05faeae..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- Check that "->" is an instance of Eval
-
-module ShouldSucceed where
-
-instance Show (a->b)
-
-instance (Eq b) => Eq (a -> b) where
-       (==) f g = error "attempt to compare functions"
-
-       -- Since Eval is a superclass of Num this fails 
-       -- unless -> is an instance of Eval
-instance (Num b) => Num (a -> b) where
-    f + g                     =  \a -> f a + g a
-    f - g                     =  \a -> f a - g a
-    f * g                     =  \a -> f a * g a
-    negate f                  =  \a -> negate (f a)
-    abs f                     =  \a -> abs (f a)
-    signum f                  =  \a -> signum (f a)
-    fromInteger n             =  \a -> fromInteger n
diff --git a/ghc/tests/typecheck/should_compile/tc089.hs b/ghc/tests/typecheck/should_compile/tc089.hs
deleted file mode 100644 (file)
index 1bbb4ab..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
--- !!! Stress test for type checker
-
-module ShouldSucceed where
-
-import Prelude hiding (head)
-
-one = one
-
-head (x:xs) = x
-
-bottom = head
-
-absIf a b c = a
-
-absAnd a b = head [a,b]
-
-fac_rec fac0 n a 
-  = (absIf (absAnd (s_3_0 n) one) 
-           (s_2_0 a) 
-           (fac0 (absAnd (s_3_2 n) one) (absAnd (s_3_1 n) (s_2_1 a))))
-
-f_rec f0 a 
-  = (f0 (s_1_0 a))
-
-g_rec g0 g1 x y z p 
-  = (absIf (absAnd (s_3_0 p) one) 
-           (absAnd (s_1_0 x) (s_3_0 z)) 
-           (absAnd 
-              (g0 (s_1_0 y) one one (absAnd (s_3_1 p) one)) 
-              (g1 (s_3_2 z) (s_3_1 z) one (absAnd (s_3_2 p) one))))
-
-s_2_0 (v0,v1)   = v0
-s_2_1 (v0,v1)   = v1
-s_1_0 v0  = v0
-s_3_0 (v0,v1,v2)   = v0
-s_3_1 (v0,v1,v2)   = v1
-s_3_2 (v0,v1,v2)   = v2
-
-fac n a 
-  = (fac_rec fac_rec4 n a)
-
-fac_rec4 n a  = (fac_rec fac_rec3 n a)
-fac_rec3 n a  = (fac_rec fac_rec2 n a)
-fac_rec2 n a  = (fac_rec fac_rec1 n a)
-fac_rec1 n a  = (fac_rec fac_rec0 n a)
-fac_rec0 n a  = (bottom [n,a])
-
-f a 
-  = (f_rec f_rec2 a)
-
-f_rec2 a  = (f_rec f_rec1 a)
-f_rec1 a  = (f_rec f_rec0 a)
-f_rec0 a  = (bottom [a])
-
-g x y z p = (g_rec g_rec8 g_rec8 x y z p)
-
-{- 
-g x y z p = (g_rec g_rec16 g_rec16 x y z p)
-
-g_rec16 x y z p  = (g_rec g_rec15 g_rec15 x y z p)
-g_rec15 x y z p  = (g_rec g_rec14 g_rec14 x y z p)
-g_rec14 x y z p  = (g_rec g_rec13 g_rec13 x y z p)
-g_rec13 x y z p  = (g_rec g_rec12 g_rec12 x y z p)
-g_rec12 x y z p  = (g_rec g_rec11 g_rec11 x y z p)
-g_rec11 x y z p  = (g_rec g_rec10 g_rec10 x y z p)
-g_rec10 x y z p  = (g_rec g_rec9 g_rec9 x y z p)
-g_rec9 x y z p  = (g_rec g_rec8 g_rec8 x y z p)
--}
-
-g_rec8 x y z p  = (g_rec g_rec7 g_rec7 x y z p)
-g_rec7 x y z p  = (g_rec g_rec6 g_rec6 x y z p)
-g_rec6 x y z p  = (g_rec g_rec5 g_rec5 x y z p)
-g_rec5 x y z p  = (g_rec g_rec4 g_rec4 x y z p)
-g_rec4 x y z p  = (g_rec g_rec3 g_rec3 x y z p)
-g_rec3 x y z p  = (g_rec g_rec2 g_rec2 x y z p)
-g_rec2 x y z p  = (g_rec g_rec1 g_rec1 x y z p)
-g_rec1 x y z p  = (g_rec g_rec0 g_rec0 x y z p)
-g_rec0 x y z p  = (bottom [x,y,z,p])
diff --git a/ghc/tests/typecheck/should_compile/tc090.hs b/ghc/tests/typecheck/should_compile/tc090.hs
deleted file mode 100644 (file)
index f568c39..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{-     This module tests that we can ge polymorphic recursion
-       of overloaded functions.  GHC 2.02 produced the following
-       bogus error:
-
-       tmp.lhs:1: A group of type signatures have mismatched contexts
-                      Abf.a ::  (PrelBase.Ord f{-aX6-}) => ...
-                      Abf.b ::  (PrelBase.Ord f{-aX2-}) => ... 
-
-       This was due to having more than one type signature for one
-       group of recursive functions.
--}
-
-
-module ShouldSucceed where
-
-a :: (Ord f) => f 
-a = b
-
-b :: (Ord f) => f 
-b = a 
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc091.hs b/ghc/tests/typecheck/should_compile/tc091.hs
deleted file mode 100644 (file)
index 628b571..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
--- !!! Test polymorphic recursion
-
-
--- With polymorphic recursion this one becomes legal
---     SLPJ June 97.
-
-{-
-To: Lennart Augustsson <augustss@cs.chalmers.se>
-Cc: partain@dcs.gla.ac.uk, John Peterson (Yale) <peterson-john@cs.yale.edu>, 
-    simonpj@dcs.gla.ac.uk
-Subject: Type checking matter
-Date: Fri, 23 Oct 92 15:28:38 +0100
-From: Simon L Peyton Jones <simonpj@dcs.gla.ac.uk>
-
-
-I've looked at the enclosed again.  It seems to me that
-since "s" includes a recursive call to "sort", inside the body
-of "sort", then "sort" is monomorphic, and hence so is "s";
-hence the type signature (which claims full polymorphism) is 
-wrong.
-
-[Lennart says he can't see any free variables inside "s", but there
-is one, namely "sort"!]
-
-Will: one for the should-fail suite?
-
-Simon
-
-
-------- Forwarded Message
-
-
-From: Lennart Augustsson <augustss@cs.chalmers.se>
-To: partain
-Subject: Re: just to show you I'm a nice guy...
-Date: Tue, 26 May 92 17:30:12 +0200
-
-> Here's a fairly simple module from our compiler, which includes what
-> we claim is an illegal type signature (grep ILLEGAL ...).
-> Last time I checked, hbc accepted this module.
-
-Not that I don't believe you, but why is this illegal?
-As far as I can see there are no free variables in the function s,
-which makes me believe that it can typechecked like a top level
-definition.  And for a top level defn the signature should be
-all right.
-
-       -- Lennart
-- ------- End of forwarded message -------
--}
-module ShouldSucceed where
-
-sort :: Ord a => [a] -> [a]
-sort xs = s xs (length xs)
-   where
-      s :: Ord b => [b] -> Int -> [b]  -- This signature is WRONG
-      s xs k = if k <= 1 then xs
-               else merge (sort ys) (sort zs)
-              where (ys,zs) = init_last xs (k `div` (2::Int))
-
--- Defns of merge and init_last are just dummies with the correct types
-merge :: Ord a => [a] -> [a] -> [a]
-merge xs ys = xs
-
-init_last :: [a] -> Int -> ([a],[a])
-init_last a b = (a,a)
-
diff --git a/ghc/tests/typecheck/should_compile/tc092.hs b/ghc/tests/typecheck/should_compile/tc092.hs
deleted file mode 100644 (file)
index a429de4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldSucceed where
-
-data Empty q                   =  Empty (Ord a => q a)
-q                              :: (Ord a) => [a]
-q                              =  []
-e0, e1, e2                     :: Empty []
-e0                             =  Empty []
-e1                             =  Empty ([] :: (Ord a) => [a])
-e2                             =  Empty q
diff --git a/ghc/tests/typecheck/should_compile/tc093.hs b/ghc/tests/typecheck/should_compile/tc093.hs
deleted file mode 100644 (file)
index c834428..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-module ShouldSucceed where
-
-data State c a = State (c -> (a,c))
-
-unState :: State c a -> (c -> (a,c))
-unState (State x) = x
-
-unitState :: a -> State c a
-unitState a = State (\s0 -> (a,s0))
-
-bindState :: State c a -> (a -> State c b) -> State c b
-bindState m k = State (\s0 -> let (a,s1) = (unState m) s0
-                                  (b,s2) = (unState (k a)) s1 
-                              in (b,s2))
-
-instance Eq c => Monad (State c) where
-    return = unitState 
-    (>>=)  = bindState 
-
-data TS = TS { vs::Int } deriving (Show,Eq)
-
-type St a = State TS a
-
-foo :: Int -> St Int  -- it works if this line is not given
-foo x = return x
diff --git a/ghc/tests/typecheck/should_compile/tc094.hs b/ghc/tests/typecheck/should_compile/tc094.hs
deleted file mode 100644 (file)
index 334c34c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldSucceed where
-
--- From a bug report by Sven Panne.
-
-foo = bar
-   where bar = \_ -> (truncate boing, truncate boing)
-         boing = 0
diff --git a/ghc/tests/typecheck/should_compile/tc095.hs b/ghc/tests/typecheck/should_compile/tc095.hs
deleted file mode 100644 (file)
index 1ac333c..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-{-
-Bug report from Jon Mountjoy:
-
-While playing with Happy I managed to generate a Haskell program
-which compiles fine under ghc but not under Hugs.  I don't know which
-one is the culprit....
-
-In Hugs(January 1998), one gets
-
-     ERROR "hugs.hs" (line 32): Unresolved top-level overloading
-     *** Binding             : happyReduce_1
-     *** Outstanding context : Functor b
-
-where line 32 is the one marked -- ##
-
-It compiles in ghc-3.00.  Changing very small things, like the
-line marked ---**** to 
-      action_0 (6) = happyShift action_0        ---****
-
-then makes ghc produce a similar message:
-
-   hugs.hs:37:
-   Cannot resolve the ambiguous context (Functor a1Ab)
-   `Functor a1Ab' arising from use of `reduction', at hugs.hs:37
--}
-
-module ShouldSucceed where
-
-data HappyAbsSyn t1 t2 t3
-       = HappyTerminal Token
-       | HappyErrorToken Int
-       | HappyAbsSyn1 t1
-       | HappyAbsSyn2 t2
-       | HappyAbsSyn3 t3
-
-action_0 (6) = happyShift action_3        --- *****
-action_0 (1) = happyGoto action_1
-action_0 (2) = happyGoto action_2
-action_0 _ = happyFail
-
-action_1 (7) = happyAccept
-action_1 _ = happyFail
-
-action_2 _ = happyReduce_1
-
-action_3 (5) = happyShift action_4
-action_3 _ = happyFail
-
-action_4 (4) = happyShift action_6
-action_4 (3) = happyGoto action_5
-action_4 _ = happyFail
-
-action_5 _ = happyReduce_2
-
-action_6 _ = happyReduce_3
-
-happyReduce_1 = happySpecReduce_1 1 reduction where {    -- ##
-  reduction
-       (HappyAbsSyn2  happy_var_1)
-        =  HappyAbsSyn1
-                (\p -> let q = map (\(x,y) -> (x,y p)) happy_var_1 in  (10.1))
-;
-  reduction _  = notHappyAtAll }
-
-happyReduce_2 = happySpecReduce_3 2 reduction where {
-  reduction
-       (HappyAbsSyn3  happy_var_3)
-       _
-       (HappyTerminal (TokenVar happy_var_1))
-        =  HappyAbsSyn2
-                ([(happy_var_1,happy_var_3)]);
-  reduction _ _ _  = notHappyAtAll }
-
-happyReduce_3 = happySpecReduce_1 3 reduction where {
-  reduction
-       (HappyTerminal (TokenInt happy_var_1))
-        =  HappyAbsSyn3
-                (\p -> happy_var_1);
-  reduction _  = notHappyAtAll }
-
-happyNewToken action sts stk [] =
-       action 7 7 (error "reading EOF!") (HappyState action) sts stk []
-
-happyNewToken action sts stk (tk:tks) =
-       let cont i = action i i tk (HappyState action) sts stk tks in
-       case tk of {
-       TokenInt happy_dollar_dollar -> cont 4;
-       TokenEq -> cont 5;
-       TokenVar happy_dollar_dollar -> cont 6;
-       }
-
-happyThen = \m k -> k m
-happyReturn = \a tks -> a
-myparser = happyParse
-
-
-
-happyError ::[Token] -> a
-happyError _ = error "Parse error\n"
-
---Here are our tokens
-data Token  = 
-              TokenInt Int
-            | TokenVar String
-            | TokenEq
-            deriving Show
-
-main = print (myparser [] [])
--- $Id: tc095.hs,v 1.2 1999/01/23 17:58:16 sof Exp $
-
-{-
-       The stack is in the following order throughout the parse:
-
-       i       current token number
-       j       another copy of this to avoid messing with the stack
-       tk      current token semantic value
-       st      current state
-       sts     state stack
-       stk     semantic stack
--}
-
------------------------------------------------------------------------------
-
-happyParse = happyNewToken action_0 [] []
-
--- All this HappyState stuff is simply because we can't have recursive
--- types in Haskell without an intervening data structure.
-
-newtype HappyState b c = HappyState
-        (Int ->                         -- token number
-         Int ->                         -- token number (yes, again)
-         b ->                           -- token semantic value
-         HappyState b c ->              -- current state
-         [HappyState b c] ->            -- state stack
-         c)
-
------------------------------------------------------------------------------
--- Accepting the parse
-
-happyAccept j tk st sts [ HappyAbsSyn1 ans ] = happyReturn ans
-happyAccept j tk st sts _                    = notHappyAtAll
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state (-1) tk st sts stk@(HappyErrorToken i : _) =
---     _trace "shifting the error token" $
-     new_state i i tk (HappyState new_state) (st:sts) stk
-
-happyShift new_state i tk st sts stk =
-     happyNewToken new_state (st:sts) (HappyTerminal tk:stk)
-
------------------------------------------------------------------------------
--- Reducing
-
--- happyReduce is specialised for the common cases.
-
--- don't allow reductions when we're in error recovery, because this can
--- lead to an infinite loop.
-
-happySpecReduce_0 i fn (-1) tk _ sts stk
-     = case sts of
-       st@(HappyState action):sts -> action (-1) (-1) tk st sts stk
-       _ -> happyError
-happySpecReduce_0 i fn j tk st@(HappyState action) sts stk
-     = action i j tk st (st:sts) (fn : stk)
-
-happySpecReduce_1 i fn (-1) tk _ (st@(HappyState action):sts) stk
-     = action (-1) (-1) tk st sts stk
-happySpecReduce_1 i fn j tk _ sts@(st@(HappyState action):_) (v1:stk')
-     = action i j tk st sts (fn v1 : stk')
-happySpecReduce_1 _ _ _ _ _ _ _
-     = notHappyAtAll
-
-happySpecReduce_2 i fn (-1) tk _ (st@(HappyState action):sts) stk
-     = action (-1) (-1) tk st sts stk
-happySpecReduce_2 i fn j tk _ (_:sts@(st@(HappyState action):_)) (v1:v2:stk')
-     = action i j tk st sts (fn v1 v2 : stk')
-happySpecReduce_2 _ _ _ _ _ _ _
-     = notHappyAtAll
-
-happySpecReduce_3 i fn (-1) tk _ (st@(HappyState action):sts) stk
-     = action (-1) (-1) tk st sts stk
-happySpecReduce_3 i fn j tk _ (_:_:sts@(st@(HappyState action):_)) 
-       (v1:v2:v3:stk')
-     = action i j tk st sts (fn v1 v2 v3 : stk')
-happySpecReduce_3 _ _ _ _ _ _ _
-     = notHappyAtAll
-
-happyReduce k i fn (-1) tk _ (st@(HappyState action):sts) stk
-     = action (-1) (-1) tk st sts stk
-happyReduce k i fn j tk st sts stk = action i j tk st' sts' (fn stk)
-       where sts'@(st'@(HappyState action):_) = drop (k::Int) (st:sts)
-
-happyMonadReduce k i c fn (-1) tk _ sts stk
-      = case sts of
-            (st@(HappyState action):sts) -> action (-1) (-1) tk st sts stk
-            [] -> happyError
-happyMonadReduce k i c fn j tk st sts stk =
-       happyThen (fn stk) (\r -> action i j tk st' sts' (c r : stk'))
-       where sts'@(st'@(HappyState action):_) = drop (k::Int) (st:sts)
-            stk' = drop (k::Int) stk
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-happyGoto action j tk st = action j j tk (HappyState action)
-
------------------------------------------------------------------------------
--- Error recovery (-1 is the error token)
-
--- fail if we are in recovery and no more states to discard
-happyFail  (-1) tk st' [] stk = happyError
-
--- discard a state
-happyFail  (-1) tk st' (st@(HappyState action):sts) stk =
---     _trace "discarding state" $
-       action (-1) (-1) tk st sts stk
-
--- Enter error recovery: generate an error token,
---                      save the old token and carry on.
-
--- we push the error token on the stack in anticipation of a shift,
--- and also because this is a convenient place to store the saved token.
-
-happyFail  i tk st@(HappyState action) sts stk =
---     _trace "entering error recovery" $
-       action (-1) (-1) tk st sts (HappyErrorToken i : stk)
-
--- Internal happy errors:
-
-notHappyAtAll = error "Internal Happy error\n"
-
--- end of Happy Template.
diff --git a/ghc/tests/typecheck/should_compile/tc096.hs b/ghc/tests/typecheck/should_compile/tc096.hs
deleted file mode 100644 (file)
index 165c5bd..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-module ShouldSucceed where
-
--- !!! monomorphism restriction and defaulting
-
-x = 3
-
-main = print $ 6 / x
-
-{-
-Hugs 1.4 complains: ERROR "Strange.hs" (line 3): Int is not an
-instance of class "Fractional".  GHC however compiles the program.
-Substitute for x and Hugs is happy.  What's going on?
-
-I haven't studied the numeric classes much so perhaps I'm missing
-something obvious here.  (I see that the bugs page alludes to some 1.4
-features not in Hugs leading to type errors.  If this is it, maybe you
-should give it as an example?)
-
-  Bjarte
-
-------- Message 2
-
-Date:    Wed, 25 Feb 98 14:01:35 -0500
-From:    "John C. Peterson" <peterson-john@CS.YALE.EDU>
-To:      bjartem@idi.ntnu.no
-cc:      hugs-bugs@CS.YALE.EDU
-Subject: Re: Fractional and Int?
-
-This is a known hugs bug.  x should be monomorphic, allowing the usage
-in main to constrain it to Fractional.  Instead, it is generalized and
-then defaulted to Int without being influenced by main.  So ghc is
-right and hugs is wrong on this one.  I expect this will be fixed
-eventually. 
-
-   John
--}
diff --git a/ghc/tests/typecheck/should_compile/tc097.hs b/ghc/tests/typecheck/should_compile/tc097.hs
deleted file mode 100644 (file)
index 545b094..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Local universal quantification.
-module ShouldSucceed where
-
-import PrelGHC -- to get at All
-
-data Monad2 m = MkMonad2 (forall a. a -> m a)
-                         (forall a b.  m a -> (a -> m b) -> m b)
-
-halfListMonad  :: (forall a b. [a] -> (a -> [b]) -> [b]) -> Monad2 []
-halfListMonad b = MkMonad2 (\x -> [x]) b
diff --git a/ghc/tests/typecheck/should_compile/tc098.hs b/ghc/tests/typecheck/should_compile/tc098.hs
deleted file mode 100644 (file)
index f870caa..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
--- !!! Ambiguity in local declarations
-
-module ShouldSucceed where
-
-type Cp a =  a -> a -> Ordering
-
-m :: Eq a => Cp a -> [a] -> a
-m            _       [x,y,z] =  if x==y then x else z  
-     
-cpPairs :: Cp [j] -> (a,[j]) -> (a,[j]) -> Ordering
-cpPairs    cp        (_,p)      (_,q)   =  cp p q
-
-mp :: (Eq i,Eq j) => Cp [j] -> [(i,[j])] -> (i,[j])
-mp                   cp        dD          =  
-                                    let  minInRow = m (cpPairs cp)
-                                    in   minInRow dD
-
-{- GHC 3.02 reported
-
-    T.hs:24:
-       Ambiguous type variable(s)
-       `j' in the constraint `Eq (aYD, [j])'
-           arising from use of `m' at T.hs:24
-       In an equation for function `mp':
-           mp cp dD = let minInRow = m (cpPairs cp) in minInRow dD
-
-This was because the ambiguity test in tcSimplify didn't
-take account of the type variables free in the environment.
-
-It should compile fine.
--}
diff --git a/ghc/tests/typecheck/should_compile/tc099.hs b/ghc/tests/typecheck/should_compile/tc099.hs
deleted file mode 100644 (file)
index 367789a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !! check if tc type substitutions really do
--- !! clone (or if not, work around it by cloning
--- !! all binders in first pass of the simplifier).
-module ShouldCompile where
-
-f,g :: Eq a => (a,b)
-f = g
-g = f
diff --git a/ghc/tests/typecheck/should_compile/tc100.hs b/ghc/tests/typecheck/should_compile/tc100.hs
deleted file mode 100644 (file)
index 06f3475..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! Caused ghc-3.03 and 4.01 tc to enter a 
--- !!! a blackhole (as reported by P. Callaghan.)
-module ShouldCompile where
-
-type C a = D a -> a
-newtype D a = DD (D_ a)
-type D_ a = C (Maybe a)
diff --git a/ghc/tests/typecheck/should_compile/tc101.hs b/ghc/tests/typecheck/should_compile/tc101.hs
deleted file mode 100644 (file)
index 7ae95d5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! Caused ghc-4.04proto to loop!
--- !!! (as reported by Sigbjorn)
-
-module ShouldCompile where
-
--- This made the compiler (4.04 proto) loop (stack overflow)
--- The bug was in TcUnify.uUnboundVar and is documented there.
-
-type A a = ()
-
-f :: (A a -> a -> ()) -> ()
-f = \ _ -> ()
-
-x :: ()
-x = f (\ x p -> p x)
diff --git a/ghc/tests/typecheck/should_compile/tc102.hs b/ghc/tests/typecheck/should_compile/tc102.hs
deleted file mode 100644 (file)
index cf07b62..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Caused ghc-4.04proto to report a bogus type error
--- !!! (as reported by Keith)
-
--- The type error arose from a mistake in tcMatches.tc_match
-
--- Involves pattern type signatures
-
-module ShouldCompile where
-
-p = let y = p in \ (x::a) -> x
diff --git a/ghc/tests/typecheck/should_compile/tc103.hs b/ghc/tests/typecheck/should_compile/tc103.hs
deleted file mode 100644 (file)
index 06f3475..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! Caused ghc-3.03 and 4.01 tc to enter a 
--- !!! a blackhole (as reported by P. Callaghan.)
-module ShouldCompile where
-
-type C a = D a -> a
-newtype D a = DD (D_ a)
-type D_ a = C (Maybe a)
diff --git a/ghc/tests/typecheck/should_compile/tc104.hs b/ghc/tests/typecheck/should_compile/tc104.hs
deleted file mode 100644 (file)
index 25f354c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! Checking that Main.main's type can now be of the form (IO a)
-module Main(main) where
-
-main = putStrLn "Hello" >> return (id)
diff --git a/ghc/tests/typecheck/should_compile/tc105.hs b/ghc/tests/typecheck/should_compile/tc105.hs
deleted file mode 100644 (file)
index 5738b67..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Scoped type variables in result signatures
-module ShouldCompile where
-
-import PrelST
-import PrelArr
-
-f:: ST s Int
-f:: ST s Int = do
-    v <- newSTRef 5
-    let g :: ST s Int
-             -- ^ should be in scope
-        g = readSTRef v
-    g
diff --git a/ghc/tests/typecheck/should_compile/tc106.hs b/ghc/tests/typecheck/should_compile/tc106.hs
deleted file mode 100644 (file)
index c8f8c5d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Mutually recursive kind inference
--- Exposes a bug in 4.08 (fixed in 4.08 pl1)
-
-module ShouldCompile where
-
--- This pair will tickle the bug
-class Lookup c k a where
-    lookupAll :: Sequence seq a => c -> k -> seq a
-
-class Lookup (s a) Int a => Sequence s a where
-    foo :: s a
-
-
--- This decl will tickle it all by itself
-class Matrix a e where
-   amap2  :: (Matrix a d) =>
-             (e -> d -> e) -> a ix e -> a ix d -> a ix e
-
diff --git a/ghc/tests/typecheck/should_compile/tc107.hs b/ghc/tests/typecheck/should_compile/tc107.hs
deleted file mode 100644 (file)
index 75211bc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Kind checking in a recursive situation
--- Exposes a bug in proto-4.09 (black hole)
-
-module ShouldCompile where
-
-data ChItem = ChItemX Stream
-type Stream = ChItem 
-
diff --git a/ghc/tests/typecheck/should_compile/tc108.hs b/ghc/tests/typecheck/should_compile/tc108.hs
deleted file mode 100644 (file)
index 9288c70..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! Scopes in kind checking
-
--- Exposes a bizarre bug in 4.08.1 
---    TestSh.hs:6:
---     `Shape' is not in scope
---     When checking kinds in `HasConfigValue Shape nodeTypeParms'
---     In the class declaration for `HasShape'
-
-module ShouldCompile where
-
-data Shape value = Box | Circle
-
-class HasConfigValue Shape nodeTypeParms => HasShape nodeTypeParms where {}
-
-class HasConfigValue option configuration where
-   ($$$) :: option value -> configuration value -> configuration value
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc109.hs b/ghc/tests/typecheck/should_compile/tc109.hs
deleted file mode 100644 (file)
index a57b3fb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldCompile where
-
--- This accepted by Hugs, but not by GHC 4.08.1
--- Reported by Thomas Hallgren Nov 00
-
-class P a
-class R a b | b->a
-
-instance (P a,R a b) => P [b]
-
-{- GHC 4.08.1 doesn't seem to allow variables in the context that
-don't appear after the =>, but which are still ok since they are
-determined by the functional dependenices.  -}
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc111.hs b/ghc/tests/typecheck/should_compile/tc111.hs
deleted file mode 100644 (file)
index 83fffd1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Test monomorphism + RULES
-
-module ShouldCompile where
-
--- This example crashed GHC 4.08.1.
--- The reason was that foobar is monomorphic, so the RULE 
--- should not generalise over it.
-
-foo 1 = 2
-bar 0 = 1
-
-foobar = 2
-
-{-# RULES
-  "foo/bar" foo bar = foobar
- #-}
-
-
diff --git a/ghc/tests/typecheck/should_compile/tc112.hs b/ghc/tests/typecheck/should_compile/tc112.hs
deleted file mode 100644 (file)
index 7f50416..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This broke an early impl of functional dependencies
--- (complaint about ambiguity)
-
-module ShouldCompile where
-
-class C a b | a -> b where f :: a -> b
-
-g :: (C a b, Eq b) => a -> Bool
-g x = f x == f x
diff --git a/ghc/tests/typecheck/should_compile/tc113.hs b/ghc/tests/typecheck/should_compile/tc113.hs
deleted file mode 100644 (file)
index 38e7974..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! Monomorphism restriction
-
-module ShouldCompile where
-
-foo :: Eq a => a -> b -> b
-foo x y = y
-
--- Expect test2 :: forall b. b->b
--- despite the monomorphism restriction
-poly = foo (3::Int)
-
--- Check that test2 is polymorphic
-test = (poly True, poly 'c')
diff --git a/ghc/tests/typecheck/should_compile/tc114.hs b/ghc/tests/typecheck/should_compile/tc114.hs
deleted file mode 100644 (file)
index af8c3ca..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This broke an early impl of functional dependencies
-
-module ShouldCompile where
-
-class Foo r a | r -> a where
-    foo :: a -> r
-
-instance Foo (Maybe e) e where
-    foo = Just
-
-bad:: Num e => Maybe e
-bad = foo 0
diff --git a/ghc/tests/typecheck/should_compile/tc115.hs b/ghc/tests/typecheck/should_compile/tc115.hs
deleted file mode 100644 (file)
index 0a12db9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This broke an early impl of functional dependencies
--- (complaining about ambiguity)
-
-module ShouldCompile where
-
-class Foo r a | r -> a where
-    foo :: r -> a
-
-instance Foo [m a] (m a)
-
-bad:: Monad m => m a
-bad = foo bar
-
-bar:: Monad m => [m a]
-bar = []
diff --git a/ghc/tests/typecheck/should_compile/tc115.stderr b/ghc/tests/typecheck/should_compile/tc115.stderr
deleted file mode 100644 (file)
index 1172cdc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tc115.hs:12:
-    Warning: No explicit method nor default method for `foo'
-            In the instance declaration for `Foo [m a] (m a)'
diff --git a/ghc/tests/typecheck/should_compile/tc116.hs b/ghc/tests/typecheck/should_compile/tc116.hs
deleted file mode 100644 (file)
index cb29a43..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This broke an early impl of functional dependencies
--- (caused a panic)
-
-module ShouldCompile where
-
-class Foo r a | r -> a where
-    foo :: r -> a
-
-instance Foo [m a] (m a)
-
-bad:: Monad m => m a
-bad = foo bar
-
-bar:: [m a]
-bar = []
diff --git a/ghc/tests/typecheck/should_compile/tc116.stderr b/ghc/tests/typecheck/should_compile/tc116.stderr
deleted file mode 100644 (file)
index 0e3b0c8..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tc116.hs:12:
-    Warning: No explicit method nor default method for `foo'
-            In the instance declaration for `Foo [m a] (m a)'
diff --git a/ghc/tests/typecheck/should_compile/tc117.hs b/ghc/tests/typecheck/should_compile/tc117.hs
deleted file mode 100644 (file)
index d66cd34..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This one gave another fail in tcReadMutVar
-
-module M1 where
-
-class HasFoo a foo | a -> foo where
-    foo :: a -> foo
-instance HasFoo Int Int where
-    foo = id
-
-instance HasFoo a b => HasFoo [a] b where
-    foo = foo . head
-
-test:: [[Int]] -> Int
-test = foo
diff --git a/ghc/tests/typecheck/should_compile/tc118.hs b/ghc/tests/typecheck/should_compile/tc118.hs
deleted file mode 100644 (file)
index e5aa41f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! An instance decl with a context containing a free type variable
--- The interest here is that there's a "b" in the instance decl
--- context that isn't mentioned in the instance head.  
-
-module ShouldCompile where
-
-class HasConverter a b | a -> b where
-   convert :: a -> b
-data Foo a = MkFoo a
-
-instance (HasConverter a b,Show b) => Show (Foo a) where
-   show (MkFoo value) = show (convert value)
-
diff --git a/ghc/tests/typecheck/should_compile/tc119.hs b/ghc/tests/typecheck/should_compile/tc119.hs
deleted file mode 100644 (file)
index 7c86751..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies and existentials
-
--- Hugs (February 2000) doesn't like it. It says
---  Variable "e" in constraint is not locally bound
-
-module ShouldCompile where
-
-class Collection c e | c -> e where
-   empty :: c
-   put   :: c -> e -> c
-
-data SomeCollection e = forall c . Collection c e => MakeSomeCollection c
diff --git a/ghc/tests/typecheck/should_compile/tc120.hs b/ghc/tests/typecheck/should_compile/tc120.hs
deleted file mode 100644 (file)
index 11c64d8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Check that we can have a type for main that is more general than IO a
-
--- main :: forall a.a   certainly also has type IO a, so it should be fine.
-
-module Main(main) where
-
-main :: a
-main = error "not much luck"
diff --git a/ghc/tests/typecheck/should_compile/tc121.hs b/ghc/tests/typecheck/should_compile/tc121.hs
deleted file mode 100644 (file)
index 47472eb..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Implicit Parameters
-
--- If the implicit param isn't recognized as a PredType, x and y
--- will be inferred to have two params instead of one.
-
-module ShouldCompile where
-
-x () = ?wibble
-
-y () = x ()
-
-same :: a -> a -> b
-same x y = undefined
-
-a () = same x id
-b () = same y id
diff --git a/ghc/tests/typecheck/should_compile/tc122.hs b/ghc/tests/typecheck/should_compile/tc122.hs
deleted file mode 100644 (file)
index 2c68c12..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Implicit Parameters
-
--- GHC 5.00 doesn't handle this:
-
---  Could not deduce `?wibble :: t' from the context ()
---  Probable fix:
---      Add `?wibble :: t' to the banding(s) for {y}
---  Or add an instance declaration for `?wibble :: t'
---  arising from use of implicit parameter `?wibble' at tc122.hs:18
---  in the definition of function `y': wibble
-
-
-module ShouldCompile where
-
-x () = y
-    where y = ?wibble
diff --git a/ghc/tests/typecheck/should_compile/tc123.hs b/ghc/tests/typecheck/should_compile/tc123.hs
deleted file mode 100644 (file)
index ecec4ba..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Monotypes w/ Implicit Parameters
-
--- GHC 5.00 doesn't handle this:
-
---  Couldn't match `{?wibble :: Int}' against `()'
---      Expected type: {?wibble :: Int}
---      Inferred type: ()
---  In the first argument of `x', namely `()'
---  in the definition of function `y': x ()
-
-module ShouldCompile where
-
-x () = (?wibble :: Int)
-
-y () = x ()
diff --git a/ghc/tests/typecheck/should_compile/tc124.hs b/ghc/tests/typecheck/should_compile/tc124.hs
deleted file mode 100644 (file)
index 6a1b9de..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Rank 2 polymorphism
--- Both f and g are rejected by Hugs [April 2001]
-
-module Foo  where
-
-data T = T { t1 :: forall a. a -> a , t2 :: forall a b. a->b->b }
-
--- Test pattern bindings for polymorphic fields
-f :: T -> (Int,Char)
-f t = let T { t1 = my_t1 } = t
-      in
-      (my_t1 3, my_t1 'c')
-
--- Test record update with polymorphic fields
-g :: T -> T
-g t = t { t2 = \x y -> y }
diff --git a/ghc/tests/typecheck/should_compile/tc125.hs b/ghc/tests/typecheck/should_compile/tc125.hs
deleted file mode 100644 (file)
index 89bb66a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependency test. Hugs [Apr 2001] fails to typecheck this
--- We should infer this type for foo
---     foo :: Q (S (S Z)) (S Z)
-
-module ShouldCompile where
-
-data Z = Z
-data S a = S a
-
-class Add a b c | a b -> c where add :: a -> b -> c
-
-instance Add Z a a
-instance Add a b c => Add (S a) b (S c)
-
-class Mul a b c | a b -> c where mul :: a -> b -> c
-
-instance Mul Z a Z
-instance (Mul a b c, Add b c d) => Mul (S a) b d
-
-data Q a b = Q a b
-
--- Problem here.  This is the addition of rational
--- numbers: (a/b) + (c/d) = (ad+bc)/bd
-
-instance (Mul a d ad,
-          Mul b c bc,
-          Mul b d bd,
-          Add ad bc ad_bc) => Add (Q a b) (Q c d) (Q ad_bc bd)
-
-z = Z
-sz = S Z
-ssz = S (S Z)
-
-foo = add (Q sz sz) (Q sz sz)
diff --git a/ghc/tests/typecheck/should_compile/tc126.hs b/ghc/tests/typecheck/should_compile/tc126.hs
deleted file mode 100644 (file)
index 6748eb3..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependency test. Hugs [Apr 2001] fails to typecheck this
--- Rather bizarre example submitted by Jonathon Bell
-
-module ShouldCompile where
-
-class Bug f a r | f a -> r where
-   bug::f->a->r
-
-instance                Bug (Int->r) Int      r
-instance (Bug f a r) => Bug f        (c a)    (c r) 
-
-f:: Bug(Int->Int) a r => a->r
-f = bug (id::Int->Int)
-
-g1 = f (f [0::Int])
--- Inner f gives result type 
---     f [0::Int] :: Bug (Int->Int) [Int] r => r
--- Which matches the second instance declaration, giving r = [r']
---     f [0::Int] :: Bug (Int->Int) Int r' => r'
--- Wwich matches the first instance decl giving r' = Int
---     f [0::Int] :: Int
--- The outer f now has constraint
---     Bug (Int->Int) Int r
--- which makes r=Int
--- So g1::Int
-
-g2 = f (f (f [0::Int]))
--- The outer f repeats the exercise, so g2::Int
--- This is the definition that Hugs rejects
-
--- Here is a similar definition rejected by Hugs
--- It complains that the instances are not consistent with the
--- functional dependencies, which isn't true, because
---     (c a) does not unify with (c' a', c' b')
-
-class Foo f a r | f a->r where
-      foo::f->a->r
-
-instance Foo (a->r)     (c a)    (c r)
-instance Foo ((a,b)->r) (c a,c b)(c r)
diff --git a/ghc/tests/typecheck/should_compile/tc127.hs b/ghc/tests/typecheck/should_compile/tc127.hs
deleted file mode 100644 (file)
index 815ed5c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Another implicit parameter test, from Alastair Reid
-
-module ShouldCompile where
-
-import Maybe
-
-type Env = ([(String,Int)],Int)
-
-ident1 :: (?env :: Env) => String -> Int
-ident1 x = y
- where
-  env = ?env
-  y   = fromJust (lookup x (fst env))
-
-ident2 :: (?env :: Env) => String -> Int
-ident2 x = y
- where
-  y   = fromJust (lookup x (fst ?env))
-
-
--- Two more tests from Jeff Lewis
-x () = y where y = ?wibble
-
-f () = ?wibble :: Int
-g () = f ()
diff --git a/ghc/tests/typecheck/should_compile/tc128.hs b/ghc/tests/typecheck/should_compile/tc128.hs
deleted file mode 100644 (file)
index 139e8e5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Test type checking of mutually recursive groups
--- GHC 5.00 was falling into a black hole when type checking a recursive
--- group of type declarations including a *chain* of type synonyms.
-
-module ShouldCompile where
-
-  type PhraseFun = PMap -> Float
-  type PMap      = () -> Player
-  data Player    = MkT PhraseFun
-
diff --git a/ghc/tests/typecheck/should_fail/Data82.hs b/ghc/tests/typecheck/should_fail/Data82.hs
deleted file mode 100644 (file)
index cac9540..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module Data82 where
-
-data FooData = FooData
diff --git a/ghc/tests/typecheck/should_fail/Digraph.hs b/ghc/tests/typecheck/should_fail/Digraph.hs
deleted file mode 100644 (file)
index 81c1a1f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
--- !!! trying to have a polymorphic type sig where inappropriate
---
-module Digraph where
-
-data MaybeErr val err = Succeeded val | Failed err deriving ()
-
-type Edge  vertex = (vertex, vertex)
-type Cycle vertex = [vertex]
-
-stronglyConnComp :: Eq vertex => [Edge vertex] -> [vertex] -> [[vertex]]
-
-stronglyConnComp es vs
-  = snd (span_tree (new_range reversed_edges)
-                   ([],[])
-                   ( snd (dfs (new_range es) ([],[]) vs) )
-        )
- where
-   -- *********** the offending type signature **************
-   reversed_edges :: Eq v => [Edge v]
-   reversed_edges = map swap es
-
-   -- WRONGOLA: swap :: Eq v => Edge v -> Edge v
-   swap (x,y) = (y, x)
-
-   -- WRONGOLA?: new_range :: Eq v => [Edge v] -> v -> [v]
-
-   new_range    []       w = []
-   new_range ((x,y):xys) w
-       = if x==w
-         then (y : (new_range xys w))
-         else (new_range xys w)
-
-   {- WRONGOLA?:
-   span_tree :: Eq v => (v -> [v])
-                     -> ([v], [[v]])
-                     -> [v]
-                     -> ([v], [[v]])
-    -}
-
-   span_tree r (vs,ns) []   = (vs,ns)
-   span_tree r (vs,ns) (x:xs)
-       | x `elem` vs = span_tree r (vs,ns) xs
-       | otherwise = span_tree r (vs',(x:ns'):ns) xs
-         where
-           (vs',ns') = dfs r (x:vs,[]) (r x)
-
-dfs :: Eq v => (v -> [v])
-            -> ([v], [v])
-            -> [v]
-            -> ([v], [v])
-
-dfs r (vs,ns)   []   = (vs,ns)
-dfs r (vs,ns) (x:xs) | x `elem` vs = dfs r (vs,ns) xs
-                     | otherwise = dfs r (vs',(x:ns')++ns) xs
-                                   where
-                                     (vs',ns') = dfs r (x:vs,[]) (r x)
diff --git a/ghc/tests/typecheck/should_fail/Digraph.stderr b/ghc/tests/typecheck/should_fail/Digraph.stderr
deleted file mode 100644 (file)
index e5766b5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-
-Digraph.hs:19:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `v' escapes
-       It is mentioned in the environment
-       The following variables in the environment mention `v'
-         vs :: [v]
-         es :: [Edge v]
-    Signature type:     forall v. (Eq v) => [Edge v]
-    Type to generalise: [Edge v]
-    When checking the type signature for `reversed_edges'
-    In an equation for function `stronglyConnComp':
-       stronglyConnComp es vs
-                          = snd (span_tree (new_range reversed_edges)
-                                           ([], [])
-                                           (snd (dfs (new_range es) ([], []) vs)))
-                          where
-                              swap (x, y) = (y, x)
-                              reversed_edges :: forall v. (Eq v) => [Edge v]
-                              reversed_edges = map swap es
-                              new_range [] w = []
-                              new_range ((x, y) : xys) w
-                                          = if x == w then
-                                                (y : (new_range xys w))
-                                            else
-                                                (new_range xys w)
-                              span_tree r (vs, ns) [] = (vs, ns)
-                              span_tree r (vs, ns) (x : xs)
-                                          | x `elem` vs = span_tree r (vs, ns) xs
-                                          | otherwise = span_tree r (vs', (x : ns') : ns) xs
-                                          where
-                                              (vs', ns') = dfs r (x : vs, []) (r x)
diff --git a/ghc/tests/typecheck/should_fail/Inst82_1.hs b/ghc/tests/typecheck/should_fail/Inst82_1.hs
deleted file mode 100644 (file)
index 142c75b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module Inst82_1 where
-import Data82
-
-instance Read FooData where
-   readsPrec _ _ = [(FooData,"")]
diff --git a/ghc/tests/typecheck/should_fail/Inst82_2.hs b/ghc/tests/typecheck/should_fail/Inst82_2.hs
deleted file mode 100644 (file)
index 8c7dc41..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module Inst82_2 where
-import Data82
-
-instance Read FooData where
-   readsPrec _ _ = [(FooData,"")]
diff --git a/ghc/tests/typecheck/should_fail/Makefile b/ghc/tests/typecheck/should_fail/Makefile
deleted file mode 100644 (file)
index 861ca1f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_fail.mk
-
-HS_SRCS = $(wildcard *.hs)
-
-# The -noC messes up the Data82 compilation
-# HC_OPTS += -noC
-
-tcfail045_HC_OPTS = -fglasgow-exts -package lang
-tcfail068_HC_OPTS = -fglasgow-exts -package lang
-tcfail080_HC_OPTS = -fglasgow-exts -package lang
-tcfail089_HC_OPTS = -O
-# The -O can't go in {-# OPTIONS #-} because it's static
-
-Inst82_1.o : Inst82_1.hs Data82.hi
-       $(HC) $(HC_OPTS) -c $< -o $@
-Inst82_2.o : Inst82_2.hs Data82.hi
-       $(HC) $(HC_OPTS) -c $< -o $@
-Data82.o : Data82.hs
-       $(HC) $(HC_OPTS) -c $< -o $@
-
-# mkdependHS doesn't understand OPTIONS pragmas...
-SRC_MKDEPENDHS_OPTS += -fglasgow-exts -package lang
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/typecheck/should_fail/tcfail001.hs b/ghc/tests/typecheck/should_fail/tcfail001.hs
deleted file mode 100644 (file)
index 4e3e130..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! This should fail with a type error: the instance method
--- !!! has a function type when it should have the type [a].
-module ShouldFail where
-
-class A a where
- op :: a
-
-instance (A a, A a) => A [a] where
- op [] = []
diff --git a/ghc/tests/typecheck/should_fail/tcfail001.stderr b/ghc/tests/typecheck/should_fail/tcfail001.stderr
deleted file mode 100644 (file)
index 6281cf5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-tcfail001.hs:8:
-    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]
-       Inferred type: t -> t1
-    In an equation for function `op': op [] = []
-    In the definition for method `op'
diff --git a/ghc/tests/typecheck/should_fail/tcfail002.hs b/ghc/tests/typecheck/should_fail/tcfail002.hs
deleted file mode 100644 (file)
index b1fdd16..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldFail where
-
-c (x:y) = x
-c z = z
diff --git a/ghc/tests/typecheck/should_fail/tcfail002.stderr b/ghc/tests/typecheck/should_fail/tcfail002.stderr
deleted file mode 100644 (file)
index 1c333fc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail002.hs:4:
-    Occurs check: cannot construct the infinite type: t = [t]
-       Expected type: t
-       Inferred type: [t]
-    in the definition of function `c': z
diff --git a/ghc/tests/typecheck/should_fail/tcfail003.hs b/ghc/tests/typecheck/should_fail/tcfail003.hs
deleted file mode 100644 (file)
index 8458014..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-(d:e) = [1,'a']
diff --git a/ghc/tests/typecheck/should_fail/tcfail003.stderr b/ghc/tests/typecheck/should_fail/tcfail003.stderr
deleted file mode 100644 (file)
index 7f5ad7e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail003.hs:3:
-    No instance for `Num Char'
-    arising from the literal `1' at tcfail003.hs:3
-    In the list element: 1
-    in a pattern binding: [1, 'a']
diff --git a/ghc/tests/typecheck/should_fail/tcfail004.hs b/ghc/tests/typecheck/should_fail/tcfail004.hs
deleted file mode 100644 (file)
index 513680b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-(f,g) = (1,2,3)
diff --git a/ghc/tests/typecheck/should_fail/tcfail004.stderr b/ghc/tests/typecheck/should_fail/tcfail004.stderr
deleted file mode 100644 (file)
index 5325da0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail004.hs:3:
-    Couldn't match `(t, t1)' against `(t2, t3, t4)'
-       Expected type: (t, t1)
-       Inferred type: (t2, t3, t4)
-    in a pattern binding: (1, 2, 3)
diff --git a/ghc/tests/typecheck/should_fail/tcfail005.hs b/ghc/tests/typecheck/should_fail/tcfail005.hs
deleted file mode 100644 (file)
index ca211e1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-(h:i) = (1,'a')
diff --git a/ghc/tests/typecheck/should_fail/tcfail005.stderr b/ghc/tests/typecheck/should_fail/tcfail005.stderr
deleted file mode 100644 (file)
index 5bf893c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail005.hs:3:
-    Couldn't match `[t]' against `(t1, t2)'
-       Expected type: [t]
-       Inferred type: (t1, t2)
-    in a pattern binding: (1, 'a')
diff --git a/ghc/tests/typecheck/should_fail/tcfail006.hs b/ghc/tests/typecheck/should_fail/tcfail006.hs
deleted file mode 100644 (file)
index 37fd1f9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldFail where
-
-(j,k) = case (if True then True else False) of
-         True -> (True,1)
-         False -> (1,True)
diff --git a/ghc/tests/typecheck/should_fail/tcfail006.stderr b/ghc/tests/typecheck/should_fail/tcfail006.stderr
deleted file mode 100644 (file)
index 96f63de..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail006.hs:5:
-    No instance for `Num Bool'
-    arising from the literal `1' at tcfail006.hs:5
-    in a group of case alternatives beginning: (1, True)
diff --git a/ghc/tests/typecheck/should_fail/tcfail007.hs b/ghc/tests/typecheck/should_fail/tcfail007.hs
deleted file mode 100644 (file)
index ee24983..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldFail where
-
-n x | True = x+1
-    | False = True
diff --git a/ghc/tests/typecheck/should_fail/tcfail007.stderr b/ghc/tests/typecheck/should_fail/tcfail007.stderr
deleted file mode 100644 (file)
index 656a76e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail007.hs:3:
-    No instance for `Num Bool'
-    arising from the literal `1' at tcfail007.hs:3
-    In the second argument of `(+)', namely `1'
-    in the definition of function `n': x + 1
diff --git a/ghc/tests/typecheck/should_fail/tcfail008.hs b/ghc/tests/typecheck/should_fail/tcfail008.hs
deleted file mode 100644 (file)
index dbc9d0c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-o = 1:2
diff --git a/ghc/tests/typecheck/should_fail/tcfail008.stderr b/ghc/tests/typecheck/should_fail/tcfail008.stderr
deleted file mode 100644 (file)
index ba4fd83..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-tcfail008.hs:3:
-    No instance for `Num [t]'
-    arising from the literal `2' at tcfail008.hs:3
-    In the second argument of `(:)', namely `2'
-    in the definition of function `o': 1 : 2
-
-tcfail008.hs:3:
-    Ambiguous type variable(s) `t' in the constraint `Num t'
-    arising from the literal `1' at tcfail008.hs:3
-    In the first argument of `(:)', namely `1'
-    in the definition of function `o': 1 : 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail009.hs b/ghc/tests/typecheck/should_fail/tcfail009.hs
deleted file mode 100644 (file)
index e8afa0f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-p = [(1::Int)..(2::Integer)]
diff --git a/ghc/tests/typecheck/should_fail/tcfail009.stderr b/ghc/tests/typecheck/should_fail/tcfail009.stderr
deleted file mode 100644 (file)
index 260fef1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail009.hs:3:
-    Couldn't match `Integer' against `Int'
-       Expected type: Integer
-       Inferred type: Int
-    In an expression with a type signature: 2 :: Integer
diff --git a/ghc/tests/typecheck/should_fail/tcfail010.hs b/ghc/tests/typecheck/should_fail/tcfail010.hs
deleted file mode 100644 (file)
index 8b79335..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-q = \ (y:z) -> z+2
diff --git a/ghc/tests/typecheck/should_fail/tcfail010.stderr b/ghc/tests/typecheck/should_fail/tcfail010.stderr
deleted file mode 100644 (file)
index ef08279..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail010.hs:3:
-    No instance for `Num [t]'
-    arising from the literal `2' at tcfail010.hs:3
-    In the second argument of `(+)', namely `2'
-    in a lambda abstraction: z + 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail011.hs b/ghc/tests/typecheck/should_fail/tcfail011.hs
deleted file mode 100644 (file)
index 89f5c4b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-z = \y -> x x where x = y
diff --git a/ghc/tests/typecheck/should_fail/tcfail011.stderr b/ghc/tests/typecheck/should_fail/tcfail011.stderr
deleted file mode 100644 (file)
index b94eea6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail011.hs:3: Variable not in scope: `y'
diff --git a/ghc/tests/typecheck/should_fail/tcfail012.hs b/ghc/tests/typecheck/should_fail/tcfail012.hs
deleted file mode 100644 (file)
index 67e5fa0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-True = []
diff --git a/ghc/tests/typecheck/should_fail/tcfail012.stderr b/ghc/tests/typecheck/should_fail/tcfail012.stderr
deleted file mode 100644 (file)
index 2177dd9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail012.hs:3:
-    Couldn't match `Bool' against `[t]'
-       Expected type: Bool
-       Inferred type: [t]
-    in a pattern binding: []
diff --git a/ghc/tests/typecheck/should_fail/tcfail013.hs b/ghc/tests/typecheck/should_fail/tcfail013.hs
deleted file mode 100644 (file)
index c9ccc52..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldFail where
-
-f [] = 1
-f True = 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail013.stderr b/ghc/tests/typecheck/should_fail/tcfail013.stderr
deleted file mode 100644 (file)
index f460026..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail013.hs:4:
-    Couldn't match `[t]' against `Bool'
-       Expected type: [t]
-       Inferred type: Bool
-    In the pattern: True
-    In an equation for function `f': f True = 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail014.hs b/ghc/tests/typecheck/should_fail/tcfail014.hs
deleted file mode 100644 (file)
index 7d91699..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-module ShouldFail where
-
-f x = g+1
-      where g y = h+2
-                  where h z = z z
diff --git a/ghc/tests/typecheck/should_fail/tcfail014.stderr b/ghc/tests/typecheck/should_fail/tcfail014.stderr
deleted file mode 100644 (file)
index e6836fd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail014.hs:5:
-    Occurs check: cannot construct the infinite type: t = t -> t1
-       Expected type: t
-       Inferred type: t -> t1
-    In the first argument of `z', namely `z'
-    in the definition of function `h': z z
diff --git a/ghc/tests/typecheck/should_fail/tcfail015.hs b/ghc/tests/typecheck/should_fail/tcfail015.hs
deleted file mode 100644 (file)
index ae929e3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldFail where
-
-data AList a = ANull | ANode a (AList a)
-
-type IntList = AList Int
-
-g (ANull) = 2
-g (ANode b (ANode c d)) | b = c+1
-                        | otherwise = 4
diff --git a/ghc/tests/typecheck/should_fail/tcfail015.stderr b/ghc/tests/typecheck/should_fail/tcfail015.stderr
deleted file mode 100644 (file)
index 7ff8cae..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail015.hs:9:
-    No instance for `Num Bool'
-    arising from the literal `4' at tcfail015.hs:9
-    in the definition of function `g': 4
diff --git a/ghc/tests/typecheck/should_fail/tcfail016.hs b/ghc/tests/typecheck/should_fail/tcfail016.hs
deleted file mode 100644 (file)
index 2dfd4a5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module ShouldFail where
-
-type AnnExpr a = (a,Expr a)
-
-data Expr a = Var [Char]
-              | App (AnnExpr a) (AnnExpr a)
-
-g (Var name) = [name]
-g (App e1 e2) = (g e1)++(g e2)
diff --git a/ghc/tests/typecheck/should_fail/tcfail016.stderr b/ghc/tests/typecheck/should_fail/tcfail016.stderr
deleted file mode 100644 (file)
index aebdb2c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail016.hs:9:
-    Couldn't match `Expr a' against `AnnExpr a'
-       Expected type: Expr a
-       Inferred type: AnnExpr a
-    In the first argument of `g', namely `e1'
-    In the first argument of `(++)', namely `(g e1)'
diff --git a/ghc/tests/typecheck/should_fail/tcfail017.hs b/ghc/tests/typecheck/should_fail/tcfail017.hs
deleted file mode 100644 (file)
index db3215d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-module ShouldFail where
-
-class C a where
- op1 :: a -> a
-
-class (C a) => B a where
- op2 :: a -> a -> a
-
-instance (B a) => B [a] where
- op2 xs ys = xs
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail017.stderr b/ghc/tests/typecheck/should_fail/tcfail017.stderr
deleted file mode 100644 (file)
index ac4fd91..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail017.hs:10:
-    Could not deduce `C [a]' from the context (B a)
-    Probable fix:
-       Add `C [a]' to the instance declaration context
-       Or add an instance declaration for `C [a]'
-    arising from an instance declaration at tcfail017.hs:10
diff --git a/ghc/tests/typecheck/should_fail/tcfail018.hs b/ghc/tests/typecheck/should_fail/tcfail018.hs
deleted file mode 100644 (file)
index 9d811dc..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-module ShouldFail where
-
-(a:[]) = 1
diff --git a/ghc/tests/typecheck/should_fail/tcfail018.stderr b/ghc/tests/typecheck/should_fail/tcfail018.stderr
deleted file mode 100644 (file)
index c446b20..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail018.hs:5:
-    No instance for `Num [t]'
-    arising from the literal `1' at tcfail018.hs:5
-    in a pattern binding: 1
diff --git a/ghc/tests/typecheck/should_fail/tcfail019.hs b/ghc/tests/typecheck/should_fail/tcfail019.hs
deleted file mode 100644 (file)
index af46532..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-module ShouldFail where
-
-class A a where
- p1 :: a -> a
- p2 :: a -> a -> a
-
-class (A b) => B b where
- p3 :: b
- p4 :: b -> b
-
-class (A c) => C c where
- p5 :: c -> c
- p6 :: c -> Int
-
-class (B d,C d) => D d where
- p7 :: d -> d
-
-instance D [a] where
- p7 l = []
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail019.stderr b/ghc/tests/typecheck/should_fail/tcfail019.stderr
deleted file mode 100644 (file)
index 80093c1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-tcfail019.hs:18:
-    Could not deduce `C [a]' from the context ()
-    Probable fix:
-       Add `C [a]' to the instance declaration context
-       Or add an instance declaration for `C [a]'
-    arising from an instance declaration at tcfail019.hs:18
-
-tcfail019.hs:18:
-    Could not deduce `B [a]' from the context ()
-    Probable fix:
-       Add `B [a]' to the instance declaration context
-       Or add an instance declaration for `B [a]'
-    arising from an instance declaration at tcfail019.hs:18
diff --git a/ghc/tests/typecheck/should_fail/tcfail020.hs b/ghc/tests/typecheck/should_fail/tcfail020.hs
deleted file mode 100644 (file)
index 0d3dc25..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module ShouldFail where
-
-class A a where
- p1 :: a -> a
- p2 :: a -> a -> a
-
-class (A b) => B b where
- p3 :: b
-
-instance (A a) => B [a] where
- p3 = []
-
-data X = XC --, causes stack dump
-
---instance B Bool where
--- p3 = True
diff --git a/ghc/tests/typecheck/should_fail/tcfail020.stderr b/ghc/tests/typecheck/should_fail/tcfail020.stderr
deleted file mode 100644 (file)
index 69c9e54..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail020.hs:10:
-    Could not deduce `A [a]' from the context (A a)
-    Probable fix:
-       Add `A [a]' to the instance declaration context
-       Or add an instance declaration for `A [a]'
-    arising from an instance declaration at tcfail020.hs:10
diff --git a/ghc/tests/typecheck/should_fail/tcfail021.hs b/ghc/tests/typecheck/should_fail/tcfail021.hs
deleted file mode 100644 (file)
index af11b56..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! Illegally giving methods in a pattern binding (for no v good reason...)
-
-module ShouldFail where
-
-data Foo = MkFoo Int
-
-instance Eq Foo where
-    ((==), (/=)) = (\x -> \y -> True, \x -> \y -> False)
diff --git a/ghc/tests/typecheck/should_fail/tcfail021.stderr b/ghc/tests/typecheck/should_fail/tcfail021.stderr
deleted file mode 100644 (file)
index 2ba2199..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail021.hs:8:
-    Can't handle multiple methods defined by one pattern binding
-       (==, /=) = (\ x -> \ y -> ..., \ x -> \ y -> ...)
diff --git a/ghc/tests/typecheck/should_fail/tcfail023.hs b/ghc/tests/typecheck/should_fail/tcfail023.hs
deleted file mode 100644 (file)
index ea8fe8b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module ShouldFail where
-
--- !!! Duplicate instances
-
-data B = C
-
-class A a where
- op :: a -> a
-
-instance A B where
- op C = True
-
-instance A B where
- op C = True
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail023.stderr b/ghc/tests/typecheck/should_fail/tcfail023.stderr
deleted file mode 100644 (file)
index 39e1470..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-Duplicate or overlapping instance declarations:
-  tcfail023.hs:10: {A B}
-  tcfail023.hs:13: {A B}
-
-tcfail023.hs:11:
-    Couldn't match `B' against `Bool'
-       Expected type: B
-       Inferred type: Bool
-    In the right-hand side of an equation for `op': True
-
-tcfail023.hs:14:
-    Couldn't match `B' against `Bool'
-       Expected type: B
-       Inferred type: Bool
-    In the right-hand side of an equation for `op': True
diff --git a/ghc/tests/typecheck/should_fail/tcfail025.stderr b/ghc/tests/typecheck/should_fail/tcfail025.stderr
deleted file mode 100644 (file)
index 6a0f830..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-tcfail025.hs:2:
-    Conflicting exports for local name:  A
-       module Main
-       module Main
-
-
-Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail026.stderr b/ghc/tests/typecheck/should_fail/tcfail026.stderr
deleted file mode 100644 (file)
index 23e90f7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-tcfail026.hs:2:
-    Conflicting exports for local name:  A
-       module Main
-       module Main
-tcfail026.hs:6:
-    Class type variable ``a'' does not appear in method signature:
-       op2 ::
-           `b' -> `b'
-
-
-Compilation had errors
diff --git a/ghc/tests/typecheck/should_fail/tcfail027.hs b/ghc/tests/typecheck/should_fail/tcfail027.hs
deleted file mode 100644 (file)
index e01f696..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! tests for CycleErr in classes
-module TcFail where
-
-class (B a) => A a where
- op1 :: a -> a
-
-class (A a) => B a where
- op2 :: a -> a -> a
diff --git a/ghc/tests/typecheck/should_fail/tcfail027.stderr b/ghc/tests/typecheck/should_fail/tcfail027.stderr
deleted file mode 100644 (file)
index de3a728..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Cycle in class declarations:
-    `A' at tcfail027.hs:4
-    `B' at tcfail027.hs:7
diff --git a/ghc/tests/typecheck/should_fail/tcfail028.hs b/ghc/tests/typecheck/should_fail/tcfail028.hs
deleted file mode 100644 (file)
index 5f9b32c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- !!! tests for ArityErr
-module TcFail where
-
-data A a b = B (A a)
diff --git a/ghc/tests/typecheck/should_fail/tcfail028.stderr b/ghc/tests/typecheck/should_fail/tcfail028.stderr
deleted file mode 100644 (file)
index ef349d4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail028.hs:4:
-    Couldn't match `k -> k1' against `Type bx'
-       Expected kind: k -> k1
-       Inferred kind: Type bx
-    When checking that `A a' is a type
-    In the data type declaration for `A'
diff --git a/ghc/tests/typecheck/should_fail/tcfail029.hs b/ghc/tests/typecheck/should_fail/tcfail029.hs
deleted file mode 100644 (file)
index 14dd2d7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! tests for InstOpErr
-module ShouldFail where
-
-data Foo = Bar | Baz
-
-f x = x > Bar
diff --git a/ghc/tests/typecheck/should_fail/tcfail029.stderr b/ghc/tests/typecheck/should_fail/tcfail029.stderr
deleted file mode 100644 (file)
index daa3175..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail029.hs:6:
-    No instance for `Ord Foo'
-    arising from use of `>' at tcfail029.hs:6
-    in the definition of function `f': x > Bar
diff --git a/ghc/tests/typecheck/should_fail/tcfail030.hs b/ghc/tests/typecheck/should_fail/tcfail030.hs
deleted file mode 100644 (file)
index 163c727..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
--- !!! empty file
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail030.stderr b/ghc/tests/typecheck/should_fail/tcfail030.stderr
deleted file mode 100644 (file)
index 06668c1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail030.hs:3: Variable not in scope: `main'
diff --git a/ghc/tests/typecheck/should_fail/tcfail031.hs b/ghc/tests/typecheck/should_fail/tcfail031.hs
deleted file mode 100644 (file)
index 6b9a0de..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f x = if 'a' then 1 else 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail031.stderr b/ghc/tests/typecheck/should_fail/tcfail031.stderr
deleted file mode 100644 (file)
index 5664334..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail031.hs:3:
-    Couldn't match `Bool' against `Char'
-       Expected type: Bool
-       Inferred type: Char
-    In the predicate expression: 'a'
-    in the definition of function `f': if 'a' then 1 else 2
diff --git a/ghc/tests/typecheck/should_fail/tcfail032.hs b/ghc/tests/typecheck/should_fail/tcfail032.hs
deleted file mode 100644 (file)
index 5950064..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{- This test gives the following not-very-wonderful error message.
-
-  "tc_sig.hs", line 3: Type signature does not match the inferred type:
-    Signature: t76 -> Int
-    Inferred type: t75
-
-It *is* an error, because x does not have the polytype 
-       forall a. Eq a => a -> Int
-becuase it is monomorphic, but the error message isn't very illuminating.
--}
-
-module ShouldFail where
-
-f x = (x :: (Eq a) => a -> Int)
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail032.stderr b/ghc/tests/typecheck/should_fail/tcfail032.stderr
deleted file mode 100644 (file)
index 4b6d85a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-tcfail032.hs:14:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `a' escapes
-       It is mentioned in the environment
-       The following variables in the environment mention `a'
-         x :: a -> Int
-    Signature type:     forall a. (Eq a) => a -> Int
-    Type to generalise: a -> Int
-    When checking an expression type signature
-    In an expression with a type signature:
-         x :: forall a. (Eq a) => a -> Int
diff --git a/ghc/tests/typecheck/should_fail/tcfail033.hs b/ghc/tests/typecheck/should_fail/tcfail033.hs
deleted file mode 100644 (file)
index fdc0aff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
--- from Jon Hill
-module ShouldFail where
-
-buglet = [ x | (x,y) <- buglet ]
diff --git a/ghc/tests/typecheck/should_fail/tcfail033.stderr b/ghc/tests/typecheck/should_fail/tcfail033.stderr
deleted file mode 100644 (file)
index 1daa31d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail033.hs:4:
-    Occurs check: cannot construct the infinite type: t = (t, t1)
-       Expected type: (t, t1)
-       Inferred type: t
-    in a `list comprension' pattern binding: x
diff --git a/ghc/tests/typecheck/should_fail/tcfail034.hs b/ghc/tests/typecheck/should_fail/tcfail034.hs
deleted file mode 100644 (file)
index 0bbb75f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-{-
-From: Jon Hill <hilly@dcs.qmw.ac.uk@jess.gla.ac.uk@pp.dcs.glasgow.ac.uk>
-To: glasgow-haskell-bugs
-Subject: Unfriendly error message
-Date: Thu, 25 Jun 1992 09:22:55 +0100
-
-Hello again,
-
-I came across a rather nasty error message when I gave a function an
-incorrect type signature (the context is wrong). I can remember reading 
-in the source about this problem - I just thought I'd let you know anyway :-)
--}
-module ShouldFail where
-
-
-test::(Num a, Eq a) => a -> Bool
-test x = (x `mod` 3) == 0
-
-{-
-granite> ndph bug002.ldh
-Data Parallel Haskell Compiler, version 0.01 (Glasgow 0.07)
-
-"<unknown>", line <unknown>: Cannot express dicts in terms of dictionaries available:
-dicts_encl:
-   "<built-in>", line : dict.87 :: <Num a>
-   "<built-in>", line : dict.88 :: <Eq a>
-dicts_encl':
-   "<built-in>", line : dict.87 :: <Num a>
-   "<built-in>", line : dict.88 :: <Eq a>
-dicts:
-   "<built-in>", line : dict.87 :: <Num a>
-   "<built-in>", line : dict.88 :: <Eq a>
-super_class_dict: "<built-in>", line : dict.80 :: <Integral a>
-Fail: Compilation errors found
-
-dph: execution of the Haskell compiler had trouble
-
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail034.stderr b/ghc/tests/typecheck/should_fail/tcfail034.stderr
deleted file mode 100644 (file)
index 3986844..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-tcfail034.hs:17:
-    Could not deduce `Integral a' from the context (Num a, Eq a)
-    Probable fix:
-       Add `Integral a' to the type signature(s) for {test}
-    arising from use of `mod' at tcfail034.hs:17
-    In the first argument of `(==)', namely `(x `mod` 3)'
-    in the definition of function `test': (x `mod` 3) == 0
diff --git a/ghc/tests/typecheck/should_fail/tcfail035.hs b/ghc/tests/typecheck/should_fail/tcfail035.hs
deleted file mode 100644 (file)
index 8de6786..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- !!! instances with empty where parts: duplicate
---
-module ShouldFail where
-
-data NUM = ONE | TWO
-instance Num NUM
-instance Num NUM
-instance Eq NUM
-instance Show NUM
diff --git a/ghc/tests/typecheck/should_fail/tcfail035.stderr b/ghc/tests/typecheck/should_fail/tcfail035.stderr
deleted file mode 100644 (file)
index d8f1091..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Duplicate instance declarations:
-  tcfail035.hs:6: Num NUM
-  tcfail035.hs:7: Num NUM
diff --git a/ghc/tests/typecheck/should_fail/tcfail036.hs b/ghc/tests/typecheck/should_fail/tcfail036.hs
deleted file mode 100644 (file)
index ade1720..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! prelude class name in an instance-tycon position
---
-module ShouldFail where
-
-data NUM = ONE | TWO
-instance Num NUM
-  where ONE + ONE = TWO
-instance Num NUM
-instance Eq Num
---instance Text Num
diff --git a/ghc/tests/typecheck/should_fail/tcfail036.stderr b/ghc/tests/typecheck/should_fail/tcfail036.stderr
deleted file mode 100644 (file)
index af65473..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Duplicate instance declarations:
-  tcfail036.hs:6: Num NUM
-  tcfail036.hs:8: Num NUM
-
-tcfail036.hs:9:
-    Class `Num' used as a type
-    When checking kinds in `Eq Num'
-    In the instance declaration for `Eq Num'
diff --git a/ghc/tests/typecheck/should_fail/tcfail037.hs b/ghc/tests/typecheck/should_fail/tcfail037.hs
deleted file mode 100644 (file)
index d2110c7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! PreludeCore entities cannot be redefined at the top-level
---
-module ShouldFail where
-
-data NUM = ONE | TWO
-
-f a b = a + b
-f :: NUM -> NUM -> NUM
-
-ONE + ONE = TWO
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail037.stderr b/ghc/tests/typecheck/should_fail/tcfail037.stderr
deleted file mode 100644 (file)
index 0191c72..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail037.hs:7:
-    Ambiguous occurrence `+'
-    It could refer to either `ShouldFail.+', defined at tcfail037.hs:10
-                         or `PrelNum.+', imported from Prelude at tcfail037.hs:3
diff --git a/ghc/tests/typecheck/should_fail/tcfail038.hs b/ghc/tests/typecheck/should_fail/tcfail038.hs
deleted file mode 100644 (file)
index 1770bde..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! duplicate class-method declarations
-
-module ShouldFail where
-
-data NUM = ONE | TWO
-instance Eq NUM where
-       a == b = True
-       a /= b = False
-       a == b = False
-       a /= b = True
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail038.stderr b/ghc/tests/typecheck/should_fail/tcfail038.stderr
deleted file mode 100644 (file)
index d16461e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-tcfail038.hs:9:
-    Conflicting definitions for `=='
-    in the bindings in an instance declaration
-
-tcfail038.hs:10:
-    Conflicting definitions for `/='
-    in the bindings in an instance declaration
diff --git a/ghc/tests/typecheck/should_fail/tcfail039.hs b/ghc/tests/typecheck/should_fail/tcfail039.hs
deleted file mode 100644 (file)
index 3340c3b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! bogus re-use of prelude class-method name (==)
---
-module ShouldFail where
-
-data NUM = ONE | TWO
-class EQ a where
-       (==) :: a -> a -> Bool
-
-instance EQ NUM where
-       a /= b = False
-       a == b = True
diff --git a/ghc/tests/typecheck/should_fail/tcfail039.stderr b/ghc/tests/typecheck/should_fail/tcfail039.stderr
deleted file mode 100644 (file)
index 1250034..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail039.hs:11:
-    Ambiguous occurrence `=='
-    It could refer to either `ShouldFail.==', defined at tcfail039.hs:7
-                         or `PrelBase.==', imported from Prelude at tcfail039.hs:3
diff --git a/ghc/tests/typecheck/should_fail/tcfail040.hs b/ghc/tests/typecheck/should_fail/tcfail040.hs
deleted file mode 100644 (file)
index 8ac06b3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
--- !!! instances of functions
---
-module ShouldFail where
-
-data NUM = ONE | TWO
-
-class EQ a where
-       (===) :: a -> a -> Bool
-
-class ORD a where
-       (<<) :: a -> a -> Bool
-       a << b = True
-
-instance EQ (a -> b) where
-       f === g = True
-
-instance ORD (a -> b)
-
-f = (<<) === (<<)
---f :: (EQ a,Num a) => a -> a -> Bool
-
-
-{-
-instance EQ NUM where
---     a /= b = False
-       a === b = True
---     a /= b = False
-
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail040.stderr b/ghc/tests/typecheck/should_fail/tcfail040.stderr
deleted file mode 100644 (file)
index bf521eb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail040.hs:19:
-    Ambiguous type variable(s) `a' in the constraint `ORD a'
-    arising from use of `<<' at tcfail040.hs:19
-    In the second argument of `(===)', namely `(<<)'
-    in the definition of function `f': (<<) === (<<)
diff --git a/ghc/tests/typecheck/should_fail/tcfail042.hs b/ghc/tests/typecheck/should_fail/tcfail042.hs
deleted file mode 100644 (file)
index 5fdf6c6..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-module ShouldFail where
-
--- !!! weird class/instance examples off the haskell list
---
-
-class Foo a          where foo :: a -> a
-class Foo a => Bar a where bar :: a -> a
-
-
-instance Num a => Foo [a] where
-    foo []     = []
-    foo (x:xs) = map (x+) xs
-
-
-instance (Eq a, Show a) => Bar [a] where
-    bar []     = []
-    bar (x:xs) = foo xs where u = x==x
-                              v = show x
-
-------------------------------------------
-
-{-
-class Foo a => Bar2 a where bar2 :: a -> a
-
-instance (Eq a, Show a) => Foo [a]
-
-instance Num a => Bar2 [a]
-
-data X a = X a
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail042.stderr b/ghc/tests/typecheck/should_fail/tcfail042.stderr
deleted file mode 100644 (file)
index aad6ff0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail042.hs:15:
-    Could not deduce `Num a' from the context (Eq a, Show a)
-    Probable fix:
-       Add `Num a' to the instance declaration context
-    arising from an instance declaration at tcfail042.hs:15
diff --git a/ghc/tests/typecheck/should_fail/tcfail043.hs b/ghc/tests/typecheck/should_fail/tcfail043.hs
deleted file mode 100644 (file)
index 184a4e2..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
--- The translation of this program should assign only one dictionary to
--- the function search (an Ord dictionary). Instead, it assigns two.
--- The output produced currently displays this.
-
--- 10/12/92:  This program is actually erroneous.  The pattern-binding for
--- search falls under the monomorphism restriction, and there is no
--- call to search which might fix its type.  So there should be a complaint.
--- But the actual error message is horrible:
--- 
--- "bug001.hs", line 26: Ambiguous overloading:
---     class "Ord_", type "a" (at a use of an overloaded identifier: gt)
---     class "Eq_", type "a" (at a use of an overloaded identifier: eq)
-
-
-module TcFail where
-
-class Eq_ a where
- eq :: a -> a -> Bool
-
-instance Eq_ Int where
- eq = eqIntEq
-
-instance (Eq_ a) => Eq_ [a] where
- eq = \ xs ys -> 
-     if (null xs) 
-        then (null ys)
-        else if (null ys) 
-                then False
-                else (&&) (eq (hd xs) (hd ys)) (eq (tl xs) (tl ys))
-
-class (Eq_ a) => Ord_ a where
- gt :: a -> a -> Bool
-
-instance Ord_ Int where
- gt = ordIntGt
-
-search 
- = \ a bs -> if gt (hd bs) a
-                then False 
-                else if eq a (hd bs) then True else search a (tl bs)
-
-
-hd :: [a] -> a
-hd (a:as) = a
-
-tl :: [a] -> [a]
-tl (a:as) = as
-
-ordIntGt :: Int -> Int -> Bool
-ordIntGt 2 3 = True
-
-eqIntEq :: Int -> Int -> Bool
-eqIntEq  2 3 = True
-
-
-
-
-{-
-
-===============================================
-Main.Eq__INST_PreludeBuiltin.Int =
-    let
-      AbsBinds [] [] [(eq, eq)]
-         {- nonrec -}
-         {-# LINE 2 "test3.hs" -}
-
-         eq :: PreludeBuiltin.Int -> PreludeBuiltin.Int -> PreludeCore.Bool
-         eq = Main.eqIntEq
-    in ({-dict-} [] [eq])
-
-Main.Eq__INST_PreludeBuiltin.List =
-    /\ t135 ->
-       \{-dict-} _dict138 ->
-           let
-             {- nonrec -}
-             _dict136 = {-singleDict-} _dict138
-             {- nonrec -}
-             _dict129 = {-singleDict-} _dict136
-             AbsBinds [] [] [(eq, eq)]
-                 {- nonrec -}
-
-                 _dict133 =
-                     Main.Eq__INST_PreludeBuiltin.List
-                         [t135] [{-singleDict-} _dict136]
-                 {- nonrec -}
-                 {-# LINE 5 "test3.hs" -}
-
-                 eq :: [t135] -> [t135] -> PreludeCore.Bool
-                 eq = \ xs ys -> 
-
-if (Main.null t135) xs then
-                                     (Main.null t135) ys
-                                 else
-
-                                     if (Main.null t135) ys then
-                                         PreludeCore.False
-                                     else
-
-                                         Main.and
-
-
-                                             ((Main.Eq_.eq t135 _dict129)
-
-
-                                                  ((Main.hd t135) xs)
-                                                  ((Main.hd t135) ys))
-                                             
-
-
-
-
-
-(Main.Eq_.eq [t135] _dict133)
-
-
-
-                                                  ((Main.tl t135) xs)
-                                                  ((Main.tl t135) ys))
-           in ({-dict-} [] [eq])
-Main.Ord__INST_PreludeBuiltin.Int =
-    let
-      {- nonrec -}
-      _dict142 = Main.Eq__INST_PreludeBuiltin.Int [] []
-      AbsBinds [] [] [(gt, gt)]
-         {- nonrec -}
-         {-# LINE 16 "test3.hs" -}
-
-         gt :: PreludeBuiltin.Int -> PreludeBuiltin.Int -> PreludeCore.Bool
-         gt = Main.ordIntGt
-    in ({-dict-} [_dict142] [gt])
-
-Main.Eq_.eq = /\ a -> \{-classdict-} [] [eq] -> eq
-
-Main.Ord_.gt = /\ a -> \{-classdict-} [_dict56] [gt] -> gt
-
-Main.Ord__TO_Main.Eq_ = /\ a -> \{-classdict-} [_dict58] [gt] -> ???_dict58???
-
-AbsBinds [t60] [] [(hd, Main.hd)]
-    {- nonrec -}
-
-
-
-    hd :: [t60] -> t60
-    hd (a PreludeBuiltin.: as)
-              = a
-
-AbsBinds [t68] [] [(tl, Main.tl)]
-    {- nonrec -}
-
-
-
-
-    tl :: [t68] -> [t68]
-    tl (a PreludeBuiltin.: as)
-              = as
-
-
-AbsBinds [t91] [_dict85, _dict88] [(search, Main.search)]
-    {- rec -}
-    {-# LINE 19 "test3.hs" -}
-
-
-    search :: t91 -> [t91] -> PreludeCore.Bool
-    search
-       = \ a bs -> 
-
-
-if (Main.Ord_.gt t91 _dict85) ((Main.hd t91) bs) a then
-                       PreludeCore.False
-                   else
-
-                       if (Main.Eq_.eq t91 _dict88) a ((Main.hd t91) bs) then
-                           PreludeCore.True
-                       else
-
-                           search a ((Main.tl t91) bs)
-AbsBinds [] [] [(and, Main.and)]
-    {- nonrec -}
-    and :: PreludeCore.Bool -> PreludeCore.Bool -> PreludeCore.Bool
-    and PreludeCore.True PreludeCore.True
-               = PreludeCore.True
-AbsBinds [] [] [(ordIntGt, Main.ordIntGt)]
-    {- nonrec -}
-    _dict97 = PreludeCore.Num_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict98 = PreludeCore.Eq_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict100 = PreludeCore.Num_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict101 = PreludeCore.Eq_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-
-
-
-    ordIntGt :: PreludeBuiltin.Int -> PreludeBuiltin.Int -> PreludeCore.Bool
-    ordIntGt
-       2 3 = PreludeCore.True
-AbsBinds [] [] [(eqIntEq, Main.eqIntEq)]
-    {- nonrec -}
-    _dict105 = PreludeCore.Num_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict106 = PreludeCore.Eq_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict108 = PreludeCore.Num_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-    _dict109 = PreludeCore.Eq_INST_PreludeBuiltin.Int [] []
-    {- nonrec -}
-
-    eqIntEq :: PreludeBuiltin.Int -> PreludeBuiltin.Int -> PreludeCore.Bool
-    eqIntEq
-       2 3 = PreludeCore.True
-
-
-AbsBinds [t112] [] [(null, Main.null)]
-    {- nonrec -}
-
-    null :: [t112] -> PreludeCore.Bool
-    null [] = PreludeCore.True
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail043.stderr b/ghc/tests/typecheck/should_fail/tcfail043.stderr
deleted file mode 100644 (file)
index 3dd8884..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-tcfail043.hs:38:
-    Ambiguous type variable(s) `a' in the constraint `Ord_ a'
-    arising from use of `gt' at tcfail043.hs:38
-    In the predicate expression: gt (hd bs) a
-    in a lambda abstraction:
-       if gt (hd bs) a then
-           False
-       else
-           if eq a (hd bs) then True else search a (tl bs)
diff --git a/ghc/tests/typecheck/should_fail/tcfail044.hs b/ghc/tests/typecheck/should_fail/tcfail044.hs
deleted file mode 100644 (file)
index b271d0f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
--- !!! tcfail044: duplicated type variable in instance decls
---
-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
-    negate f = \x -> - (f x)
-    f * g    = \x -> f x * g x
-    fromInteger n = \x -> fromInteger n
-
-ss :: Float -> Float
-cc :: Float -> Float
-tt :: Float -> Float
-
-ss = sin * sin
-cc = cos * cos
-tt = ss + cc
-
---main = putStr ((show (tt 0.4))++ "  "++(show (tt 1.652)))
diff --git a/ghc/tests/typecheck/should_fail/tcfail044.stderr b/ghc/tests/typecheck/should_fail/tcfail044.stderr
deleted file mode 100644 (file)
index f454eb8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-tcfail044.hs:5:
-    Illegal instance declaration for `Eq (a -> a)'
-       (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)
-
-tcfail044.hs:8:
-    Illegal instance declaration for `Num (a -> a)'
-       (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)
diff --git a/ghc/tests/typecheck/should_fail/tcfail045.hs b/ghc/tests/typecheck/should_fail/tcfail045.hs
deleted file mode 100644 (file)
index 7f0699f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! a bad _CCallable thing (from a bug from Satnam)
---
-module ShouldFail where
-
-import Foreign
-import Addr
-import CCall
-
-data Socket = Socket# Addr
-instance CCallable Socket
-
-f :: Socket -> IO ()
-f x = _ccall_ foo x
diff --git a/ghc/tests/typecheck/should_fail/tcfail045.stderr b/ghc/tests/typecheck/should_fail/tcfail045.stderr
deleted file mode 100644 (file)
index 58d4df4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-tcfail045.hs:10:
-    Unacceptable instance type for ccall-ish class CCallable Socket
diff --git a/ghc/tests/typecheck/should_fail/tcfail046.hs b/ghc/tests/typecheck/should_fail/tcfail046.hs
deleted file mode 100644 (file)
index 6f8185c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !! function types in deriving Eq things
--- From a bug report by Dave Harrison <D.A.Harrison@newcastle.ac.uk>
-
-module ShouldFail where
-
-type   Process a = Pid -> Time -> Message a -> ( MessList a, 
-                                                 Continuation a)
-
-data   Continuation a = Do (Process a) deriving Eq
-
-
-type   ProcList a = [ (Pid, Status, Process a) ]
-data   Status     = Active | Passive | Busy Integer | Terminated
-                    deriving Eq
-
-
-data Message a = Create (Process a) | Created Pid   | Activate Pid  | 
-                Passivate Pid      | Terminate Pid | Wait Pid Time | 
-                Query Pid a        | Data Pid a    | Event         |
-                Output Pid String
-                deriving Eq
-
-type   MessList a = [ Message a ]
-
-type   Pid  = Integer
-type   Time = Integer
diff --git a/ghc/tests/typecheck/should_fail/tcfail046.stderr b/ghc/tests/typecheck/should_fail/tcfail046.stderr
deleted file mode 100644 (file)
index eb75308..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail046.hs:17:
-    No instance for `Eq (Process a)'
-    When deriving classes for `Message'
diff --git a/ghc/tests/typecheck/should_fail/tcfail047.hs b/ghc/tests/typecheck/should_fail/tcfail047.hs
deleted file mode 100644 (file)
index f3cdb19..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldFail where
-
-class A a where
- op1 :: a -> a
-
-instance A (a,(b,c)) where
- op1 a = a
diff --git a/ghc/tests/typecheck/should_fail/tcfail047.stderr b/ghc/tests/typecheck/should_fail/tcfail047.stderr
deleted file mode 100644 (file)
index 7b95bc9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail047.hs:6:
-    Illegal instance declaration for `A (a, (b, c))'
-       (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)
diff --git a/ghc/tests/typecheck/should_fail/tcfail048.hs b/ghc/tests/typecheck/should_fail/tcfail048.hs
deleted file mode 100644 (file)
index f4400e2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldFail where
-
-class (B a) => C a where
- op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_fail/tcfail048.stderr b/ghc/tests/typecheck/should_fail/tcfail048.stderr
deleted file mode 100644 (file)
index e6b021c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail048.hs:3: Type constructor or class not in scope: `B'
diff --git a/ghc/tests/typecheck/should_fail/tcfail049.hs b/ghc/tests/typecheck/should_fail/tcfail049.hs
deleted file mode 100644 (file)
index 64dee54..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f x = g x
diff --git a/ghc/tests/typecheck/should_fail/tcfail049.stderr b/ghc/tests/typecheck/should_fail/tcfail049.stderr
deleted file mode 100644 (file)
index 527106b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail049.hs:3: Variable not in scope: `g'
diff --git a/ghc/tests/typecheck/should_fail/tcfail050.hs b/ghc/tests/typecheck/should_fail/tcfail050.hs
deleted file mode 100644 (file)
index c0cee97..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f x = B x
diff --git a/ghc/tests/typecheck/should_fail/tcfail050.stderr b/ghc/tests/typecheck/should_fail/tcfail050.stderr
deleted file mode 100644 (file)
index ce157ac..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail050.hs:3: Data constructor not in scope: `B'
diff --git a/ghc/tests/typecheck/should_fail/tcfail051.hs b/ghc/tests/typecheck/should_fail/tcfail051.hs
deleted file mode 100644 (file)
index 1b8e251..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-module ShouldFail where
-
-instance B Bool where
- op1 a = a
diff --git a/ghc/tests/typecheck/should_fail/tcfail051.stderr b/ghc/tests/typecheck/should_fail/tcfail051.stderr
deleted file mode 100644 (file)
index e2f184d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail051.hs:3: Type constructor or class not in scope: `B'
-
-tcfail051.hs:4: Variable not in scope: `op1'
diff --git a/ghc/tests/typecheck/should_fail/tcfail052.hs b/ghc/tests/typecheck/should_fail/tcfail052.hs
deleted file mode 100644 (file)
index e9be21e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-data C a = B a c
diff --git a/ghc/tests/typecheck/should_fail/tcfail052.stderr b/ghc/tests/typecheck/should_fail/tcfail052.stderr
deleted file mode 100644 (file)
index 190f1b2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail052.hs:3: Type variable not in scope: `c'
diff --git a/ghc/tests/typecheck/should_fail/tcfail053.hs b/ghc/tests/typecheck/should_fail/tcfail053.hs
deleted file mode 100644 (file)
index d13e606..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module TcFail where
-
-data B = C A
diff --git a/ghc/tests/typecheck/should_fail/tcfail053.stderr b/ghc/tests/typecheck/should_fail/tcfail053.stderr
deleted file mode 100644 (file)
index 95a74b9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail053.hs:3: Type constructor or class not in scope: `A'
diff --git a/ghc/tests/typecheck/should_fail/tcfail054.hs b/ghc/tests/typecheck/should_fail/tcfail054.hs
deleted file mode 100644 (file)
index a4e724c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f (B a) = True
diff --git a/ghc/tests/typecheck/should_fail/tcfail054.stderr b/ghc/tests/typecheck/should_fail/tcfail054.stderr
deleted file mode 100644 (file)
index 10e8655..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail054.hs:3: Data constructor not in scope: `B'
diff --git a/ghc/tests/typecheck/should_fail/tcfail055.hs b/ghc/tests/typecheck/should_fail/tcfail055.hs
deleted file mode 100644 (file)
index f61c5a8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module ShouldFail where
-
-f x = (x + 1 :: Int) :: Float
diff --git a/ghc/tests/typecheck/should_fail/tcfail055.stderr b/ghc/tests/typecheck/should_fail/tcfail055.stderr
deleted file mode 100644 (file)
index 8c9ee83..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-tcfail055.hs:3:
-    Couldn't match `Int' against `Float'
-       Expected type: Int
-       Inferred type: Float
-    In an expression with a type signature: x + 1 :: Int
diff --git a/ghc/tests/typecheck/should_fail/tcfail056.hs b/ghc/tests/typecheck/should_fail/tcfail056.hs
deleted file mode 100644 (file)
index a8a1315..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-module ShouldFail where
-
-data Foo = MkFoo Bool
-
-instance Eq Foo where
-    (MkFoo x) == (MkFoo y) = x == y
-
-instance Eq Foo where
-    -- forgot to type "Ord" above
-    (MkFoo x) <= (MkFoo y) = x <= y
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail056.stderr b/ghc/tests/typecheck/should_fail/tcfail056.stderr
deleted file mode 100644 (file)
index 15b6194..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Duplicate instance declarations:
-  tcfail056.hs:5: Eq Foo
-  tcfail056.hs:8: Eq Foo
diff --git a/ghc/tests/typecheck/should_fail/tcfail057.hs b/ghc/tests/typecheck/should_fail/tcfail057.hs
deleted file mode 100644 (file)
index 9659cf0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
--- !!! inadvertently using -> instead of =>
-
-f :: (RealFrac a) -> a -> a
-f x = x
diff --git a/ghc/tests/typecheck/should_fail/tcfail057.stderr b/ghc/tests/typecheck/should_fail/tcfail057.stderr
deleted file mode 100644 (file)
index 40abefb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail057.hs:5:
-    Class `RealFrac' used as a type
-    In a type signature for `f'
diff --git a/ghc/tests/typecheck/should_fail/tcfail058.hs b/ghc/tests/typecheck/should_fail/tcfail058.hs
deleted file mode 100644 (file)
index d8315b8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-module ShouldFail where
-import Array
-
--- !!! inadvertently using => instead of ->
-
-f :: (Array a) => a -> b
-f x = x
diff --git a/ghc/tests/typecheck/should_fail/tcfail058.stderr b/ghc/tests/typecheck/should_fail/tcfail058.stderr
deleted file mode 100644 (file)
index b01081c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail058.hs:6:
-    Type constructor `Array' used as a class
-    When checking kinds in `Array a'
-    In a type signature for `f'
diff --git a/ghc/tests/typecheck/should_fail/tcfail061.hs b/ghc/tests/typecheck/should_fail/tcfail061.hs
deleted file mode 100644 (file)
index 35e502c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !! signature bugs exposed by Sigbjorn Finne
---
-module ShouldFail where
-
-type Flarp a = (b,b)
-
---More fun can be had if we change the signature slightly
-
-type Bob a = a
-
-type Flarp2 a = Bob (b,b)
diff --git a/ghc/tests/typecheck/should_fail/tcfail061.stderr b/ghc/tests/typecheck/should_fail/tcfail061.stderr
deleted file mode 100644 (file)
index faa0dca..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-tcfail061.hs:5: Type variable not in scope: `b'
-
-tcfail061.hs:5: Type variable not in scope: `b'
-
-tcfail061.hs:11: Type variable not in scope: `b'
-
-tcfail061.hs:11: Type variable not in scope: `b'
-
-Compilation had errors
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail062.hs b/ghc/tests/typecheck/should_fail/tcfail062.hs
deleted file mode 100644 (file)
index f37dc1e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
--- !!! bug report from Satnam
---
-module ShouldFail
-where
-
-type Module = (String,[Declaration])
-
-data Declaration
-  = Architecture String StructuralExpression |
-    Behaviour String Parameter Parameter BehaviouralExpression
-    deriving (Eq, Show)
-
-data Parameter = ParameterVariable String | ParameterList [Parameter]
-                 deriving (Eq, Show)
-
-nameOfModule :: Module -> String
-nameOfModule (name, _) = name
-
-data StructuralExpression 
-  = Variable String |
-    Serial StructuralExpression StructuralExpression | 
-    Par [StructuralExpression] 
-    deriving (Eq, Show)
-
-data BehaviouralExpression
-  = BehaviouralVariable String 
-    | AndExpr BehaviouralExpression BehaviouralExpression
-    | OrExpr BehaviouralExpression BehaviouralExpression
-    | NotExpr BehaviouralExpression
-    deriving (Eq, Show)
-
-
-type BehaviouralRelation
-  = (behaviouralExpression, behaviouralExpression)
----- ^ typo ----------------^ typo (but so what?)
-
-type BehaviouralRelationList = [BehaviouralRelation]
diff --git a/ghc/tests/typecheck/should_fail/tcfail062.stderr b/ghc/tests/typecheck/should_fail/tcfail062.stderr
deleted file mode 100644 (file)
index f6dc641..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail062.hs:37:
-    Illegal polymorphic type as argument: BehaviouralRelation
-    In the type synonym declaration for `BehaviouralRelationList'
diff --git a/ghc/tests/typecheck/should_fail/tcfail063.hs b/ghc/tests/typecheck/should_fail/tcfail063.hs
deleted file mode 100644 (file)
index 3be3644..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! no type variable on a context
--- !!! reported by Sigbjorn Finne
-
-moby :: Num => Int -> a -> Int
-moby x y = x+y
diff --git a/ghc/tests/typecheck/should_fail/tcfail063.stderr b/ghc/tests/typecheck/should_fail/tcfail063.stderr
deleted file mode 100644 (file)
index 6408fb8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tcfail063.hs:4: Illegal class assertion
diff --git a/ghc/tests/typecheck/should_fail/tcfail065.hs b/ghc/tests/typecheck/should_fail/tcfail065.hs
deleted file mode 100644 (file)
index 3029b19..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{-
-
-------- Forwarded Message
-
-Date:    Wed, 30 Nov 1994 16:34:18 +0100
-From:    John Hughes <rjmh@cs.chalmers.se>
-To:      augustss@cs.chalmers.se, simonpj@dcs.gla.ac.uk
-Subject: Nice little program
-
-
-Lennart, Simon,
-
-You might like to look at the fun little program below.
-
-THUMBS DOWN to hbc for compiling it (it prints [72, 101, 108, 108, 111])
-THUMBS UP to ghc for rejecting it --- but what an error message!
-nhc and gofer both reject it with the right error message.
-I haven't tried Yale Haskell.
-
-Enjoy!
-- ----------------------------
--}
-
-class HasX a where
-  setX :: x->a->a
-
-data X x = X x
-instance HasX (X x) where
-  setX x (X _) = X x
-
-changetype x = case setX x (X (error "change type!")) of X y->y
-
-main = print (changetype "Hello" :: [Int])
-
-{-
-------- End of Forwarded Message
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail065.stderr b/ghc/tests/typecheck/should_fail/tcfail065.stderr
deleted file mode 100644 (file)
index f2615e2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-tcfail065.hs:28:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `x' is unified with `x'
-    Signature type:     forall x. x -> X x1 -> X x1
-    Type to generalise: x -> X x -> X x
-    When checking the type signature for `setX'
-    In the definition for method `setX'
diff --git a/ghc/tests/typecheck/should_fail/tcfail067.hs b/ghc/tests/typecheck/should_fail/tcfail067.hs
deleted file mode 100644 (file)
index db9cb9c..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-module ShouldFail where
-
-infixr 1 `rangeOf`
-
-
-data Ord a => SubRange a = SubRange (a, a) a
-
-type IntSubRange = SubRange Int 
-
-
-subRangeValue :: SubRange a -> a
-subRangeValue (SubRange (lower, upper) value) = value
-
-subRange :: SubRange a -> (a, a)
-subRange (SubRange r value) = r
-
-newRange :: (Ord a, Show a) => (a, a) -> a -> SubRange a
-newRange r value = checkRange (SubRange r value)
-
-
-checkRange :: (Ord a, Show a) => SubRange a -> SubRange a
-checkRange (SubRange (lower, upper) value)
-  = if (value < lower) || (value > upper) then
-      error ("### sub range error. range = " ++ show lower ++ 
-              ".." ++ show upper ++ " value = " ++ show value ++ "\n")
-    else
-      SubRange (lower, upper) value
-
-
-instance Eq a => Eq (SubRange a) where
-  (==) a b = subRangeValue a == subRangeValue  b
-
-instance (Ord a) => Ord (SubRange a) where
-  (<)  = relOp (<)
-  (<=) = relOp (<=)
-  (>=) = relOp (>=)
-  (>)  = relOp (>)
-
-relOp :: Ord a => (a->a->Bool) -> SubRange a -> SubRange a -> Bool
-relOp op a b = (subRangeValue a) `op` (subRangeValue b)
-
-rangeOf :: (Ord a, Show a) => SubRange a -> SubRange a -> SubRange a
-rangeOf a b = checkRange (SubRange (subRange b) (subRangeValue a))
-
-showRange :: Show a => SubRange a -> String
-showRange (SubRange (lower, upper) value)
-  = show value ++ " :" ++ show lower ++ ".." ++ show upper
-
-showRangePair :: (Show a, Show b) => (SubRange a, SubRange b) -> String
-showRangePair (a, b)
-  = "(" ++ showRange a ++ ", " ++ showRange b ++ ")"
-
-showRangeTriple :: (Show a, Show b, Show c) =>
-                   (SubRange a, SubRange b, SubRange c) -> String
-showRangeTriple (a, b, c) 
-  = "(" ++ showRange a ++ ", " ++ showRange b ++ ", " ++ showRange c ++ ")"
-
-
-
-instance Num a => Num (SubRange a) where
-  negate = numSubRangeNegate
-  (+) = numSubRangeAdd
-  (-) = numSubRangeSubtract
-  (*) = numSubRangeMultiply
-  fromInteger a = SubRange (fromInteger a, fromInteger a) (fromInteger a)
-
-numSubRangeNegate :: (Ord a, Num a) => SubRange a -> SubRange a
-numSubRangeNegate (SubRange (lower, upper) value)
-  = checkRange (SubRange (lower, upper) (-value))
-
-numSubRangeBinOp :: Num a => (a -> a -> a) -> 
-                    SubRange a -> SubRange a -> SubRange a
-numSubRangeBinOp op a b
-  = SubRange (result, result) result
-    where
-    result = (subRangeValue a) `op` (subRangeValue b)
-
--- partain:
-numSubRangeAdd, numSubRangeSubtract, numSubRangeMultiply :: Num a => SubRange a -> SubRange a -> SubRange a
-
-numSubRangeAdd = numSubRangeBinOp (+)
-numSubRangeSubtract = numSubRangeBinOp (-)
-numSubRangeMultiply = numSubRangeBinOp (*)
-
-unsignedBits :: Int -> (Int, Int)
-unsignedBits n = (0, 2^n-1)
-
-signedBits :: Int -> (Int, Int)
-signedBits n = (-2^(n-1), 2^(n-1)-1)   
-
-
-si_n :: Int -> Int -> IntSubRange
-si_n bits value = SubRange (signedBits bits) value
-
-si8, si10, si16 :: Int -> IntSubRange
-si8  = si_n 8
-si10 = si_n 10
-si16 = si_n 16
diff --git a/ghc/tests/typecheck/should_fail/tcfail067.stderr b/ghc/tests/typecheck/should_fail/tcfail067.stderr
deleted file mode 100644 (file)
index bb15e5c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-
-tcfail067.hs:60:
-    Could not deduce `Show (SubRange a1)' from the context (Num a)
-    Probable fix:
-       Add `Show (SubRange a1)' to the instance declaration context
-       Or add an instance declaration for `Show (SubRange a1)'
-    arising from an instance declaration at tcfail067.hs:60
-
-tcfail067.hs:61:
-    Could not deduce `Ord a1'
-       from the context (Num (SubRange a),
-                         Num a,
-                         Eq (SubRange a),
-                         Show (SubRange a))
-    Probable fix:
-       Add `Ord a1' to the instance declaration context
-    arising from use of `numSubRangeNegate' at tcfail067.hs:61
-    in the definition of function `negate': numSubRangeNegate
-
-tcfail067.hs:74:
-    Could not deduce `Ord a' from the context (Num a)
-    Probable fix:
-       Add `Ord a' to the type signature(s) for {numSubRangeBinOp}
-    arising from use of `SubRange' at tcfail067.hs:74
-    in the definition of function `numSubRangeBinOp':
-       SubRange (result, result) result
diff --git a/ghc/tests/typecheck/should_fail/tcfail068.hs b/ghc/tests/typecheck/should_fail/tcfail068.hs
deleted file mode 100644 (file)
index 51e7b92..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
--- !! Make sure that state threads don't escape
--- !! (example from Neil Ashton at York)
---
-module ShouldFail where
-
-import ST
-
-type IndTree s t = STArray s (Int,Int) t
-
-itgen :: Constructed a => (Int,Int) -> a -> IndTree s a
-itgen n x = 
-       runST (
-       newSTArray ((1,1),n) x)
-
-itiap :: Constructed a => (Int,Int) -> (a->a) -> IndTree s a -> IndTree s a
-itiap i f arr =
-       runST (
-       readSTArray arr i >>= \val ->
-       writeSTArray arr i (f val) >>
-       return arr)
-
-itrap :: Constructed a => ((Int,Int),(Int,Int)) -> (a->a) -> IndTree s a -> IndTree s a
-itrap ((i,k),(j,l)) f arr = runST(itrap' i k)
-       where
-       itrap' i k = if k > l then return arr
-                    else (itrapsnd i k >>
-                       itrap' i (k+1))
-       itrapsnd i k = if i > j then return arr
-                     else (readSTArray arr (i,k) >>= \val ->
-                       writeSTArray arr (i,k) (f val) >>
-                       itrapsnd (i+1) k)
-
-itrapstate :: Constructed b => ((Int,Int),(Int,Int)) -> (a->b->(a,b)) -> ((Int,Int)->c->a) ->
-               (a->c) -> c -> IndTree s b -> (c, IndTree s b)
-itrapstate ((i,k),(j,l)) f c d s arr = runST(itrapstate' i k s)
-       where
-       itrapstate' i k s = if k > l then return (s,arr)
-                           else (itrapstatesnd i k s >>= \(s,arr) ->
-                               itrapstate' i (k+1) s)
-       itrapstatesnd i k s = if i > j then return (s,arr)
-                            else (readSTArray arr (i,k) >>= \val ->
-                              let (newstate, newval) = f (c (i,k) s) val
-                              in writeSTArray arr (i,k) newval >>
-                              itrapstatesnd (i+1) k (d newstate))
-
--- stuff from Auxiliary: copied here (partain)
-
-sap :: (a->b) -> (c,a) -> (c,b)
-sap f (x,y) = (x, f y)
-
-fap :: (a->b) -> (a,c) -> (b,c)
-fap f (x,y) = (f x, y)
-
-nonempty :: [a] -> Bool
-nonempty []    = False
-nonempty (_:_) = True
-
--- const :: a -> b -> a
--- const k x = k
-
--- id :: a -> a
--- id x = x
-
-compose :: [a->a] -> a -> a
-compose = foldr (.) id
-
-class Constructed a where
-   normal :: a -> Bool
-
-instance Constructed Bool where
-   normal True = True
-   normal False = True
-
-instance Constructed Int where
-   normal 0 = True
-   normal n = True
-
-instance (Constructed a, Constructed b) => Constructed (a,b) where
-   normal (x,y) = normal x && normal y
-
--- pair :: (Constructed a, Constructed b) => a -> b -> (a,b)
--- pair x y | normal x && normal y = (x,y)
-
-instance Constructed (Maybe a) where
-   normal Nothing = True
-   normal (Just _) = True
-
-just :: Constructed a => a -> Maybe a
-just x | normal x = Just x
diff --git a/ghc/tests/typecheck/should_fail/tcfail068.stderr b/ghc/tests/typecheck/should_fail/tcfail068.stderr
deleted file mode 100644 (file)
index 0837ecc..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-
-tcfail068.hs:12:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `s' escapes
-       It is reachable from the type variable(s) `a'
-         which is free in the signature
-    Signature type:     forall s. ST s a
-    Type to generalise: ST s1 (IndTree s1 a1)
-    When checking an expression type signature
-    In the first argument of `runST', namely
-       `(newSTArray ((1, 1), n) x)'
-    in the definition of function `itgen':
-       runST (newSTArray ((1, 1), n) x)
-
-tcfail068.hs:17:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `s' escapes
-       It unifies with `s1', which is mentioned in the environment
-       The following variables in the environment mention `s1'
-         arr :: IndTree s1 a
-    Signature type:     forall s. ST s a1
-    Type to generalise: ST s1 (IndTree s1 a)
-    When checking an expression type signature
-    In the first argument of `runST', namely
-       `((readSTArray arr i)
-         >>= (\ val -> (writeSTArray arr i (f val)) >> (return arr)))'
-    in the definition of function `itiap':
-       runST ((readSTArray arr i)
-              >>= (\ val -> (writeSTArray arr i (f val)) >> (return arr)))
-
-tcfail068.hs:23:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `s' escapes
-       It unifies with `s1', which is mentioned in the environment
-       The following variables in the environment mention `s1'
-         itrap' :: Int -> Int -> ST s1 (IndTree s1 a)
-         itrapsnd :: Int -> Int -> ST s1 (IndTree s1 a)
-         arr :: IndTree s1 a
-    Signature type:     forall s. ST s a1
-    Type to generalise: ST s1 (IndTree s1 a)
-    When checking an expression type signature
-    In the first argument of `runST', namely `(itrap' i k)'
-    in the definition of function `itrap': runST (itrap' i k)
-
-tcfail068.hs:35:
-    Inferred type is less polymorphic than expected
-       Quantified type variable `s' escapes
-       It unifies with `s1', which is mentioned in the environment
-       The following variables in the environment mention `s1'
-         itrapstate' :: Int -> Int -> c -> ST s1 (c, IndTree s1 b)
-         itrapstatesnd :: Int -> Int -> c -> ST s1 (c, IndTree s1 b)
-         arr :: IndTree s1 b
-    Signature type:     forall s. ST s a
-    Type to generalise: ST s1 (c, IndTree s1 b)
-    When checking an expression type signature
-    In the first argument of `runST', namely `(itrapstate' i k s)'
-    in the definition of function `itrapstate':
-       runST (itrapstate' i k s)
diff --git a/ghc/tests/typecheck/should_fail/tcfail069.hs b/ghc/tests/typecheck/should_fail/tcfail069.hs
deleted file mode 100644 (file)
index 63684fa..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{- 
-From: Marc van Dongen <dongen@cs.ucc.ie>
-Date: Wed, 9 Apr 1997 14:06:39 +0100 (BST)
-
-I just wanted to report that the erroneous and tiny
-program added below can not be compiled within 6MB of
-heap (Admitted it can be compiled with a bigger heap).
-It was part of a bigger program that could not be
-compiled within 20MB of heap.
-
-[GHC 2.03 and earlier.]  Turned out to be a bug in the
-error recovery mechanism.
-
--}
-
-module ShouldFail where
-
-too_much :: [Int] -> [(Int,Int)] -> [(Int,[Int])] -> Bool
-too_much ds ((k,m):q1) s0
-  = case (list1,list2) of
-      []  -> error "foo" -- too_much ds q2m  s2m
-  where list1 = ds
-       list2 = ds
-       {-
-       list1 = [k' | k' <- ds, k == k']
-        list2 = [k' | k' <- ds, m == k']
-        s1   = aas s0 k
-        raM  = []
-        raKM = listUnion (\a b -> a) [] []
-        s1k  = s1
-        q1k  = raM
-        s2k  = s1
-        q2k  = raM
-        s2m  = s1
-        q2m  = raM
-        s2km = foldr (flip aas) s1 raKM
-        q2km = raKM
-       -}
-
-listUnion :: (v -> v -> Bool) -> [v] -> [v] -> [v]
-listUnion _  _ _
-  = []
-
-aas :: (a,b) -> a -> (a,b)
-aas s _
-  = s
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail069.stderr b/ghc/tests/typecheck/should_fail/tcfail069.stderr
deleted file mode 100644 (file)
index 103cffd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail069.hs:20:
-    Couldn't match `[t]' against `(t1, t2)'
-       Expected type: [t]
-       Inferred type: (t1, t2)
-    In the scrutinee of a case expression: (list1, list2)
-    In the case expression: case (list1, list2) of [] -> error "foo"
diff --git a/ghc/tests/typecheck/should_fail/tcfail070.hs b/ghc/tests/typecheck/should_fail/tcfail070.hs
deleted file mode 100644 (file)
index 6cd2a28..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{- 
-From: Wolfgang Drotschmann <drotschm@athene.informatik.uni-bonn.de>
-Resent-Date:  Thu, 15 May 1997 17:23:09 +0100
-
-I'm still using the old ghc-2.01. In one program I ran into a problem
-I couldn't fix. But I played around with it, I found a small little
-script which reproduces it very well:
-
-panic! (the `impossible' happened):
-       tlist
--}
-
-module TcFail where
-
-type State = ([Int] Bool)
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail070.stderr b/ghc/tests/typecheck/should_fail/tcfail070.stderr
deleted file mode 100644 (file)
index 9682b5f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-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'
diff --git a/ghc/tests/typecheck/should_fail/tcfail071.hs b/ghc/tests/typecheck/should_fail/tcfail071.hs
deleted file mode 100644 (file)
index cadf1b5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Mis-matched contexts in a mutually recursive group
-
-module ShouldFail where
-
-f :: (Ord c) => c -> c
-f c = g c
-
-g :: c -> c
-g c = c
-  where p = foldr (f c) [] []
diff --git a/ghc/tests/typecheck/should_fail/tcfail071.stderr b/ghc/tests/typecheck/should_fail/tcfail071.stderr
deleted file mode 100644 (file)
index af4ae90..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-tcfail071.hs:5:
-    Mismatched contexts
-    When matching the contexts of the signatures for `g' and `f'
-       (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)'
diff --git a/ghc/tests/typecheck/should_fail/tcfail072.hs b/ghc/tests/typecheck/should_fail/tcfail072.hs
deleted file mode 100644 (file)
index 501976e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{- This program crashed GHC 2.03
-
-   From: Marc van Dongen <dongen@cs.ucc.ie>
-   Date: Sat, 31 May 1997 14:35:40 +0100 (BST)
-
-  zonkIdOcc: g_aoQ
-
-  panic! (the `impossible' happened):
-          lookupBindC:no info!
-  for: g_aoQ
-  (probably: data dependencies broken by an optimisation pass)
-  static binds for:
-  Tmp.$d1{-rmM,x-}
-  local binds for:
--}
-
-module ShouldFail where
-
-data AB p q = A
-            | B p q
-
-g :: (Ord p,Ord q) => (AB p q) -> Bool
-g (B _ _) = g A
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail072.stderr b/ghc/tests/typecheck/should_fail/tcfail072.stderr
deleted file mode 100644 (file)
index 5ef2e7f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-tcfail072.hs:23:
-    Ambiguous type variable(s) `p' in the constraint `Ord p'
-    arising from use of `g' at tcfail072.hs:23
-    in the definition of function `g': g A
-
-tcfail072.hs:23:
-    Ambiguous type variable(s) `q' in the constraint `Ord q'
-    arising from use of `g' at tcfail072.hs:23
-    in the definition of function `g': g A
diff --git a/ghc/tests/typecheck/should_fail/tcfail073.hs b/ghc/tests/typecheck/should_fail/tcfail073.hs
deleted file mode 100644 (file)
index 4a26910..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
--- what error do you get if you redefined Prelude instances?
-
-module ShouldFail where
-
-f x@(a,b) y@(c,d) = x == y
-
-instance Eq (a,b) where
-    (m,n) == (o,p) = m == o
diff --git a/ghc/tests/typecheck/should_fail/tcfail073.stderr b/ghc/tests/typecheck/should_fail/tcfail073.stderr
deleted file mode 100644 (file)
index d51d64e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-Duplicate or overlapping instance declarations:
-  tcfail073.hs:7: {Eq (a, b)}
-  /home/simonmar/builds/i386-unknown-linux/ghc/compiler/../lib/std/PrelTup.hi:66: {Eq (a,
-                                                                                      b)}
-
-tcfail073.hs:8:
-    Could not deduce `Eq a' from the context (Eq (a, b))
-    Probable fix:
-       Add `Eq a' to the instance declaration context
-    arising from use of `==' at tcfail073.hs:8
-    In the right-hand side of an equation for `==': m == o
diff --git a/ghc/tests/typecheck/should_fail/tcfail075.hs b/ghc/tests/typecheck/should_fail/tcfail075.hs
deleted file mode 100644 (file)
index 98447d4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Test top-level unboxed types
-
-module ShouldFail where
-
-import PrelGHC
-
-x = 1#
-
-y :: Int#
-y = x +# 1#
-
-main =  let 
-         z = x -# y
-       in
-       if z ># 3# then putStrLn "Yes"
-                  else putStrLn "No"
diff --git a/ghc/tests/typecheck/should_fail/tcfail075.stderr b/ghc/tests/typecheck/should_fail/tcfail075.stderr
deleted file mode 100644 (file)
index 37519c9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-Top-level bindings for unlifted types aren't allowed: x = 1#
-
-tcfail075.hs:12:
-    Couldn't match `#' against `*'
-    When matching types `Int#' and `t'
-       Expected type: Int#
-       Inferred type: t
-    In the first argument of `(+#)', namely `x'
-
-tcfail075.hs:15:
-    Couldn't match `#' against `*'
-    When matching types `Int#' and `t'
-       Expected type: Int#
-       Inferred type: t
-    In the first argument of `(-#)', namely `x'
-
-tcfail075.hs:17:
-    Couldn't match `#' against `*'
-    When matching types `Int#' and `t'
-       Expected type: Int#
-       Inferred type: t
-    In the first argument of `(>#)', namely `z'
diff --git a/ghc/tests/typecheck/should_fail/tcfail076.hs b/ghc/tests/typecheck/should_fail/tcfail076.hs
deleted file mode 100644 (file)
index 7d8f136..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-{- 
-       From: Ralf Hinze <ralf@uran.informatik.uni-bonn.de>
-       Date: Fri, 15 Aug 1997 15:20:51 +0200 (MET DST)
-
-I *suppose* that there is a bug in GHC's type checker. The following
-program, which I think is ill-typed, passes silently the type checker.
-Needless to say that it uses some of GHC's arcane type extensions.
--}
-
-module ShouldFail where
-
-data ContT m a         =  KContT (forall res. (a -> m res) -> m res)
-unKContT (KContT x)    =  x
-
-callcc                 :: ((a -> ContT m b) -> ContT m a) -> ContT m a
-callcc f               =  KContT (\cont -> unKContT (f (\a -> KContT (\cont' -> cont a))) cont)
-
-{-
-`ContT' is a continuation monad transformer. Note that we locally
-qualify over the result type `res' (sometimes called answer or
-output).  IMHO this make it impossible to define control constructs
-like `callcc'. Let's have a closer look: the code of `callcc' contains
-the subexpression `KContT (\cont' -> cont a)'. To be well-typed the
-argument of `KContT' must have the type `(All res) => (a -> m res) -> m
-res'. Quantification is not possible, however, since the type variable
-in `cont's type cannot be forall'd, since it also appears at an outer
-level.  Right? Or wrong?
--}
diff --git a/ghc/tests/typecheck/should_fail/tcfail076.stderr b/ghc/tests/typecheck/should_fail/tcfail076.stderr
deleted file mode 100644 (file)
index d913f20..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-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
-    Signature type:     forall res. (a1 -> m1 res) -> m1 res
-    Type to generalise: (b -> m res1) -> m res1
-    When checking an expression type signature
-    In the first argument of `KContT', namely `(\ cont' -> cont a)'
-    in a lambda abstraction: KContT (\ cont' -> cont a)
diff --git a/ghc/tests/typecheck/should_fail/tcfail077.hs b/ghc/tests/typecheck/should_fail/tcfail077.hs
deleted file mode 100644 (file)
index 54735b9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-module ShouldFail where
-
--- !!! declaring a default method in a class that doesn't have that method.
-
-class Foo a where
-  op :: a -> a
-
-  op2 x = x    -- Bogus declaration
diff --git a/ghc/tests/typecheck/should_fail/tcfail077.stderr b/ghc/tests/typecheck/should_fail/tcfail077.stderr
deleted file mode 100644 (file)
index 9fa247b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail077.hs:8: Variable not in scope: `op2'
diff --git a/ghc/tests/typecheck/should_fail/tcfail078.hs b/ghc/tests/typecheck/should_fail/tcfail078.hs
deleted file mode 100644 (file)
index 1054f6d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module ShouldFail where
-
--- !!! Using a type constructor as a class name
-
-f :: Integer i => i 
-f =               0    
diff --git a/ghc/tests/typecheck/should_fail/tcfail078.stderr b/ghc/tests/typecheck/should_fail/tcfail078.stderr
deleted file mode 100644 (file)
index ff654ac..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail078.hs:5:
-    Type constructor `Integer' used as a class
-    When checking kinds in `Integer i'
-    In a type signature for `f'
diff --git a/ghc/tests/typecheck/should_fail/tcfail079.hs b/ghc/tests/typecheck/should_fail/tcfail079.hs
deleted file mode 100644 (file)
index 33aeaa3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldFail where
-
--- !!! unboxed field in newtype declaration
-
-import GlaExts ( Int# )
-
-newtype Unboxed = Unboxed Int#
-
-f = [ Unboxed 1#, Unboxed 2# ] -- shouldn't be allowed!
diff --git a/ghc/tests/typecheck/should_fail/tcfail079.stderr b/ghc/tests/typecheck/should_fail/tcfail079.stderr
deleted file mode 100644 (file)
index f269113..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail079.hs:7:
-    failed to load interface for `GlaExts':
-       Could not find interface file for `GlaExts'
diff --git a/ghc/tests/typecheck/should_fail/tcfail080.hs b/ghc/tests/typecheck/should_fail/tcfail080.hs
deleted file mode 100644 (file)
index 4813068..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! Multi-param type classes test: ambiguity bug
-module ShouldFail where
-
-class Collection c a where
-    empty :: c a
-    add :: a -> c a -> c a
-    isempty :: c a -> Bool
-
-singleton x = add x empty
-
-q x = isempty (singleton x)
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail080.stderr b/ghc/tests/typecheck/should_fail/tcfail080.stderr
deleted file mode 100644 (file)
index c5c6f22..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail080.hs:11:
-    Ambiguous type variable(s) `c' in the constraint `Collection c a'
-    arising from use of `singleton' at tcfail080.hs:11
-    In the first argument of `isempty', namely `(singleton x)'
-    In the right-hand side of an equation for `q':
-       isempty (singleton x)
diff --git a/ghc/tests/typecheck/should_fail/tcfail082.hs b/ghc/tests/typecheck/should_fail/tcfail082.hs
deleted file mode 100644 (file)
index 2d4307a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-module Main(main) where
-import Data82
-import Inst82_1
-import Inst82_2
-
-data Baz = Baz deriving Read
-
-main     = print ((read "FooData")::FooData)
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail082.stderr b/ghc/tests/typecheck/should_fail/tcfail082.stderr
deleted file mode 100644 (file)
index e9f9baa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-
-Duplicate or overlapping instance declarations:
-  ./Inst82_1.hi:8: {Read FooData}
-  ./Inst82_2.hi:8: {Read FooData}
-
-tcfail082.hs:8:
-    No instance for `Show FooData'
-    arising from use of `print' at tcfail082.hs:8
-    In the right-hand side of an equation for `main':
-       print ((read "FooData") :: FooData)
diff --git a/ghc/tests/typecheck/should_fail/tcfail083.hs b/ghc/tests/typecheck/should_fail/tcfail083.hs
deleted file mode 100644 (file)
index a79be4e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-module ShouldFail where
-
-data Bar = Bar { flag :: Bool } deriving( Show )
-
-data State = State { bar :: Bar, baz :: Float }
-
-display :: State -> IO ()
-display (State{ bar = Bar { flag = f, baz = b }}) = print (f,b)
-
--- Typo! The line above should better be:
--- display (State{ bar = Bar { flag = f }, baz = b }) = print (f,b)
-
--- GHC 4.04 (as released) crashed with
---     panic! (the `impossible' happened): tcLookupValue: b{-r4n-}
--- Bug reported by Sven Panne
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail083.stderr b/ghc/tests/typecheck/should_fail/tcfail083.stderr
deleted file mode 100644 (file)
index 275ba74..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail083.hs:8:
-    Constructor `Bar' does not have field `baz'
-    In the pattern: Bar {flag = f, baz = b}
-    In the pattern: State {bar = Bar {flag = f, baz = b}}
-    In an equation for function `display':
-       display (State {bar = Bar {flag = f, baz = b}}) = print (f, b)
diff --git a/ghc/tests/typecheck/should_fail/tcfail084.hs b/ghc/tests/typecheck/should_fail/tcfail084.hs
deleted file mode 100644 (file)
index 22b5456..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! Check that using a label belonging to another constructor
--- !!! is flagged as being incorrect.
-module ShouldFail where
-
-data F
- = F { x :: Int }
- | G { y :: Int }
-
-z :: F
-z = F { y = 2 }
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail084.stderr b/ghc/tests/typecheck/should_fail/tcfail084.stderr
deleted file mode 100644 (file)
index 46dba23..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail084.hs:10:
-    Constructor `F' does not have field `y'
-    In the record construction: F {y = 2}
-    in the definition of function `z': F {y = 2}
diff --git a/ghc/tests/typecheck/should_fail/tcfail085.hs b/ghc/tests/typecheck/should_fail/tcfail085.hs
deleted file mode 100644 (file)
index 81036b9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Check that not supplying bindings for strict fields
--- !!! is flagged as being incorrect.
-module ShouldFail where
-
-data F
- = F { x :: Int, y :: !Int }
-
-z :: F
-z = F { x = 2 }
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail085.stderr b/ghc/tests/typecheck/should_fail/tcfail085.stderr
deleted file mode 100644 (file)
index 3d6fc01..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail085.hs:9:
-    Constructor `F' does not have the required strict field `y'
-    In the record construction: F {x = 2}
-    in the definition of function `z': F {x = 2}
diff --git a/ghc/tests/typecheck/should_fail/tcfail086.hs b/ghc/tests/typecheck/should_fail/tcfail086.hs
deleted file mode 100644 (file)
index 2457996..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Check that we can't derive instances of existential types
-module ShouldFail where
-
-data Ex = forall a. Ex [a] deriving( Eq )
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail086.stderr b/ghc/tests/typecheck/should_fail/tcfail086.stderr
deleted file mode 100644 (file)
index 1a477ad..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Can't derive any instances for type `Ex'
-because it has existentially-quantified constructor(s)
diff --git a/ghc/tests/typecheck/should_fail/tcfail087.hs b/ghc/tests/typecheck/should_fail/tcfail087.hs
deleted file mode 100644 (file)
index c81f155..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Check that unboxed tuples can't be function arguments
-module ShouldFail where
-
-data Ex = Ex (# Int,Int #)
-
-f :: (# Int,Int #) -> Int
-f x = error "urk"
-
-g (# x,y #) = x
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail087.stderr b/ghc/tests/typecheck/should_fail/tcfail087.stderr
deleted file mode 100644 (file)
index d4270ef..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail087.hs:8:
-    Illegal unboxed tuple type as argument: (# Int, Int #)
-    In a type signature for `f'
diff --git a/ghc/tests/typecheck/should_fail/tcfail088.hs b/ghc/tests/typecheck/should_fail/tcfail088.hs
deleted file mode 100644 (file)
index 00991a3..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Check that forall types can't be arguments
-module ShouldFail where
-
-
-data T s a = MkT s a
-instance Ord a => Ord (forall s. T s a) 
--- A for-all should not appear as an argument to Ord
-
-
-
-g :: T s (forall b.b)
-g = error "urk"
diff --git a/ghc/tests/typecheck/should_fail/tcfail088.stderr b/ghc/tests/typecheck/should_fail/tcfail088.stderr
deleted file mode 100644 (file)
index a0e880c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-tcfail088.hs:9:
-    Illegal polymorphic type as argument: forall s. T s a
-    When checking kinds in `Ord (forall s. T s a)'
-
-tcfail088.hs:14:
-    Illegal polymorphic type as argument: forall b. b
-    When checking kinds in `T s (forall b. b)'
-    In a type signature for `g'
diff --git a/ghc/tests/typecheck/should_fail/tcfail089.hs b/ghc/tests/typecheck/should_fail/tcfail089.hs
deleted file mode 100644 (file)
index 78e2825..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Check non-constructors in patterns fail tidily
--- !!! The -O made ghc 4.08 go into a loop!
--- Unfortunately the -O has to go in the Makefile
-
-module ShouldFail where
-
-compute :: String -> String
-compute ("hd" ++ _) = "_"
diff --git a/ghc/tests/typecheck/should_fail/tcfail089.stderr b/ghc/tests/typecheck/should_fail/tcfail089.stderr
deleted file mode 100644 (file)
index 296dc16..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail089.hs:10:
-    `++' is not a data constructor
-    In the pattern: "hd" ++ _
-    In an equation for function `compute': compute ("hd" ++ _) = "_"
diff --git a/ghc/tests/typecheck/should_fail/tcfail090.hs b/ghc/tests/typecheck/should_fail/tcfail090.hs
deleted file mode 100644 (file)
index 3d8fc12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldFail where
-
-import PrelGHC
-
-die :: Int -> ByteArray#
-die _ = undefined
diff --git a/ghc/tests/typecheck/should_fail/tcfail090.stderr b/ghc/tests/typecheck/should_fail/tcfail090.stderr
deleted file mode 100644 (file)
index 45984b1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-tcfail090.hs:8:
-    Couldn't match `#' against `*'
-    When matching types `ByteArray#' and `a'
-       Expected type: ByteArray#
-       Inferred type: a
-    in the definition of function `die': undefined
diff --git a/ghc/tests/typecheck/should_fail/tcfail091.hs b/ghc/tests/typecheck/should_fail/tcfail091.hs
deleted file mode 100644 (file)
index 67a45a5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Illegal superclass constraint
--- These examples actually crashed GHC 4.08.2
-
-module ShouldFail where
-
-class (?imp :: Int) => C t where
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail091.stderr b/ghc/tests/typecheck/should_fail/tcfail091.stderr
deleted file mode 100644 (file)
index 7913b29..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-tcfail091.hs:8:
-    Illegal superclass constraint `?imp :: Int' in declaration for class `C'
-    In the class declaration for `C'
diff --git a/ghc/tests/typecheck/should_fail/tcfail092.hs b/ghc/tests/typecheck/should_fail/tcfail092.hs
deleted file mode 100644 (file)
index be3984c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! Illegal conflicting parallel bindings
-
-module ShouldFail where
-
-xys = [ () | let a = 13 | let a = 17 ]
diff --git a/ghc/tests/typecheck/should_fail/tcfail092.stderr b/ghc/tests/typecheck/should_fail/tcfail092.stderr
deleted file mode 100644 (file)
index 4abfd2d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-tcfail092.hs:5: duplicate binding in parallel list comprehension
diff --git a/ghc/tests/typecheck/should_fail/tcfail093.hs b/ghc/tests/typecheck/should_fail/tcfail093.hs
deleted file mode 100644 (file)
index 74ee993..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
-module ShouldFail where
-
--- A stripped down functional-dependency 
--- example that causes GHC 4.08.1 to crash with:
--- "basicTypes/Var.lhs:194: Non-exhaustive patterns in function readMutTyVar"
--- Reported by Thomas Hallgren Nov 00
-
-
-primDup :: Int -> IO Int
-primDup = undefined
-
-dup () = call primDup
-
---     call :: Call c h => c -> h
---
---     call primDup :: {Call (Int -> IO Int) h} => h  with  
---  Using the instance decl gives
---     call primDup :: {Call (IO Int) h'} => Int -> h'
---  The functional dependency means that h must be constant
---  Hence program is rejected because it can't find an instance 
---  for {Call (IO Int) h'}
-
-class Call    c h | c -> h where
-    call  :: c -> h
-
-instance Call c h => Call (Int->c) (Int->h) where 
-    call f = call . f
-
-
diff --git a/ghc/tests/typecheck/should_fail/tcfail093.stderr b/ghc/tests/typecheck/should_fail/tcfail093.stderr
deleted file mode 100644 (file)
index a2a07fd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-tcfail093.hs:14:
-    No instance for `Call (IO Int) h'
-    arising from use of `call' at tcfail093.hs:14
-    In the definition of `dup': call primDup
diff --git a/ghc/tests/typecheck/should_run/Makefile b/ghc/tests/typecheck/should_run/Makefile
deleted file mode 100644 (file)
index 2e11fb0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-TOP = ../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/should_run.mk
-
-SRC_HC_OPTS += -dcore-lint
-
-tcrun003_HC_OPTS += -fglasgow-exts
-tcrun004_HC_OPTS += -fglasgow-exts
-
-include $(TOP)/mk/target.mk
diff --git a/ghc/tests/typecheck/should_run/tcrun001.hs b/ghc/tests/typecheck/should_run/tcrun001.hs
deleted file mode 100644 (file)
index 209ca3f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !! Test for (->) instances
-
-module Main where
-
-class Flob k where
-  twice :: k a a  -> k a a
-
-instance Flob (->) where
-  twice f = f . f
-
-inc :: Int -> Int
-inc x = x+1
-
-main = print (twice inc 2)
-
-
diff --git a/ghc/tests/typecheck/should_run/tcrun001.stdout b/ghc/tests/typecheck/should_run/tcrun001.stdout
deleted file mode 100644 (file)
index b8626c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4
diff --git a/ghc/tests/typecheck/should_run/tcrun002.hs b/ghc/tests/typecheck/should_run/tcrun002.hs
deleted file mode 100644 (file)
index 348ca22..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! space leak from overloading !!!
-module Main where
-
--- This program develops a space leak if sfoldl isn't compiled with some
--- care.  See comment about polymorphic recursion in TcMonoBinds.lhs
-
-import System(getArgs)
-import PrelIOBase
-
-sfoldl :: (a -> Int -> a) -> a -> [Int] -> a
-sfoldl f z [] = z
-sfoldl f z (x:xs) = _scc_ "sfoldl1" (sfoldl f fzx (fzx `seq` xs))
-                  where fzx = _scc_ "fzx" (f z x)
-
-
-main = IO (\s -> case print (sfoldl (+) (0::Int) [1..200000]) of { IO a -> a s })
diff --git a/ghc/tests/typecheck/should_run/tcrun002.stdout b/ghc/tests/typecheck/should_run/tcrun002.stdout
deleted file mode 100644 (file)
index 928909f..0000000
+++ /dev/null
@@ -1 +0,0 @@
--1474736480
diff --git a/ghc/tests/typecheck/should_run/tcrun003.hs b/ghc/tests/typecheck/should_run/tcrun003.hs
deleted file mode 100644 (file)
index fae88c7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! One method class from Sergey Mechveliani 
---     showed up problematic newtype dict rep.
-module Main where
-import Ratio 
-
-class MBConvertible a b  where  cm :: a -> b -> Maybe b
-
-c :: MBConvertible a b => a -> b -> b
-c                         a    b =  case  cm a b  
-                                    of 
-                                      Just b' -> b'
-                                      _       -> error "c a b  failed"
-
-
-instance MBConvertible Int Int  where  cm a _ = Just a
-
-instance (MBConvertible a b,Integral b) => MBConvertible a (Ratio b)
-  where
-  cm a f =  case  cm a (numerator f)  of  Just a' -> Just (a'%1)
-                                          _       -> Nothing 
-  
-main =  let  f  = 1%1 :: Ratio Int
-             n2 = 2::Int
-             g  = (c n2 f) + f
-        in
-             putStr (shows g "\n")
diff --git a/ghc/tests/typecheck/should_run/tcrun003.stdout b/ghc/tests/typecheck/should_run/tcrun003.stdout
deleted file mode 100644 (file)
index 14896f2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3 % 1
diff --git a/ghc/tests/typecheck/should_run/tcrun004.hs b/ghc/tests/typecheck/should_run/tcrun004.hs
deleted file mode 100644 (file)
index 3511cdd..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
--- !!! Tests existential data types
---     Originally from Kevin Glynn
-module Main(main) where
-
-data Coordinate3D = Coord3D {cx, cy, cz::Double} 
-                    deriving (Eq, Show)
-
--- We Represent a line by two coordinates which it passes through.
-data Line = MkLine Coordinate3D Coordinate3D 
-
-
-class PictureObject pot where
-
-      -- Returns ordered (rel to 0 0 0) of points where the object
-      -- intersects the given line. 
-      intersectLineObject :: pot -> Line -> [Coordinate3D]
-
-      getPictureName :: pot -> String
-
-data Sphere = 
-   Sphere Coordinate3D                 -- Centre
-          Double                       -- Radius
-         Double                        -- ambient coeff
-         Double                        -- diffuse coeff
-         Double                        -- specular coeff
-         Double                        -- phong specular exponent
-
-intersectLineSphere :: Sphere -> Line -> [Coordinate3D]
-intersectLineSphere sp line = []
-
-instance PictureObject Sphere where
-        intersectLineObject = intersectLineSphere
-        getPictureName _ = "Sphere"
-
-data Cube = 
-   Cube Coordinate3D           -- Origin corner 
-        Coordinate3D           -- Opposite corner
-       Double                  -- ambient coeff
-       Double                  -- diffuse coeff
-       Double                  -- specular coeff
-       Double                  -- phong specular exponent
-   deriving (Eq, Show)
-
-intersectLineCube :: Cube -> Line -> [Coordinate3D]
-intersectLineCube cube line = []
-
-instance PictureObject Cube where
-        intersectLineObject = intersectLineCube
-        getPictureName _ = "Cube"
-
-
-data GenPic = forall pot. (PictureObject pot) => MkGenPic pot
-
-sphere :: Sphere
-sphere = Sphere (Coord3D 1 1 1) 1 1 1 1 1
-
-cube :: Cube
-cube = Cube (Coord3D 1 1 1) (Coord3D 2 2 2) 1 1 1 1
-
-obj_list:: [GenPic] 
-obj_list = [MkGenPic sphere, MkGenPic cube]
-
-putName :: PictureObject pot => pot -> IO ()
-putName x = putStr $ getPictureName x
-
-
-main :: IO ()
-main = do { sequence_ $ map put_it obj_list }
-     where
-       put_it (MkGenPic s) = putStrLn (getPictureName s)
-
diff --git a/ghc/tests/typecheck/should_run/tcrun004.stdout b/ghc/tests/typecheck/should_run/tcrun004.stdout
deleted file mode 100644 (file)
index f0842b6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Sphere
-Cube
diff --git a/ghc/tests/typecheck/should_run/tcrun005.hs b/ghc/tests/typecheck/should_run/tcrun005.hs
deleted file mode 100644 (file)
index 2c31572..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! Dfun naming bug
-
-module Main where
-
-
-  data TT  = TT
-  data TTT = TTT
-
-  class CC  a where
-       op_cc :: a -> a
-       
-  class CCT a where
-       op_cct :: a -> a
-
-  -- These two instances should get different dfun names!
-  -- In GHC 4.04 they both got $fCCTTT
-
-  instance CC TTT where
-       op_cc = id
-
-  instance CCT TT where
-       op_cct = id
-
-  main = case op_cc TTT of
-          TTT -> print "ok"
diff --git a/ghc/tests/typecheck/should_run/tcrun005.stdout b/ghc/tests/typecheck/should_run/tcrun005.stdout
deleted file mode 100644 (file)
index 52c33a5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"ok"
diff --git a/ghc/tests/typecheck/should_run/tcrun006.hs b/ghc/tests/typecheck/should_run/tcrun006.hs
deleted file mode 100644 (file)
index c55ef88..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- !!! Selectors for data and newtypes with contexts
-
--- This program, reported in Aug'00 by Jose Emilio Labra Gayo
--- gave rise to a Lint error because the selector 'newout' below
--- was given the type
---     Eq f => NewT f -> f
--- but lacked a dictionary argument in its body.
-
-module Main where
-
-newtype (Eq f) => NewT  f = NewIn  { newout  :: f } 
-data    (Eq f) => DataT f = DataIn { dataout :: f } 
-
-main = print (newout (NewIn "ok new") ++ dataout (DataIn " ok data"))
-
diff --git a/ghc/tests/typecheck/should_run/tcrun006.stdout b/ghc/tests/typecheck/should_run/tcrun006.stdout
deleted file mode 100644 (file)
index e96d077..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"ok new ok data"
diff --git a/ghc/tests/typecheck/should_run/tcrun007.hs b/ghc/tests/typecheck/should_run/tcrun007.hs
deleted file mode 100644 (file)
index d575afd..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# OPTIONS -fglasgow-exts -fgenerics #-}
-
--- !!! Test generics
-module Main where
-
-import PrelBase                -- In a real program it would be 'import Generics'
-                       -- but Generics is in package lang, so importing
-                       -- PrelBase reduces dependencies
-
-class Bin a where
-  toBin   :: a -> [Int]
-  fromBin :: [Int] -> (a, [Int])
-
-  toBin {| Unit |}    Unit     = []
-  toBin {| a :+: b |} (Inl x)   = 0 : toBin x
-  toBin {| a :+: b |} (Inr y)   = 1 : toBin y
-  toBin {| a :*: b |} (x :*: y) = toBin x ++ toBin y
-
-
-  fromBin {| Unit |}    bs      = (Unit, bs)
-  fromBin {| a :+: b |} (0:bs)  = (Inl x, bs') where (x,bs') = fromBin bs
-  fromBin {| a :+: b |} (1:bs)  = (Inr y, bs') where (y,bs') = fromBin bs
-  fromBin {| a :*: b |} bs     = (x :*: y, bs'') where (x,bs' ) = fromBin bs
-                                                       (y,bs'') = fromBin bs'
-
-
-class Tag a where
-  nCons :: a -> Int
-  nCons {| Unit |}    _ = 1
-  nCons {| a :*: b |} _ = 1
-  nCons {| a :+: b |} _ = nCons (bot::a) + nCons (bot::b)
-
-  tag :: a -> Int
-  tag {| Unit |}    _      = 1
-  tag {| a :*: b |} _      = 1   
-  tag {| a :+: b |} (Inl x) = tag x
-  tag {| a :+: b |} (Inr y) = nCons (bot::a) + tag y
-  
-bot = bot
-
-instance (Bin a, Bin b) => Bin (a,b)
-instance Bin a => Bin [a]
-instance Bin a => Bin (T a)
-
-instance Bin Int where
-  toBin x = [x]
-  fromBin (x:xs) = (x,xs)
-
-data T a = MkT a (T a) (T a) | Nil deriving Show
-
-instance Tag Colour 
-data Colour = Red | Blue | Green | Purple | White
-
-t :: T Int
-t = MkT 3 (MkT 6 Nil Nil) Nil
-
-main = print (toBin t) >>
-       print ((fromBin (toBin t))::(T Int,[Int])) >>
-       print (tag Blue) >>
-       print (tag White) >>
-       print (nCons Red)
-
diff --git a/ghc/tests/typecheck/should_run/tcrun007.stdout b/ghc/tests/typecheck/should_run/tcrun007.stdout
deleted file mode 100644 (file)
index 3b451bf..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[0,3,0,6,1,1,1]
-(MkT 3 (MkT 6 Nil Nil) Nil,[])
-2
-5
-5
diff --git a/ghc/tests/typecheck/should_run/tcrun008.hs b/ghc/tests/typecheck/should_run/tcrun008.hs
deleted file mode 100644 (file)
index 2f4061a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Check that record selectors for polymorphic fields work right
-
-module Main where
-
-import IO
-
-class Foo a where
-  bar :: a -> [a]
-
-instance Foo Int where
-  bar x = replicate x x
-
-instance Foo Bool where
-  bar x = [x, not x]
-
-data Record = R {
-     blub :: Foo a => a -> [a]
-    }
-
-main = do { let r = R {blub = bar}
-         ; print (blub r (3::Int)) 
-         ; print (blub r True)
-         }
-
-
-
diff --git a/ghc/tests/typecheck/should_run/tcrun008.stdout b/ghc/tests/typecheck/should_run/tcrun008.stdout
deleted file mode 100644 (file)
index f494982..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[3,3,3]
-[True,False]
diff --git a/ghc/tests/typecheck/should_run/tcrun009.hs b/ghc/tests/typecheck/should_run/tcrun009.hs
deleted file mode 100644 (file)
index 328614f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
-
-module Main where
-
-class Foo a b | a -> b where
-    foo :: a -> b
-
-instance Foo [a] (Maybe a) where
-    foo []    = Nothing
-    foo (x:_) = Just x
-
-instance Foo (Maybe a) [a] where
-    foo Nothing  = []
-    foo (Just x) = [x]
-
-test3:: [a] -> [b]
-test3 = foo . foo
--- First foo must use the first instance,
--- second must use the second.  So we should
--- get in effect:      test3 (x:xs) = [x]
-
-main:: IO ()
-main = print (test3 "foo" :: [Int])
diff --git a/ghc/tests/typecheck/should_run/tcrun009.stdout b/ghc/tests/typecheck/should_run/tcrun009.stdout
deleted file mode 100644 (file)
index ed18a21..0000000
+++ /dev/null
@@ -1 +0,0 @@
-['f']
diff --git a/ghc/tests/typecheck/should_run/tcrun010.hs b/ghc/tests/typecheck/should_run/tcrun010.hs
deleted file mode 100644 (file)
index 1dec290..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Functional dependencies
--- This one gave "zonkIdOcc:  FunDep_a11w" in earlier days
-
-module Main (main) where
-
-data ERR a b = EOK a | ERR b deriving (Show)
-data Error   = No | Notatall deriving (Show, Eq)
-
-
-class MonadErr m e | m -> e where
-   aerturn ::           e   -> m a
-   areturn ::           a   -> m a
-   acatch  ::           a   -> (a -> m b) -> (e -> m b) -> m b
-   (>>>=)  ::           m a -> (a -> m b) -> m b
-   (>>>)   ::           m a -> m b        -> m b
-
-data BP a = BP (Int -> (ERR a Error, Int))
-
-instance MonadErr BP Error where
-   aerturn k             = BP $ \s  -> (ERR k, s)
-   areturn k             = BP $ \s  -> (EOK k, s)
-   acatch  k try handler = BP $ \s  -> let BP try'     = try  k
-                                           (r,s1)      = try' s
-                                           (BP c2, s2) = case r of
-                                                           EOK r -> (areturn r, s1)
-                                                           ERR r -> (handler r, s)
-                                       in  c2 s2
-   a >>> b =  a >>>= \_ -> b
-
-   (BP c1) >>>= fc2      = BP $ \s0 -> let (r,s1) = c1 s0
-                                           BP c2 = case r of
-                                                     EOK r -> fc2 r
-                                                     ERR r -> BP (\s -> (ERR r, s))
-                                       in c2 s1
-
-run_BP :: Int -> BP a -> (ERR a Error, Int)
-run_BP st (BP bp) = bp st
-
-foo :: (ERR Int Error, Int)
-foo = run_BP 111 (aerturn No)
-
-main = print (show foo)
diff --git a/ghc/tests/typecheck/should_run/tcrun010.stdout b/ghc/tests/typecheck/should_run/tcrun010.stdout
deleted file mode 100644 (file)
index ae94b77..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"(ERR No,111)"
diff --git a/ghc/tests/typecheck/should_run/tcrun011.hs b/ghc/tests/typecheck/should_run/tcrun011.hs
deleted file mode 100644 (file)
index 204bd20..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Existential data tyes
--- Hugs didn't like this one
-
-module Main (main) where
-
-
-class MyClass a b where
-       foo :: a -> b -> Int
-
-data Special = forall b. (MyClass Int b)=> MkSpecial b
-data General a = forall b. (MyClass a b)=> MkGeneral b
-
-instance MyClass Int Bool where
-   foo x False = -x
-   foo x True  = x
-
-xs :: [General Int]
-xs = [MkGeneral True, MkGeneral False]
-
-main = print [foo (3::Int) x | MkGeneral x <- xs]
-       -- Without the (::Int) part we get an 
-       -- incomprehensible error message :-(
diff --git a/ghc/tests/typecheck/should_run/tcrun011.stdout b/ghc/tests/typecheck/should_run/tcrun011.stdout
deleted file mode 100644 (file)
index 7984134..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[3,-3]
diff --git a/ghc/tests/typecheck/should_run/tcrun012.hs b/ghc/tests/typecheck/should_run/tcrun012.hs
deleted file mode 100644 (file)
index aca84ad..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Implicit parameter test
-
-module Main where
-
-main = do { putStrLn $ show $ foo with ?x = 13 
-         ; putStrLn $ show $ baz () with ?x = 14 }
-
-foo :: (?x :: Int) => Int
-foo = ?x
-
--- Check that defaulting works too
-baz () = ?x
-
diff --git a/ghc/tests/typecheck/should_run/tcrun012.stdout b/ghc/tests/typecheck/should_run/tcrun012.stdout
deleted file mode 100644 (file)
index df9e19c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-13
-14
diff --git a/ghc/tests/typecheck/should_run/tcrun013.hs b/ghc/tests/typecheck/should_run/tcrun013.hs
deleted file mode 100644 (file)
index 37385d9..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{-# OPTIONS -fglasgow-exts #-}
-
--- !!! Parallel list comprehensions
-
-module Main where
-
-f xs = [ (x,y) | x <- xs, x>3 | y <- xs ]
-
-main = print (f [0..10])
-
diff --git a/ghc/tests/typecheck/should_run/tcrun013.stdout b/ghc/tests/typecheck/should_run/tcrun013.stdout
deleted file mode 100644 (file)
index bb1e684..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[(4,0),(5,1),(6,2),(7,3),(8,4),(9,5),(10,6)]