[project @ 1996-07-25 21:02:03 by partain]
authorpartain <unknown>
Thu, 25 Jul 1996 21:33:42 +0000 (21:33 +0000)
committerpartain <unknown>
Thu, 25 Jul 1996 21:33:42 +0000 (21:33 +0000)
Bulk of final changes for 2.01

548 files changed:
GHC_ONLY/arith001/Main.hs
GHC_ONLY/arith002/Main.hs
GHC_ONLY/arith003/Main.hs
GHC_ONLY/arith004/Main.hs
GHC_ONLY/arith005/Main.hs
GHC_ONLY/arith006/arith006.stdout
GHC_ONLY/arith007/Main.hs
GHC_ONLY/arith008/Main.hs
GHC_ONLY/arith009/Jmakefile [new file with mode: 0644]
GHC_ONLY/arith009/Main.hs [new file with mode: 0644]
GHC_ONLY/arith009/arith009.stdout [new file with mode: 0644]
GHC_ONLY/array001/Main.hs
GHC_ONLY/array001/array001.stdout
GHC_ONLY/array002/Main.hs
GHC_ONLY/array002/array002.stdout
GHC_ONLY/bugs/10queens/Main.hs
GHC_ONLY/bugs/PENDING/README [deleted file]
GHC_ONLY/bugs/PENDING/north.hs [deleted file]
GHC_ONLY/bugs/PENDING/north2.hs [deleted file]
GHC_ONLY/bugs/andy_cherry/DataTypes.lhs
GHC_ONLY/bugs/andy_cherry/GenUtils.lhs
GHC_ONLY/bugs/andy_cherry/InterpUtils.lhs
GHC_ONLY/bugs/andy_cherry/Main.lhs
GHC_ONLY/bugs/andy_cherry/Parser.lhs
GHC_ONLY/bugs/andy_cherry/PrintTEX.lhs
GHC_ONLY/bugs/areid_pass/Main.hs
GHC_ONLY/bugs/cvh_unboxing/Main.lhs
GHC_ONLY/bugs/dmgob_native1/Main.lhs
GHC_ONLY/bugs/dmgob_native1/MaybeStateT.lhs
GHC_ONLY/bugs/dmgob_native2/Main.lhs
GHC_ONLY/bugs/fast2haskell/Fast2haskell.hs
GHC_ONLY/bugs/fast2haskell/Main.hs
GHC_ONLY/bugs/fast2haskell/Word.hs
GHC_ONLY/bugs/fast2haskell/Word2.hs
GHC_ONLY/bugs/fun_insts/Main.hs
GHC_ONLY/bugs/hill_stk_oflow/Main.hs
GHC_ONLY/bugs/ipoole_spec_class/GoferPreludeBits.lhs
GHC_ONLY/bugs/ipoole_spec_class/JobApp.lhs
GHC_ONLY/bugs/ipoole_spec_class/Lib.lhs
GHC_ONLY/bugs/ipoole_spec_class/Lognum.lhs
GHC_ONLY/bugs/ipoole_spec_class/Main.lhs
GHC_ONLY/bugs/jl_defaults/Main.hs
GHC_ONLY/bugs/jq_readsPrec/Main.hs
GHC_ONLY/bugs/jtod_circint/Bit.hs
GHC_ONLY/bugs/jtod_circint/Main.hs
GHC_ONLY/bugs/jtod_circint/Signal.hs
GHC_ONLY/bugs/jtod_circint/jtod_circint.stdout
GHC_ONLY/bugs/jules_xref/Main.hs
GHC_ONLY/bugs/jules_xref2/Main.hs
GHC_ONLY/bugs/lennart_array/Main.hs
GHC_ONLY/bugs/lennart_range/Main.hs
GHC_ONLY/bugs/lex/lex.stdin
GHC_ONLY/bugs/life_space_leak/Main.hs
GHC_ONLY/bugs/north_array/Main.hs
GHC_ONLY/bugs/north_array/north_array.stdout
GHC_ONLY/bugs/north_lias/Bits.lhs
GHC_ONLY/bugs/north_lias/Main.lhs
GHC_ONLY/bugs/sanders_array/Main.hs
GHC_ONLY/bugs/sanders_array/sanders_array.stdout
GHC_ONLY/bugs/waugh_neural/BpGen.lhs
GHC_ONLY/bugs/waugh_neural/Main.lhs
GHC_ONLY/bugs/waugh_neural/ReadLists.lhs
GHC_ONLY/bugs/zhang_ccall/Main.hs
GHC_ONLY/cg001/cg001.stdout
GHC_ONLY/cg002/cg002.stdout
GHC_ONLY/cg003/cg003.stdout
GHC_ONLY/cg004/cg004.stdout
GHC_ONLY/cg005/cg005.stdout
GHC_ONLY/cg006/cg006.stdout
GHC_ONLY/cg007/cg007.stdout
GHC_ONLY/cg008/cg008.stdout
GHC_ONLY/cg009/cg009.stdout
GHC_ONLY/cg010/cg010.stdout
GHC_ONLY/cg011/cg011.stdout
GHC_ONLY/cg012/cg012.stdout
GHC_ONLY/cg013/cg013.stdout
GHC_ONLY/cg014/cg014.stdout
GHC_ONLY/cg015/Main.hs
GHC_ONLY/cg016/Main.hs
GHC_ONLY/cg017/Main.hs
GHC_ONLY/cg018/Main.hs
GHC_ONLY/cg019/cg019.stdout
GHC_ONLY/cg020/cg020.stdout
GHC_ONLY/cg021/Main.hs
GHC_ONLY/cg022/Main.hs
GHC_ONLY/cg023/Main.lhs
GHC_ONLY/cg024/Main.hs
GHC_ONLY/cg025/Main.hs
GHC_ONLY/cg025/cg025.stderr
GHC_ONLY/cg026/Main.hs
GHC_ONLY/cg027/Main.hs
GHC_ONLY/cg028/Main.hs
GHC_ONLY/cg029/Main.hs
GHC_ONLY/cg030/Main.hs
GHC_ONLY/cg031/Main.hs
GHC_ONLY/cg032/Main.hs
GHC_ONLY/cg033/Main.hs
GHC_ONLY/cg034/Main.hs
GHC_ONLY/cg035/Main.hs
GHC_ONLY/cg036/Main.hs
GHC_ONLY/cg038/cg038.stdout
GHC_ONLY/cg039/Jmakefile [new file with mode: 0644]
GHC_ONLY/cg039/Main.hs [new file with mode: 0644]
GHC_ONLY/cg039/cg039.stdout [new file with mode: 0644]
GHC_ONLY/cg040/Jmakefile [moved from parallel/prsa/junk with 100% similarity]
GHC_ONLY/cg040/Main.hs [new file with mode: 0644]
GHC_ONLY/cg040/cg040.stdout [new file with mode: 0644]
GHC_ONLY/ghclib001/Main.hs
GHC_ONLY/io002/Main.hs
GHC_ONLY/io003/Main.hs
GHC_ONLY/io004/Main.hs
GHC_ONLY/io005/Main.hs
GHC_ONLY/io005/io005.stdout
GHC_ONLY/io006/Main.hs
GHC_ONLY/io007/Main.hs
GHC_ONLY/io008/Main.hs
GHC_ONLY/io009/Main.hs
GHC_ONLY/io010/Main.hs
GHC_ONLY/io011/Main.hs
GHC_ONLY/io012/Main.hs
GHC_ONLY/io013/Main.hs
GHC_ONLY/io014/Main.hs
GHC_ONLY/io014/io014.stdout
GHC_ONLY/io015/Main.hs
GHC_ONLY/io015/io015.stdout
GHC_ONLY/io016/Jmakefile
GHC_ONLY/io016/Main.hs
GHC_ONLY/io016/bar
GHC_ONLY/io017/Main.hs
GHC_ONLY/io018/Main.hs
GHC_ONLY/io019/Main.hs
GHC_ONLY/io020/Main.hs
GHC_ONLY/io021/Main.hs
GHC_ONLY/net002/Main.hs
GHC_ONLY/net004/Main.hs
GHC_ONLY/net006/Main.hs
GHC_ONLY/net008/Main.hs
GHC_ONLY/obfuscated93/launchbury/Main.hs
GHC_ONLY/obfuscated93/rittri/Main.hs
GHC_ONLY/po001/Main.hs
GHC_ONLY/po002/Main.hs
GHC_ONLY/po003/Main.hs
GHC_ONLY/po004/Main.hs
GHC_ONLY/po005/Main.hs
GHC_ONLY/po006/Main.hs
GHC_ONLY/po007/Main.hs
GHC_ONLY/po008/Main.hs
GHC_ONLY/po009/Main.hs
GHC_ONLY/po010/Main.hs
GHC_ONLY/po011/Main.hs
GHC_ONLY/po011/po011.stdout
GHC_ONLY/po012/Main.hs
GHC_ONLY/specialise/clausify000/Main.hs
GHC_ONLY/specialise/clausify001/Main.hs
GHC_ONLY/specialise/clausify002/Main.hs
GHC_ONLY/specialise/clausify003/Main.hs
GHC_ONLY/specialise/code003/PreludeNum.hs
GHC_ONLY/specialise/spec001/Main.hs
GHC_ONLY/specialise/spec002/Main.hs
GHC_ONLY/specialise/spec003/Main.hs
GHC_ONLY/specialise/spec003/PreludeNum.hs
GHC_ONLY/stable001/Main.lhs
PATCHLEVEL
README
imaginary/exp3_8/Main.hs
imaginary/gen_regexps/Main.hs
imaginary/paraffins/Main.hs
imaginary/primes/Main.hs
imaginary/primes/primes.stdout
imaginary/queens/queens.stdout
imaginary/rfib/rfib.stdout
imaginary/tak/tak.stdout
mkworld/Jmakefile
mkworld/install-nofib-ghc.jm
mkworld/install-nofib-ghc.ljm [deleted file]
mkworld/install-nofib-hbc.jm
mkworld/install-nofib-hbc.ljm [deleted file]
mkworld/install-nofib-nhc.jm
mkworld/install-nofib-nhc.ljm [deleted file]
mkworld/install-nofib.jm
mkworld/install-nofib.ljm [deleted file]
mkworld/macros-nofib-ghc.jm
mkworld/macros-nofib-ghc.ljm [deleted file]
mkworld/macros-nofib-hbc.jm
mkworld/macros-nofib-hbc.ljm [deleted file]
mkworld/macros-nofib-nhc.jm
mkworld/macros-nofib-nhc.ljm [deleted file]
mkworld/macros-nofib.jm
mkworld/macros-nofib.ljm [deleted file]
mkworld/nofib.lit [deleted file]
mkworld/only4-nofib-ghc.jm
mkworld/only4-nofib-ghc.ljm [deleted file]
mkworld/only4-nofib-hbc.jm
mkworld/only4-nofib-hbc.ljm [deleted file]
mkworld/only4-nofib-nhc.jm
mkworld/only4-nofib-nhc.ljm [deleted file]
mkworld/only4-nofib.jm
mkworld/only4-nofib.ljm [deleted file]
mkworld/site-nofib-ghc.jm
mkworld/site-nofib.jm.in
mkworld/suffixes-nofib-ghc.jm
mkworld/suffixes-nofib-ghc.ljm [deleted file]
mkworld/suffixes-nofib-hbc.jm
mkworld/suffixes-nofib-hbc.ljm [deleted file]
mkworld/suffixes-nofib-nhc.jm
mkworld/suffixes-nofib-nhc.ljm [deleted file]
mkworld/suffixes-nofib.jm
mkworld/suffixes-nofib.ljm [deleted file]
mkworld/utils-nofib-ghc.jm
mkworld/utils-nofib-ghc.ljm [deleted file]
mkworld/utils-nofib-hbc.jm
mkworld/utils-nofib-hbc.ljm [deleted file]
mkworld/utils-nofib-nhc.jm
mkworld/utils-nofib-nhc.ljm [deleted file]
mkworld/utils-nofib.jm
mkworld/utils-nofib.ljm [deleted file]
parallel/Jmakefile
parallel/NESL/GranRandom.hs [new file with mode: 0644]
parallel/NESL/Jmakefile [new file with mode: 0644]
parallel/NESL/Makefile.original [new file with mode: 0644]
parallel/NESL/StrategiesV.lhs [new file with mode: 0644]
parallel/NESL/fft.lhs [new file with mode: 0644]
parallel/NESL/integrate.lhs [new file with mode: 0644]
parallel/NESL/matrix-inverse.lhs [new file with mode: 0644]
parallel/NESL/quick_hull.lhs [new file with mode: 0644]
parallel/NESL/sieve.lhs [new file with mode: 0644]
parallel/bom/GranRandom.hs [new file with mode: 0644]
parallel/bom/Jmakefile [new file with mode: 0644]
parallel/bom/Makefile.original [new file with mode: 0644]
parallel/bom/StrategiesV.lhs [new file with mode: 0644]
parallel/bom/bom.hs [new file with mode: 0644]
parallel/bom/dateNaiveAhead.hs [new file with mode: 0644]
parallel/bom/dateNaiveChunk.hs [new file with mode: 0644]
parallel/cfd/Defs.hs
parallel/cfd/Main.hs
parallel/cfd/S_Array.hs
parallel/coins/Jmakefile [new file with mode: 0644]
parallel/coins/Makefile.original [new file with mode: 0644]
parallel/coins/ParForce.hs [new file with mode: 0644]
parallel/coins/coins.hs [new file with mode: 0644]
parallel/dcbm/DCBM.hs
parallel/dcbm/DbParallel.hs
parallel/dcbm/Jmakefile
parallel/dcbm/Main.hs
parallel/dcbm/Primitives.lhc
parallel/dcbm/Primitives.lhi
parallel/dcbm/Types.hs
parallel/linsolv/Jmakefile
parallel/linsolv/Main.hs
parallel/linsolv/Matrix-list.hs
parallel/linsolv/linsolv.stdout [new file with mode: 0644]
parallel/minimax/Board.hs [new file with mode: 0644]
parallel/minimax/Game.hs [new file with mode: 0644]
parallel/minimax/Jmakefile [new file with mode: 0644]
parallel/minimax/Main.hs [new file with mode: 0644]
parallel/minimax/Makefile.original [new file with mode: 0644]
parallel/minimax/ParForce.hs [new file with mode: 0644]
parallel/minimax/Prog.hs [new file with mode: 0644]
parallel/minimax/Tree.hs [new file with mode: 0644]
parallel/minimax/Wins.hs [new file with mode: 0644]
parallel/par001/Main.hs
parallel/par001/par001.stdout
parallel/parfact/Jmakefile [new file with mode: 0644]
parallel/parfact/Makefile.original [new file with mode: 0644]
parallel/parfact/parfact.hs [new file with mode: 0644]
parallel/parfact/parfib.hs [new file with mode: 0644]
parallel/parfact/partree.hs [new file with mode: 0644]
parallel/parfact/tak.hs [new file with mode: 0644]
parallel/parfact/tree.hs [new file with mode: 0644]
parallel/pfib/pfib.stdout
parallel/prsa/Main.hs
parallel/prsa/Rsa.hs
parallel/ray/Main.lhs
parallel/soda/Jmakefile
parallel/soda/Main.hs
parallel/soda/Makefile.original [new file with mode: 0644]
parallel/soda/soda7.hs [new file with mode: 0644]
real/HMMS/Alignments.lhs
real/HMMS/BalBinSTrees.lhs
real/HMMS/BatchAlign.lhs
real/HMMS/HmmDensities.lhs
real/HMMS/HmmDigraphs.lhs
real/HMMS/Lists.lhs
real/HMMS/MaybeStateT.lhs
real/HMMS/NativeIO.lhs
real/HMMS/Phones.lhs
real/HMMS/PlainTextIO.lhs
real/HMMS/Pronunciations.lhs
real/HMMS/README.nofib
real/HMMS/Viterbi.lhs
real/HMMS/bin/README [deleted file]
real/HMMS/hmms/h9.dgs
real/HMMS/hmms/h9.ties
real/HMMS/lib/haskell/GhcPrintf.hs
real/anna/AbsConc3.hs
real/anna/AbstractMisc.hs
real/anna/Apply.hs
real/anna/BarakiConc3.hs
real/anna/BaseDefs.hs
real/anna/DomainExpr.hs
real/anna/EtaAbstract.hs
real/anna/FrontierDATAFN2.hs
real/anna/FrontierGENERIC2.hs
real/anna/FrontierMisc2.hs
real/anna/Inverse.hs
real/anna/LambdaLift5.hs
real/anna/Main.hs
real/anna/MakeDomains.hs
real/anna/MyUtils.hs
real/anna/Parser2.hs
real/anna/PrintResults.hs
real/anna/ReadTable.hs
real/anna/SmallerLattice.hs
real/anna/StrictAn6.hs
real/anna/SuccsAndPreds2.hs
real/anna/TExpr2DExpr.hs
real/anna/TypeCheck5.hs
real/anna/Utils.hs
real/bspt/BSPT.lhs
real/bspt/Euclid.lhs
real/bspt/EuclidGMS.lhs
real/bspt/GeomNum.lhs
real/bspt/Init.lhs
real/bspt/Libfuns.lhs
real/bspt/Main.lhs
real/bspt/Rationals.lhs
real/bspt/Stdlib.lhs
real/compress/BinTest.hs
real/compress/Decode.hs
real/compress/Encode.hs
real/compress/Lzw.hs
real/compress/Lzw2.hs
real/compress/Main.hs
real/compress/README.nofib
real/compress/Uncompress.hs
real/compress2/Arrays.hs
real/compress2/Encode.hs
real/compress2/Main.hs
real/compress2/WriteRoutines.hs
real/ebnf2ps/Color.hs
real/ebnf2ps/CommandLine.hs
real/ebnf2ps/Fonts.hs
real/ebnf2ps/HappyParser.hs [deleted file]
real/ebnf2ps/HappyParser.ly
real/ebnf2ps/IOSupplement.hs
real/ebnf2ps/Jmakefile
real/ebnf2ps/Lexer.hs
real/ebnf2ps/Main.hs
real/fem/Basics.hs
real/fem/Main.hs
real/fem/Matrix.hs
real/fem/Vector.hs
real/fluid/Asb_routs.hs
real/fluid/Chl_decomp.hs
real/fluid/Chl_method.hs
real/fluid/Chl_routs.hs
real/fluid/Input_proc.hs
real/fluid/Jcb_method.hs
real/fluid/Main.hs
real/fluid/Min_degree.hs
real/fluid/Norm.hs
real/fluid/Rhs_Asb_routs.hs
real/fluid/S_Array.hs
real/fluid/fluid.stdout
real/fluid/fluid.stdout2
real/fulsom/Fulsom.hs
real/fulsom/Interval.hs
real/fulsom/Oct.hs
real/fulsom/Raster.hs
real/fulsom/Types.hs
real/gamteb/GamtebType.hs
real/gamteb/InitTable.hs
real/gamteb/Main.hs
real/gamteb/Output.hs
real/gamteb/RoulSplit.hs
real/gamteb/TransPort.hs
real/gamteb/Utils.hs
real/gamteb/gamteb.stdout
real/gg/Activity.hs
real/gg/GRIP.hs
real/gg/Main.hs
real/gg/PSlib.hs
real/gg/Parse.hs
real/gg/Pool.hs
real/gg/Spark.hs
real/gg/StdLib.hs
real/grep/Main.lhs
real/hidden/Cross.hs
real/hidden/IO.hi [deleted file]
real/hidden/IO.hs [deleted file]
real/hidden/Jmakefile
real/hidden/Main.hs
real/hidden/MyIO.hs [new file with mode: 0644]
real/hidden/Numbers.hs
real/hidden/Vectors.hs
real/hpg/GenExp.lhs
real/hpg/GenVal.lhs
real/hpg/Main.lhs
real/hpg/Types.lhs
real/infer/Environment.hs
real/infer/Infer.hs
real/infer/InferMonad.hs
real/infer/Jmakefile
real/infer/List.hi [deleted file]
real/infer/Main.hs
real/infer/Maybe.hs
real/infer/MyList.hs [moved from real/infer/List.hs with 89% similarity]
real/infer/Parse.hs
real/infer/Term.hs
real/infer/TestTerm.hs
real/infer/TestType.hs
real/infer/Type.hs
real/lift/Main.lhs
real/linear/Main.lhs
real/maillist/Main.hs
real/mkhprog/Main.lhs
real/parser/Main-GHC.hs
real/parser/Main.hs
real/pic/ChargeDensity.hs
real/pic/ElecField.hs
real/pic/Main.hs
real/pic/Pic.hs
real/pic/PicType.hs
real/pic/Potential.hs
real/pic/PushParticle.hs
real/pic/Utils.hs
real/prolog/Main.hs
real/prolog/Parse.hs
real/prolog/PrologData.hs
real/prolog/Subst.hs
real/reptile/Auxprogfuns.hs
real/reptile/Main.hs
real/reptile/Progfuns.hs
real/rsa/Rsa.hs
real/symalg/BasicNumber.hs
real/symalg/BasicNumberApprox.hs
real/symalg/Lexer.hs
real/symalg/Main.hs
real/symalg/Print.hs
real/symalg/symalg_a.ps [deleted file]
real/veritas/Build_Tm.lhs
real/veritas/Build_itrm.lhs
real/veritas/Core_database.hs
real/veritas/Dcore.hs
real/veritas/Display.hs
real/veritas/Editor.hs
real/veritas/Edlib.lhs
real/veritas/Getops.hs
real/veritas/Goals.hs
real/veritas/Kernel.hs
real/veritas/Main.hs
real/veritas/Parse.lhs
real/veritas/Tacticals.hs
real/veritas/Tactics.hs
real/veritas/ThmTactics.hs
real/veritas/Token.lhs
real/veritas/Tree.hs
real/veritas/Type_defs.lhs
real/veritas/Unparse.lhs
real/veritas/Vtslib.hs
real/veritas/X_interface.hs
spectral/awards/Main.hs
spectral/awards/awards.stdout
spectral/banner/Main.hs
spectral/boyer/Main.lhs
spectral/boyer2/Lisplikefns.hs
spectral/boyer2/Main.hs
spectral/boyer2/README
spectral/calendar/Main.hs
spectral/cichelli/Aux.hs
spectral/cichelli/Main.hs
spectral/cichelli/Prog.hs
spectral/clausify/Main.hs
spectral/compreals/Main.lhs
spectral/compreals/QRationals.lhs
spectral/compreals/RealReals.lhs
spectral/cse/Main.hs
spectral/cse/StateMonad.hs
spectral/eliza/Main.hs
spectral/expert/Knowledge.hs
spectral/expert/Main.hs
spectral/expert/Match.hs
spectral/expert/Search.hs
spectral/fft2/Complex_Vectors.lhs
spectral/fft2/Fourier.lhs
spectral/fft2/Main.lhs
spectral/fibheaps/Main.lhs
spectral/fish/Main.hs
spectral/hartel/Fast2haskell.hs
spectral/hartel/Fast2haskell2.hs
spectral/hartel/comp_lab_zift/Main.hs
spectral/hartel/event/Main.hs
spectral/hartel/fft/Main.hs
spectral/hartel/fft/Main2.hs
spectral/hartel/genfft/Main.hs
spectral/hartel/ida/Main.hs
spectral/hartel/listcompr/Main.hs
spectral/hartel/listcopy/Main.hs
spectral/hartel/nucleic2/Main.hs
spectral/hartel/parstof/Jmakefile
spectral/hartel/parstof/Main.hs
spectral/hartel/sched/Main.hs
spectral/hartel/solid/Main.hs
spectral/hartel/transform/Main.hs
spectral/hartel/typecheck/Main.hs
spectral/hartel/wang/Main.hs
spectral/hartel/wave4main/Main.hs
spectral/hartel/wave4main/Main2.hs
spectral/knights/ChessSetArray.lhs
spectral/knights/ChessSetList.lhs
spectral/knights/Main.lhs
spectral/life/Main.hs
spectral/mandel/Main.lhs
spectral/mandel/Mandel.lhs
spectral/mandel/PortablePixmap.lhs
spectral/mandel2/Main.hs
spectral/mandel2/mandel2.stdout
spectral/minimax/Board.hs
spectral/minimax/Main.hs
spectral/minimax/Tree.hs
spectral/multiplier/Main.hs
spectral/pretty/Main.hs
spectral/primetest/IntLib.lhs
spectral/primetest/Main.lhs
spectral/primetest/Prime.lhs
spectral/primetest/primetest.stdout
spectral/rewrite/Main.lhs
spectral/rewrite/rewrite.stdout
spectral/scc/scc.stdout
spectral/simple/Main.hs
spectral/sorting/Main.hs
spectral/sorting/Sort.hs
spectral/sorting/sorting.stdout
spectral/treejoin/Main.hs
utils/md4tools/README [deleted file]
utils/md4tools/README.nofib [deleted file]
utils/md4tools/TestArticle [deleted file]
utils/md4tools/checkmd4.1 [deleted file]
utils/md4tools/checkmd4.c [deleted file]
utils/md4tools/hashmd4.1 [deleted file]
utils/md4tools/hashmd4.c [deleted file]
utils/md4tools/makefile.original [deleted file]
utils/md4tools/md4.c [deleted file]
utils/md4tools/md4.h [deleted file]
utils/md4tools/md4_def.h [deleted file]
utils/md4tools/md4driver.c [deleted file]
utils/md4tools/pipeit.c [deleted file]
utils/md4tools/rfc1186 [deleted file]

index ff1c5bb..1ab0c90 100644 (file)
@@ -1,17 +1,16 @@
 --!!! conversions: Double <=> Rational/Integer things
 --
-main _
-  = [AppendChan stdout
-       (show r42  ++ "\n" ++
-       show nu42 ++ ", " ++
-       show de42 ++ "\n" ++
-       show nu42d ++ ", " ++
-       show de42d ++ "\n" ++
-       show s2 ++ ", " ++
-       show e2 ++ "\n" ++
-       show s ++ ", " ++
-       show e ++ "\n" )
-    ]
+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
index 585ed59..fbeb7bf 100644 (file)
@@ -1,7 +1,9 @@
 --!!! basic Rational operations
 --
-main _
-  = [AppendChan stdout
+import Ratio
+
+main
+  = putStr
        (-- Ratio Ints
        show [i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc]
     ++  "\n"
@@ -24,7 +26,6 @@ main _
 --  ++ show []
 --  ++  "\n"
        )
-    ]
   where  
     i0a, i0b, i0c, i2a, i2b, im2a, im2b, i_pi, i_misc :: Ratio Int
 
index 40014dc..2f11800 100644 (file)
@@ -1,7 +1,11 @@
 --!!! test arithmetic operations from "Prelude" (gcd, ldm, etc.)
 --
-main _
-  = [AppendChan stdout
+main
+  = let
+       minInt = minBound :: Int
+       maxInt = maxBound :: Int
+    in
+    putStr
        (-- w/ Ints
        show [
            minInt, maxInt,
@@ -62,7 +66,7 @@ main _
            -- ToDo: more stuff
            ]
        ++ "\n"
-       )]
+       )
   where
     i0, i4, i4m, i6, i6m, i8, i8m :: Int
     i0 = 0
index 3fcc6d8..30b37d3 100644 (file)
@@ -1,7 +1,7 @@
 --!!! test quot/rem/div/mod functions on Ints and Integers
 --
-main _
-  = [AppendChan stdout
+main
+  = putStr
        (-- w/ Ints and Integers
        show (unzipWith div ints_list)
        ++ "\n"
@@ -27,7 +27,7 @@ main _
        ++ "\n"
        ++ show (unzipWith law2 integers_list)
        ++ "\n"
-       )]
+       )
   where
     ints_list :: [(Int, Int)]
     integers_list :: [(Integer, Integer)]
index 89ec9a7..b55d701 100644 (file)
@@ -1,7 +1,7 @@
 --!!! test RealFrac ops (ceiling/floor/etc.) on Floats/Doubles
 --
-main _
-  = [AppendChan stdout
+main
+  = putStr
        (-- {Float,Double} inputs, {Int,Integer} outputs
        show ((map ceiling float_list) :: [Int])
        ++ "\n"
@@ -43,7 +43,7 @@ main _
        ++ "\n"
        ++ show ((map properFraction double_list) :: [(Integer,Double)])
        ++ "\n"
-       )]
+       )
   where
     float_list :: [Float]
     double_list :: [Double]
index ce29b85..194a737 100644 (file)
@@ -1 +1 @@
-42.0000000
\ No newline at end of file
+42.0000000
index 6ca5401..dc99edf 100644 (file)
@@ -1,7 +1,7 @@
 --!!! test simple Integer things
 --
-main _
-  = [AppendChan stdout (shows integer_list "\n")]
+main
+  = putStr (shows integer_list "\n")
   where
     int_list :: [Int]
     integer_list :: [Integer]
index a64b887..73bbd71 100644 (file)
@@ -14,7 +14,7 @@ random_numbers (s1,s2,s3)
 
 -- partain: changed to cvt spaces into newlines (easier to see bugs)
 
-main = appendChan stdout (map cvt (shows (take 1000 (random_numbers (9807, 65, 32975))) "\n")) exit done
+main = putStr (map cvt (shows (take 1000 (random_numbers (9807, 65, 32975))) "\n"))
   where
     cvt ' ' = '\n'
     cvt c   = c
diff --git a/GHC_ONLY/arith009/Jmakefile b/GHC_ONLY/arith009/Jmakefile
new file mode 100644 (file)
index 0000000..8b556e5
--- /dev/null
@@ -0,0 +1 @@
+NoFibOneModuleCompileAndRun(arith009,)
diff --git a/GHC_ONLY/arith009/Main.hs b/GHC_ONLY/arith009/Main.hs
new file mode 100644 (file)
index 0000000..43fe1b2
--- /dev/null
@@ -0,0 +1,6 @@
+-- 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_ONLY/arith009/arith009.stdout b/GHC_ONLY/arith009/arith009.stdout
new file mode 100644 (file)
index 0000000..949a11b
--- /dev/null
@@ -0,0 +1 @@
+-40
index 4f1ee2d..8395b2f 100644 (file)
@@ -1,4 +1,8 @@
-main _ = [AppendChan stdout (shows a "\n")]
+import Array -- 1.3
+infix 1 =:
+(=:) a b = (a,b)
+
+main = putStr (shows a "\n") 
     where
        a :: Array Integer Integer
-       a = array (1,100) ((1 := 1) : [i := i * a!(i-1) | i <- [2..100]])
+       a = array (1,100) ((1 =: 1) : [i =: i * a!(i-1) | i <- [2..100]])
index 2fbfc52..005ba17 100644 (file)
@@ -1 +1 @@
-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]
+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)]
index 27c8d52..525acad 100644 (file)
@@ -1,4 +1,9 @@
-main _ = [AppendChan stdout (shows sub_b "\n")]
+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
@@ -8,5 +13,5 @@ main _ = [AppendChan stdout (shows sub_b "\n")]
                 (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)
+       a = array (1,100) ((1 =: 1) : [i =: fromInteger i * a!(i-1)
                                        | i <- [2..100]])
index 437452c..cc8c836 100644 (file)
@@ -1 +1 @@
-array (102, 113) [102 := 6.3661977236758138e-1, 103 := 1.9098593171027440, 104 := 7.6394372684109761, 105 := 38.197186342054884, 106 := 229.18311805232929, 107 := 1604.2818263663050, 108 := 12834.254610930440, 109 := 115508.29149837396, 110 := 1155082.9149837396, 111 := 12705912.064821135, 112 := 152470944.77785364, 113 := 1982122282.1120973]
+array (102, 113) [(102, 6.3661977236758138e-1), (103, 1.9098593171027440), (104, 7.6394372684109761), (105, 38.197186342054884), (106, 229.18311805232929), (107, 1604.2818263663050), (108, 12834.254610930440), (109, 115508.29149837396), (110, 1155082.9149837396), (111, 12705912.064821135), (112, 152470944.77785364), (113, 1982122282.1120973)]
index 86fe7ca..6e2fdc0 100644 (file)
@@ -26,5 +26,5 @@ where {
     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 r = [AppendChan "stdout" (f_main c_input)]
+    main = putStr (f_main c_input)
 }
diff --git a/GHC_ONLY/bugs/PENDING/README b/GHC_ONLY/bugs/PENDING/README
deleted file mode 100644 (file)
index 52a1a3d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-These are bug-programs (fixed) that I haven't turned into tests yet.
-
-Will
diff --git a/GHC_ONLY/bugs/PENDING/north.hs b/GHC_ONLY/bugs/PENDING/north.hs
deleted file mode 100644 (file)
index f757e2f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-val1 :: Array Int Int
-val1 = array (12,10) []
-main = print [val1 == val1]
diff --git a/GHC_ONLY/bugs/PENDING/north2.hs b/GHC_ONLY/bugs/PENDING/north2.hs
deleted file mode 100644 (file)
index 687bdef..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-main = prints (exponent (2.0 :: Float), significand (2.0 :: Float),
-               exponent (2.0 :: Double),significand (2.0 :: Double)) "\n"
index 4a74e32..a800394 100644 (file)
@@ -1,6 +1,11 @@
 > module DataTypes where
 
 > import GenUtils
+> import Array -- 1.3
+> import Ix
+> import Char
+> infix 1 =: -- 1.3
+> (=:) a b = (a,b)
 
 %------------------------------------------------------------------------------
 
@@ -81,8 +86,8 @@ Now the ranks and files.
 > userFormatExBoardPos (Just f,Nothing) = userFormatFile f 
 > userFormatExBoardPos (Nothing,Just r) = userFormatRank r
 > userFormatExBoardPos _ = ""
-> userFormatRank r = [chr (r + 48)]
-> userFormatFile f = [chr (f + 96)]
+> userFormatRank r = [toEnum (r + 48)]
+> userFormatFile f = [toEnum (f + 96)]
 
 %------------------------------------------------------------------------------
 
@@ -243,9 +248,9 @@ These are the components of a move.
 
 
 > getOpening eco@[a,b,c] |  a >= 'A' && a <= 'E' && isDigit b && isDigit c 
->    = getOpenName ((ord a - ord 'A') * 100 
->              + (ord b - ord '0') * 10 
->              + (ord c - ord '0')) ++ " " ++ eco
+>    = getOpenName ((fromEnum a - fromEnum 'A') * 100 
+>              + (fromEnum b - fromEnum '0') * 10 
+>              + (fromEnum c - fromEnum '0')) ++ " " ++ eco
 > getOpening other = other
 
 > getOpenName :: Int -> String
@@ -549,7 +554,7 @@ This uses forsyth notation.
 > buildBoard :: String -> Board
 > buildBoard str = Board brd initMoveNumber Nothing
 >    where
->      brd = array boardSize (zipWith (:=) allSq (mkPieces str))
+>      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
index da55e58..e10035a 100644 (file)
@@ -33,11 +33,12 @@ All the code below is understood to be in the public domain.
 >      combinePairs,
 >      formatText ) where
 
+> import Array -- 1.3
+> import Ix    -- 1.3
+
 >#ifndef __GLASGOW_HASKELL__
 
 > import {-fool mkdependHS-}
->       Maybe (Maybe(..))
-> import {-fool mkdependHS-}
 >       Trace
 
 >#endif
@@ -49,9 +50,12 @@ HBC has it in one of its builtin modules
 
 >#if defined(__GLASGOW_HASKELL__) || defined(__GOFER__)
 
-> data Maybe a = Nothing | Just a deriving (Eq,Ord,Text)
+> --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 [] = []
@@ -87,7 +91,7 @@ This version returns nothing, if *any* one fails.
 > 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,Text)
+> 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, 
@@ -214,15 +218,15 @@ Note again the use of partiual application.
 
 > 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 ] ++
+>       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 ]
+>   where arr = array bds [ t =: f t | t <- range bds ]
 
 Quite neat this. Formats text to fit in a column.
 
index 1d7b193..225bf3b 100644 (file)
@@ -2,6 +2,7 @@
 
 > import GenUtils
 > import DataTypes
+> import Array -- 1.3
 
 %------------------------------------------------------------------------------
 
@@ -155,7 +156,7 @@ Now filter out the moves it *cant* be.
 >      -> [(Piece,ChessFile,ChessRank)]
 > getCurrPieces (Board arr (MoveNumber _ col) _) pc corr_file =
 >      [ (p,x,y) |
->              ((x,y) := r) <- assocs arr,
+>              ((x,y), r) <- assocs arr,
 >              lookupSquare col r == Friendly,
 >              (Just p) <- [getSquarePiece r],
 >              p == pc,
@@ -285,24 +286,24 @@ ToDo: add en-passant
 > 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 ])
+>      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 ])
+>      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])
+>      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 ])
+>      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)
@@ -310,29 +311,29 @@ ToDo: add en-passant
 
 > 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
+>            [ (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
+>            [ (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
+>            [ (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
+>            [ (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)] 
index 496e47b..beab702 100644 (file)
@@ -6,6 +6,9 @@
 > import Interp
 > import PrintTEX
 
+> import System -- 1.3 (partain)
+> import Char -- 1.3
+
 > --fakeArgs = "game001.txt"
 > --fakeArgs = "pca2.pgn"
 > --fakeArgs = "silly.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
@@ -27,6 +39,7 @@
 >      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)
index 9582b45..020e4f4 100644 (file)
@@ -2,6 +2,7 @@
 
 > import GenUtils
 > import DataTypes
+> import Char -- 1.3
 
 This is a PGN lexer. Simple, and straightforward.
 
index dc5ac6e..31d632d 100644 (file)
@@ -2,6 +2,8 @@
 
 > 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.
 
index 217397b..c858e98 100644 (file)
@@ -20,7 +20,7 @@ instance Wrapper Int where
   wrapup a = a `thenIO_Int#` \ x# -> returnIO (I# x#)
 
 instance Wrapper Char where
-  wrapup a = a `thenIO_Int#` \ x# -> returnIO (chr (I# x#))
+  wrapup a = a `thenIO_Int#` \ x# -> returnIO (toEnum (I# x#))
 
 instance Wrapper Bool where
   wrapup a = a `thenIO_Int#` \ x# -> returnIO (x# /=# 0#)
@@ -32,7 +32,7 @@ instance Pass Int where
   pass (I# i#) = i#
 
 instance Pass Char where
-  pass c = pass (ord c)
+  pass c = pass (fromEnum c)
 
 instance Pass Bool where
   pass True = 0#
index e2d4349..2f72ddd 100644 (file)
@@ -2,7 +2,6 @@
 import Types
 import Append
 
-main resps 
- = [AppendChan stdout (show (append_FC_L_L (FC2 a_ a_) []))]
+main = putStr (show (append_FC_L_L (FC2 a_ a_) []))
    where a_ = case 'a' of { C# x -> x }
 \end{code}
index 2a8dbc7..4b01cee 100644 (file)
@@ -24,7 +24,7 @@ blank line, etc.
 
 > import Native
 > import MaybeStateT
-> import LibSystem
+> import System
 
 > main = getArgs           >>= \ args ->
 >       case args of
index b3107be..aa75bd9 100644 (file)
@@ -22,6 +22,6 @@ wrapped around the pair containing the return value and the state.
 > returnMST x   = \s -> Just (x, s)
 
 > bindMST       :: MST s a -> (a -> MST s b) -> MST s b
-> bindMST m k s =  m s `thenMaybe` \(x, s') -> k x s'
+> bindMST m k s =  m s >>= \(x, s') -> k x s'
 
 \end{haskell}
index e1f6b4c..46239a1 100644 (file)
@@ -12,7 +12,7 @@
 > import LPA     -- the linear predictive analysis module
 
 
-> main = hGetContents stdin    >>= \bs ->
+> main = getContents   >>= \bs ->
 >        putStr (program bs)
 > {- 1.2
 > main = readChan stdin exit                            $ \bs ->
index a1ffa5e..de3aa0f 100644 (file)
@@ -1,23 +1,25 @@
        module Fast2haskell (
-            Complex_type(..), Array_type(..), Assoc_type(..), Descr_type(..),
-            abortstr, delay, fix, force, iff, iffrev, seq,
+            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 Word2;
+           import Complex; -- 1.3
+           import Array; -- 1.3
             type Complex_type   = Complex Double;
             type Array_type b   = Array Int b;
-            type Assoc_type a   = Assoc Int a;
+            type Assoc_type a   = (Int, a);
             type Descr_type     = (Int,Int);
-            abortstr      str                 = abort (OtherError str);
+            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              = seq_const y (x{-#STRICT-});
+            seQ           x    y              = seq_const y (x{-#STRICT-});
             seq_const     x    y              = x ;
             pair          []                  = False;
             pair          x                   = True;
             rshift_i      x    y              = wordToInt (bitRsh (fromInt x) y);
             write         x                   = abortstr "write not implemented";
             descr         l    u              = (l,u);
-            destr_update  ar  i  x            = ar // [i:=x];
-            indassoc      (i:=v)              = i;
+            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;
+            update        ar i x              = ar // [(i,x)];
+            valassoc      (i,v)               = v;
        }
index 2580839..b0c2935 100644 (file)
@@ -1,6 +1,8 @@
 module Main (main) -- TEST
 where {
 import Fast2haskell;
+import Complex;--1.3
+import Array;--1.3
 
     c_eps=(5.00000e-06 :: Double);
     c_t=True;
@@ -36,7 +38,7 @@ import Fast2haskell;
             (False,(++) a_name ((++) "\tok: " ((++) (show a_ok) ((++) "\tis: " 
             (show a_try)))));
     f_chartest a_name a_ok a_try=
-        if (((==) :: (Int -> Int -> Bool)) (ord a_ok) (ord a_try))
+        if (((==) :: (Int -> Int -> Bool)) (fromEnum a_ok) (fromEnum a_try))
         then (True,"")
         else 
             (False,(++) a_name ((++) "\tok: " ((++) ((:) a_ok []) ((++) "\tis: " 
@@ -70,11 +72,11 @@ import Fast2haskell;
         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 
+        ((,) (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 
@@ -84,7 +86,7 @@ import Fast2haskell;
         ((:) (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" 
+        ((:) (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 
@@ -96,7 +98,7 @@ import Fast2haskell;
         ((!!) ((:) (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)) 
+        (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) 
@@ -127,8 +129,8 @@ import Fast2haskell;
     c_concat=f_foldr (++) [];
     f_const a_x a_y=a_x;
     f_digit a_x=
-        if (((<=) :: (Int -> Int -> Bool)) (ord '0') (ord a_x))
-        then (((<=) :: (Int -> Int -> Bool)) (ord a_x) (ord '9'))
+        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;
@@ -176,14 +178,14 @@ import Fast2haskell;
          } in  f_f (1 :: Int) a_x;
     f_letter a_c=
         if (
-            if (((<=) :: (Int -> Int -> Bool)) (ord 'a') (ord a_c))
-            then (((<=) :: (Int -> Int -> Bool)) (ord a_c) (ord 'z'))
+            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)) (ord 'A') (ord a_c))
-        then (((<=) :: (Int -> Int -> Bool)) (ord a_c) (ord 'Z'))
+        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)=
@@ -200,7 +202,7 @@ import Fast2haskell;
                 else 
                     ((:) [] [])
          } in  
-            if (((==) :: (Int -> Int -> Bool)) (ord a_a) (ord '\o012'))
+            if (((==) :: (Int -> Int -> Bool)) (fromEnum a_a) (fromEnum '\o012'))
             then ((:) [] (f_lines a_x))
             else 
                 ((:) ((:) a_a (head r_xs)) (tail r_xs));
@@ -290,5 +292,5 @@ data
     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 r = [AppendChan "stdout" (f_main c_input)]
+    main = putStr (f_main c_input)
 }
index c584423..d385f59 100644 (file)
@@ -48,14 +48,16 @@ instance Num Word where
          = case integer2Int# a# s# d# of { z# ->
            Word z# }
 
-instance Text Word where
+instance Show Word where
        showsPrec _ (Word w) =
                let i = toInteger (MkInt w) + (if w >=# 0# then 0 else  2*(toInteger maxInt + 1))
                in  showString (conv 8 i)
 
 conv :: Int -> Integer -> String
 conv 0 _ = ""
-conv n i = conv (n-1) q ++ ["0123456789ABCDEF"!!r] where (q, r) = quotRem i 16
+conv n i = conv (n-1) q ++ ["0123456789ABCDEF"!!fromInteger r] 
+         where 
+          (q, r) = quotRem i 16
 
 ------------------------------------------------------------------
 data Short = Short Int# deriving (Eq, Ord)
index 59f4b9f..117c30b 100644 (file)
@@ -51,14 +51,21 @@ instance Num Word where
          = case integer2Int# a# s# d# of { z# ->
            Word (i2w z#) }
 
-instance Text Word where
+instance Show Word where
        showsPrec _ (Word w) =
-               let i = toInteger (I# (w2i w)) + (if geWord# w (i2w 0#) then 0 else  2*(toInteger maxInt + 1))
+               let i = toInteger (I# (w2i w)) + (if geWord# w (i2w 0#) then 0 else  2*(toInteger maxBound + 1))
                in  showString (conv 8 i)
 
 conv :: Int -> Integer -> String
 conv 0 _ = ""
-conv n i = conv (n-1) q ++ ["0123456789ABCDEF"!!r] where (q, r) = quotRem i 16
+
+-- 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)
index 6b7f8b6..1a0bc27 100644 (file)
@@ -17,4 +17,4 @@ ss = sin * sin
 cc = cos * cos
 tt = ss + cc
 
-main _ = [AppendChan stdout ((show (tt 0.4))++ "  "++(show (tt 1.652)))]
+main = putStr ((show (tt 0.4))++ "  "++(show (tt 1.652)))
index 070ba34..2f45cdb 100644 (file)
@@ -6,7 +6,6 @@
 
 module Main where
 
-main :: Dialogue
 main = print (final nums)
 
 nums :: [Int]
index d4a7e49..10d9ca1 100644 (file)
@@ -52,7 +52,7 @@ SCCS: %W% %G%
 >                              [ x ] ++
 >                        qsort [ u | u<-xs, u>=x ]
 
-> undefined = error "undefined"
+> --1.3: undefined = error "undefined"
 
 \end{vb}
 
index 69fce4c..b617a36 100644 (file)
@@ -91,11 +91,11 @@ Synonyms for various combinators.
 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 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)
+> a >> b    = a >>= (\_ -> b)
 
 \end{verbatim}\end{vb}\end{Def}
 
@@ -107,7 +107,7 @@ an unhandled error, perform the second job.
 
 
 > (?)       :: Job s s a -> Job s s a -> Job s s a   
-> (a ? b)   = a `handle` (\x -> b)
+> a ? b     = a `handle` (\x -> b)
 
 \end{verbatim}\end{vb}\end{Def}
 
@@ -245,7 +245,7 @@ position.
 \begin{vb}
 
 > clearScreen :: Task s s
-> clearScreen = putStr (map chr [27, 91, 72, 27, 91, 50, 74])
+> clearScreen = putStr (map toEnum [27, 91, 72, 27, 91, 50, 74])
 
 
 \end{verbatim}\end{vb}\end{Def}
index fff58a9..fc81f00 100644 (file)
@@ -5,6 +5,7 @@
 %\begin{verbatim}
 
 > module Lib where
+> import Char(isDigit) -- 1.3
 > import GoferPreludeBits
 
 % 
@@ -100,7 +101,7 @@ minuses into an integer.
 >              = loop 0 xs where
 >           loop n [] = n
 >           loop n (' ':xs) = n
->           loop n (x:xs) | isDigit x = loop (10*n+(ord x - ord '0')) xs
+>           loop n (x:xs) | isDigit x = loop (10*n+(fromEnum x - fromEnum '0')) xs
 >                                | otherwise = error ("strToInt: " ++ xs)
 
 > toFloat :: Real a => a -> Float
@@ -326,7 +327,7 @@ into [[Int]]
 \begin{Def}{writeTable} the converse of readTable.
 \begin{vb}
 
-> writeTable:: Text a => [[a]] -> String
+> writeTable:: Show{-was:Text-} a => [[a]] -> String
 > writeTable = unlines . map unwords . (map . map) show
 
 \end{verbatim}\end{vb}\end{Def}
@@ -334,7 +335,7 @@ into [[Int]]
 \begin{Def}{writeTableN} like readTable, but number each line.
 \begin{vb}
 
-> writeTableN:: Text a => [[a]] -> String
+> writeTableN:: Show{-was:Text-} a => [[a]] -> String
 > writeTableN = layn . map unwords . (map . map) show
 
 \end{verbatim}\end{vb}\end{Def}
index bb2ce34..3335e10 100644 (file)
@@ -54,7 +54,7 @@ A packeage for log representations of numbers.
 
 > instance RealFrac Lognum
 
-> instance Text 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
index f130fdd..f588424 100644 (file)
@@ -399,7 +399,7 @@ This is a distribution of a continuous variable in the range 0 to 1.
 \EndFile
 
 
-  tabulate2D :: (Text a, Text b, Text c) => Int -> [a] -> [b] -> (a->b->c) -> String
+  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" ++
@@ -411,7 +411,7 @@ This is a distribution of a continuous variable in the range 0 to 1.
 >        jshow2' x = (ljustify (w*2) (take w (show x))) ++ " "
 >        
 
-> tabulate1D :: (Text a, Text b) => Int -> [a] -> (a->b) -> String
+> 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]
index 833ea72..7264c53 100644 (file)
@@ -19,3 +19,6 @@ main=interact
 b=g
 --p::(Integer,Integer)->Integer->Integer
 default (Integer)
+-- 1.3
+ord = (fromEnum :: Char -> Int)
+chr = (toEnum   :: Int  -> Char)
index b039558..360a411 100644 (file)
@@ -1,20 +1,20 @@
 module Main where
 
-data Vertex = V Int deriving (Text)
+data Vertex = V Int deriving (Read, Show)
 
-main::Dialogue
-main = readChan stdin exit (\userInput -> (parseVertex.lines) userInput report)
+main = do
+    userInput <- getContents
+    (parseVertex.lines) userInput report
 
-report::Vertex -> Dialogue
-report int = appendChan "stdout" (show int) exit done
+report::Vertex -> IO ()
+report int = putStr (show int)
 
-parseVertex::[String] -> (Vertex -> Dialogue) -> Dialogue
+parseVertex::[String] -> (Vertex -> IO ()) -> IO ()
 parseVertex inputLines cont
- = (case inputLines of
+ = case inputLines of
       (l1:rest) -> case (reads l1) of
                      [(x,"")] -> cont x
-                     other        -> appendChan stdout
-
+                     other    -> putStr
                                       ((showString "Error - retype the edges\n".                                      shows other) "")
-                                     exit done
-      _         -> appendChan stdout "No Vertex" exit done)
+      _         -> putStr "No Vertex"
+
index 48d62c8..be11a6f 100644 (file)
@@ -3,7 +3,7 @@ import LogFun
 import Signal
 
 data Bit = Bot | WeakZero | WeakOne | Zero | One | Top
-  deriving (Eq,Text)
+  deriving (Eq,Show{-was:Text-})
 
 instance Static Bit where
   intToSig = intToSigBit
@@ -21,7 +21,7 @@ instance Lattice Bit where
 instance Signal Bit where
   showSig = showBit
   initial = Zero
-  zero    = Zero
+  zerO    = Zero
   one     = One
   tt1     = tt1Bit
   tt2     = tt2Bit
index 534d2de..a1907dc 100644 (file)
@@ -2,8 +2,7 @@ module Main where
 import Signal
 import Bit
 
-main xs =
-  [AppendChan stdout test]
+main = putStr test
 
 test = stest
 
index 003d50e..38a1fc8 100644 (file)
@@ -2,10 +2,10 @@ module Signal where
 
 import LogFun
 
-class (Eq a, Text a, Num a) => Signal a where
+class (Eq a, Show{-was:Text-} a, Num a) => Signal a where
   showSig :: a -> String
 
-  zero, one, initial :: a
+  zerO, one, initial :: a
 
   tt1 :: TT1 -> a -> a
   tt2 :: TT2 -> a -> a -> a
@@ -70,7 +70,7 @@ class (Lattice a, Static a) => Log a where
 class (Lattice a, Dynamic a) => Sig a where
   dumSig :: a
 
-data Stream a = Snil | Scons a (Stream a)  deriving (Eq,Text)
+data Stream a = Snil | Scons a (Stream a)  deriving (Eq,Show{-was:Text-})
 
 shead :: Stream a -> a
 shead (Scons x xs) = x
@@ -89,10 +89,14 @@ smap f (Scons x xs) = Scons (f x) (smap f xs)
 stake, sdrop :: Int -> Stream a -> Stream a
 
 stake 0 xs = xs
-stake (i+1) (Scons x xs) = Scons x (stake i 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
-sdrop (i+1) (Scons x xs) = sdrop i 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 =
@@ -123,7 +127,7 @@ instance (Lattice a, Static a) => Lattice (Stream a) where
   pass     = smap2 pass
 
 instance (Signal a, Static a) => Signal (Stream a) where
-  zero = srepeat zero
+  zerO = srepeat zerO
   one  = srepeat one
   tt1  = smap . tt1
   tt2  = smap2 . tt2
index 86f2a33..bc629da 100644 (file)
@@ -1 +1 @@
-Scons (One) (Scons (One) (Scons (One) (Scons (One) (Scons (One) (Scons (One) (Sc
\ No newline at end of file
+Scons One (Scons One (Scons One (Scons One (Scons One (Scons One (Scons One (Sco
\ No newline at end of file
index bbff86b..453d7b5 100644 (file)
@@ -3,7 +3,9 @@
 -- 
 module Main where 
 
-data Maybe a = Nothing | Just a
+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
@@ -101,9 +103,9 @@ xref stab lineno (c:cs)
         in  xref (avAdd stab (c:word) lineno) lineno rest
      else xref stab lineno cs
 
-main resps = [ReadChan stdin,
-              AppendChan stdout (pp_tree (xref ALeaf 1
-                (case resps !! 0 of Str s -> s)))]
+main = do
+    s <- getContents
+    putStr (pp_tree (xref ALeaf 1 s))
 
 {-
 Date: Thu, 29 Oct 92 19:38:31 GMT
index 09d98fe..10d20a5 100644 (file)
@@ -25,7 +25,7 @@ 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 (chr (ord x + (32::Int)):ys, zs)
+                   then (toEnum (fromEnum x + (32::Int)):ys, zs)
                    else (x:ys, zs)
    | otherwise 
    = ([],xs)
@@ -59,8 +59,15 @@ 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
+-}
index 0fe50fe..6f00ec6 100644 (file)
@@ -10,7 +10,9 @@ Ghc has the wrong semantics for arrays as exemplified by this simple
 program:
 -}
 
-main = print (array (1,1) [ 1:=2, 1:=3 ])
+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
index 1312479..c45e4b2 100644 (file)
@@ -21,6 +21,4 @@ one that works.
 -- I have turned this into a general test of extreme constants.
 -- WDP 94/12
 
-main _ = [
- AppendChan stdout (shows (1.82173691287639817263897126389712638972163e-300::Double) "\n")
- ]
+main = putStr (shows (1.82173691287639817263897126389712638972163e-300::Double) "\n")
index 51aa418..dcd009c 100644 (file)
@@ -21,15 +21,15 @@ ePostscript (reqdx,reqdy) str = initialise (stdheader++
        showpage
 
 initGraph title pedata (topX,topY) (xlabel,ylabel) keys = 
-       drawBox (Pt 0 0) paperX paperY ++  -- setup graphwindow
+       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 ++                      -- set origin
-       newpath ++ moveto (Pt 0 (-5)) ++ lineto (Pt 0 dimY) ++  -- print axis
-        moveto (Pt (-5) 0) ++ lineto (Pt dimX 0) ++ stroke ++   -- x and y
+       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++
index f4ace48..847ed63 100644 (file)
@@ -11,9 +11,9 @@ data Tuple2 a b = T2 a b
 data Tuple3 a b c = T3 a b c
 
 
-main resps = [AppendChan stdout (listChar_string
+main = putStr (listChar_string
                     (append1 (C1 '\FF' N)
-                             (life1 (generations ()) (start ()))))]
+                             (life1 (generations ()) (start ()))))
 
 listChar_string :: L Char -> String
 listChar_string N = []
@@ -175,12 +175,16 @@ iterate1 f x = C1 x (iterate1 f (f x))
 take1 :: Int -> L (L Int) -> L (L Int)
 take1 0 _ = N
 take1 _ N = N
-take1 (n+1) (C1 x xs) = C1 x (take1 n xs)
+--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
-take2 (n+1) (C1 x xs) = C1 x (take2 n xs)
+--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))
index 2195671..049d8bf 100644 (file)
@@ -1,3 +1,5 @@
+import Array -- 1.3
+
 val1, val2 :: Array (Int,Int) Int
 val1 = array ((1,2), (2,1)) []
 val2 = array ((2,1), (1,2)) []
index a134da3..42d7bc4 100644 (file)
@@ -5,13 +5,13 @@
 >     showit, showits, new_line, pad
 >     ) where
 
-> type Cont  =  Dialogue
+> type Cont  =  IO () --was: Dialogue
 
 > showit :: (Text a) => a -> Cont -> Cont
-> showit x c  =  appendChan stdout (show x) exit c
+> showit x c  =  putStr (show x) >> c
 
 > showits :: String -> Cont -> Cont
-> showits x c  =  appendChan stdout x exit c
+> showits x c  =  putStr x >> c
 
 > new_line :: Cont -> Cont
 > new_line  =  showits "\n"
index cbc9c87..e988175 100644 (file)
@@ -15,9 +15,8 @@ used in expressions, but does not determine the characteristics.
 > flp_val :: Float
 > flp_val = 1
 
-> main :: Dialogue
 > main  =  (initial_checks flp_parms . main_identities flp_parms .
->           notification_checks flp_parms) done
+>           notification_checks flp_parms) (return ())
 >          where
 >          flp_parms  =  makeFloatParms flp_val
 
index 844a26a..a502652 100644 (file)
@@ -7,6 +7,9 @@ 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
@@ -19,7 +22,7 @@ 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]
+        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
@@ -31,7 +34,7 @@ ar_list = [[1,2,3],
            [6,7,8],
            [10,12,15]]
 
-main = appendChan stdout (show ar) abort done
+main = putStr (show ar)
 
 {-
 What it tries to do is turn a list of lists into a 2-d array in an incremental
index 1538764..dd3e055 100644 (file)
@@ -1 +1 @@
-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]
\ No newline at end of file
+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)]
\ No newline at end of file
index 8aa7e85..6901c5c 100644 (file)
@@ -17,6 +17,7 @@ Need to use modules for matrix and vector operations.
 
 > import {-fool mkdependHS-}
 >       Random
+> import List(transpose)
 > infixl 7 $$
 
 -------------------------------------------------------------------------------
@@ -100,10 +101,13 @@ a reasonable level.
 > trainweights :: Egs -> Weights -> Int -> Double -> Double
 >              -> [Int] -> (Weights, [Double])
 > trainweights _   ws 0       _   _   _  = (ws, [])
-> trainweights egs ws (eps+1) err eta rs
+> --should be:trainweights egs ws (eps+1) err eta rs
+> trainweights egs ws eps err eta rs
+>    | eps < 0 = error "BpGen.trainweights"
+>    | otherwise
 >    = let (ws',rs')   = trainepoch egs ws (length egs) eta rs
 >         newerr       = calcerror ws' egs
->         (ws'', errs) = trainweights egs ws' eps err eta rs'
+>         (ws'', errs) = trainweights egs ws' (eps-1) err eta rs'
 >      in if newerr < err then (ws',  [newerr])
 >                        else (ws'', newerr:errs)
 
@@ -113,10 +117,13 @@ as well as selecting an example.
 
 > trainepoch :: Egs -> Weights -> Int -> Double -> [Int] -> (Weights, [Int])
 > trainepoch _   ws 0        _   rs     = (ws,rs)
-> trainepoch egs ws (egno+1) eta (r:rs)
+> --should be: trainepoch egs ws (egno+1) eta (r:rs)
+> trainepoch egs ws egno eta (r:rs)
+>    | egno < 0 = error "BpGen.trainepoch"
+>    | otherwise
 >    = let (x,t) = egs !! r
 >         ws'   = backprop eta (classeg ws x) ws t
->      in trainepoch egs ws' egno eta rs
+>      in trainepoch egs ws' (egno-1) eta rs
 
 
 backprop causes weight changes after calculating the change
@@ -177,7 +184,10 @@ The weight sizes are taken from the list of dimensions.
 
 > multSplitAt :: Int -> Int -> [a] -> ([[a]],[a])
 > multSplitAt inner 0 xs = ([], xs)
-> multSplitAt inner (outer + 1) xs
+> --should be:multSplitAt inner (outer + 1) xs
+> multSplitAt inner outer xs
+>   | outer < 0 = error "BpGen.multSplitAt"
+>   | otherwise
 >     = let (l,  xs')  = splitAt inner xs
->          (ls, xs'') = multSplitAt inner outer xs'
+>          (ls, xs'') = multSplitAt inner (outer-1) xs'
 >       in (l:ls, xs'')
index 36872e8..5eed87f 100644 (file)
@@ -35,10 +35,9 @@ The following constants set the training problem and parameters:
 |                      IO and Main Program                                   |
 -------------------------------------------------------------------------------
 
-> main :: Dialogue
-> main = readFile name exit $
->        \s -> appendChan stdout (program s "") exit $
->       done
+> main = do
+>   s <- readFile name
+>   putStr (program s "")
 
 > program :: String -> ShowS
 > program s
index 36804a2..5303e7a 100644 (file)
@@ -13,7 +13,7 @@ Thanks to Paul Hudak for suggestions concerning getVals.
 
 readWhiteList reads a white-spaced list from a given string
 
-> readWhiteList :: (Text a) => String -> [a]
+> readWhiteList :: (Read a) => String -> [a]
 > readWhiteList = getVals reads
 
 
index 95e7a7d..191a839 100644 (file)
@@ -2,9 +2,7 @@ module Main where
 
 import PreludeGlaST
 
-main =
-       appendChan stdout (shows res "\n")
-       exit done
+main = putStr (shows res "\n")
        where
        res = unsafePerformPrimIO (
                ca `thenPrimIO` \r -> returnPrimIO r)
index 67f7ad0..6a0e60d 100644 (file)
@@ -1 +1 @@
--42
\ No newline at end of file
+-42
index f70d7bb..d81cc07 100644 (file)
@@ -1 +1 @@
-42
\ No newline at end of file
+42
index f70d7bb..d81cc07 100644 (file)
@@ -1 +1 @@
-42
\ No newline at end of file
+42
index f11c82a..ec63514 100644 (file)
@@ -1 +1 @@
-9
\ No newline at end of file
+9
index 8cbe45b..12bd33f 100644 (file)
@@ -1 +1 @@
-196596
\ No newline at end of file
+196596
index ca7bf83..b1bd38b 100644 (file)
@@ -1 +1 @@
-13
\ No newline at end of file
+13
index 7813681..7ed6ff8 100644 (file)
@@ -1 +1 @@
-5
\ No newline at end of file
+5
index 3cacc0b..48082f7 100644 (file)
@@ -1 +1 @@
-12
\ No newline at end of file
+12
index 7813681..7ed6ff8 100644 (file)
@@ -1 +1 @@
-5
\ No newline at end of file
+5
index c793025..7f8f011 100644 (file)
@@ -1 +1 @@
-7
\ No newline at end of file
+7
index f70d7bb..d81cc07 100644 (file)
@@ -1 +1 @@
-42
\ No newline at end of file
+42
index f70d7bb..d81cc07 100644 (file)
@@ -1 +1 @@
-42
\ No newline at end of file
+42
index 06eef43..a865e6b 100644 (file)
@@ -1 +1 @@
-"43\n"
\ No newline at end of file
+"43\n"
index 45a0bb4..418dd93 100644 (file)
@@ -1 +1 @@
-"-42.0000000 -42.000000000000000\n"
\ No newline at end of file
+"-42.0000000 -42.000000000000000\n"
index 9b57b6f..d48e280 100644 (file)
@@ -1,4 +1,4 @@
-module Main ( mainPrimIO ) where
+module GHCmain ( mainPrimIO ) where
 
 import PreludeGlaST
 
index 432acfd..b39fdbc 100644 (file)
@@ -1,9 +1,9 @@
 --!!! 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"
-        )))))))))))
+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"
+       )))))))))))
index 9c125cb..5206c8f 100644 (file)
@@ -27,6 +27,7 @@ instance Foo a => Foo [a] where
     op1 a b = null a
 
 -- try it:
-main _ = [ AppendChan stdout (show (op2 (3::Int)    3.14159)),
-          AppendChan stdout (show (op2 'X'         3.14159)),
-          AppendChan stdout (show (op2 ([]::[Char])3.14159)) ]
+main = do
+    putStr (show (op2 (3::Int)    3.14159))
+    putStr (show (op2 'X'        3.14159))
+    putStr (show (op2 ([]::[Char])3.14159))
index f3bc3c5..0c43ba1 100644 (file)
@@ -1,6 +1,6 @@
 --!!! test of datatype with many unboxed fields
 --
-main _ = [AppendChan stdout (shows (selectee1 + selectee2) "\n")]
+main = putStr (shows (selectee1 + selectee2) "\n")
 
 data Tfo = Tfo Float# Float# Float# Float# Float# Float# Float# Float# Float# Float# Float# Float#
 
index 71c979f..6c23c82 100644 (file)
@@ -1 +1 @@
-123400.000
\ No newline at end of file
+123400.000
index d7d17fc..3a2e3f4 100644 (file)
@@ -1 +1 @@
--1
\ No newline at end of file
+-1
index 4f897cd..a04f174 100644 (file)
@@ -24,9 +24,7 @@
 
 module Main where
 
---main :: Dialogue
-
-main _ = munch 100000 (inf 3)
+main = munch 100000 (inf 3)
 
 data Stream a
   = MkStream a a a a a a a a a (Stream a)
@@ -35,13 +33,13 @@ data Stream a
 inf :: Int -> Stream Int
 inf n = MkStream n n n n n n n n n (inf n)
 
-munch :: Int -> Stream a -> [Request]
+munch :: Int -> Stream a -> IO ()
 
-munch n Empty = [] -- error "this never happens!\n"
+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 _ = [AppendChan stdout "I succeeded!\n"]
+munch 0 _ = putStr "I succeeded!\n"
 munch n s = case (f n s) of
              (True, rest) -> rest
              (False, _)   -> error "this never happens either\n"
index 89228d7..78b6881 100644 (file)
@@ -3,8 +3,8 @@
 
 module Main where
 
-main _ = [f (AppendChan stdout "a")
-           (take 1000000 (repeat True))
-           (AppendChan stdout "b")]
+main = f (putStr "a")
+        (take 1000000 (repeat True))
+        (putStr "b")
 
 f a ns b = if last ns then a else b
index 1065079..6c2a3dc 100644 (file)
@@ -641,11 +641,7 @@ Finally:
 
 --> testq tt = (layn . map show' . nub) (enumerate tt)
 
-> main resps 
->    = [AppendChan stdout 
->         (show 
->             (apply_cds `myElem` (enumerate (Fn [Fn [Two], Two])))
->         )]
+> main = putStr (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 
index 406e5fb..7fa997c 100644 (file)
@@ -1,7 +1,7 @@
 --!!! test super-dictionary grabification
 --
 
-main _ = [AppendChan stdout (show (is_one (1.2::Double)))]
+main = putStr (show (is_one (1.2::Double)))
 
 is_one :: RealFloat a => a -> Bool
 
index 28e927d..02b8d8a 100644 (file)
@@ -1,25 +1,20 @@
 --!!! test various I/O Requests
 --
 --
+import IO
+import System
 import Trace
 
-main  = getProgName                        exit ( \ prog ->
-       appendChan stderr (shows prog "\n") exit (
-
-       getArgs                             exit ( \ args ->
-       appendChan stderr (shows args "\n") exit (
-
-       getEnv "PATH"                       exit ( \ path ->
-       appendChan stderr (shows path "\n") exit (
-
-       readChan stdin                      exit ( \ stdin_txt ->
-       appendChan stdout stdin_txt         exit (
-
-       readFile (head args)                exit ( \ file_cts ->
-       appendChan stderr file_cts          exit (
-
-       trace "hello, trace"                     (
-       getEnv "__WURBLE__" (error "hello, error\n") ( \ _ ->
-
-       done
-       ))))))))))))
+main = do
+    prog <- getProgName
+    hPutStr stderr (shows prog "\n")
+    args <- getArgs
+    hPutStr stderr (shows args "\n")
+    path <- getEnv "PATH"
+    hPutStr stderr (shows 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\n")
index 830c8a1..8d5896c 100644 (file)
@@ -1,31 +1,26 @@
 "cg025"
 ["Main.hs"]
-"/users/fp/partain/bin:/users/fp/partain/bin/alpha-dec-osf2:/usr/local/bin:/usr/local/gnu/bin:/usr/local/gnu/bin/alpha-dec-osf2:/usr/local/gnu/bin/mh/alpha-dec-osf2:/usr/local/tex/bin:/local/fp/bin:/local/fp/bin/alpha-dec-osf2:/local/fp/spat/shade.v8/bin:/local/fp/spat/spixtools.v8/bin:/local/alpha/bin:/usr/X11/local/bin:/usr/X11R6/bin:/usr/X11/bin:/bin:/usr/bin:/usr/ccs/bin:/sbin:/usr/ucb:/usr/etc:/etc:."
+"/users/fp/partain/bin:/users/fp/partain/bin/sparc-sun-sunos4:/usr/local/bin:/usr/local/gnu/bin:/usr/local/gnu/bin/sparc-sun-sunos4:/usr/local/gnu/bin/mh/sparc-sun-sunos4:/usr/local/tex/bin/sparc-sun-sunos4:/local/fp/bin:/local/fp/bin/sparc-sun-sunos4:/local/fp/spat/shade.v8/bin:/local/fp/spat/spixtools.v8/bin:/local/sun4/bin:/usr/X11/local/bin:/usr/X11/bin:/bin:/usr/bin:/usr/ccs/bin:/sbin:/usr/ucb:/usr/etc:/etc:."
 --!!! test various I/O Requests
 --
 --
+import IO
+import System
 import Trace
 
-main  = getProgName                        exit ( \ prog ->
-       appendChan stderr (shows prog "\n") exit (
-
-       getArgs                             exit ( \ args ->
-       appendChan stderr (shows args "\n") exit (
-
-       getEnv "PATH"                       exit ( \ path ->
-       appendChan stderr (shows path "\n") exit (
-
-       readChan stdin                      exit ( \ stdin_txt ->
-       appendChan stdout stdin_txt         exit (
-
-       readFile (head args)                exit ( \ file_cts ->
-       appendChan stderr file_cts          exit (
-
-       trace "hello, trace"                     (
-       getEnv "__WURBLE__" (error "hello, error\n") ( \ _ ->
-
-       done
-       ))))))))))))
+main = do
+    prog <- getProgName
+    hPutStr stderr (shows prog "\n")
+    args <- getArgs
+    hPutStr stderr (shows args "\n")
+    path <- getEnv "PATH"
+    hPutStr stderr (shows 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\n")
 Trace On:
 hello, trace
 Trace Off.
index 56598be..e42f86a 100644 (file)
@@ -4,14 +4,16 @@ module Main ( main ) where
 
 import PreludeGlaST
 
-main _ = [AppendChan stdout
+import Ratio -- 1.3
+import Array -- 1.3
+
+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#)
@@ -21,7 +23,7 @@ test_chars
   = let str = reverse "Now is the time for all good men to come to...\n"
     in
     unsafePerformPrimIO (
-       _ccall_ fprintf (``stdout''::_Addr) "%d %s\n" 93 str `seqPrimIO`
+       _ccall_ fprintf (``stdout''::Addr) "%d %s\n" 93 str >>
        returnPrimIO ""
        )
 
@@ -33,29 +35,29 @@ test_ints
     in
        shows (lookup_range arr# 42# 416#) "\n"
   where
-    f :: Int -> _ByteArray Int
+    f :: Int -> ByteArray Int
 
     f size@(I# size#)
-      = _runST (
+      = runST (
            -- allocate an array of the specified size
-         newIntArray (0, (size-1))     `thenST` \ arr# ->
+         newIntArray (0, (size-1))     >>= \ arr# ->
 
            -- fill in all elements; elem i has i^2 put in it
-         fill_in arr# 0# (size# `minusInt#` 1#) `seqST`
+         fill_in arr# 0# (size# `minusInt#` 1#) >>
 
            -- freeze the puppy:
          freezeIntArray arr#
        )
 
-    fill_in :: _MutableByteArray s Int -> Int# -> Int# -> _ST s ()
+    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
 
     fill_in arr_in# first# last#
       = if (first# ># last#)
        then returnST ()
-       else writeIntArray arr_in# (I# first#) (I# (first# *# first#)) `seqST`
+       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 :: ByteArray Int -> Int# -> Int# -> [Int]
     lookup_range arr from# to#
       = if (from# ># to#)
        then []
@@ -70,30 +72,30 @@ test_addrs
     in
        shows (lookup_range arr# 42# 416#) "\n"
   where
-    f :: Int -> _ByteArray Int
+    f :: Int -> ByteArray Int
 
     f size@(I# size#)
-      = _runST (
+      = runST (
            -- allocate an array of the specified size
-         newAddrArray (0, (size-1))    `thenST` \ arr# ->
+         newAddrArray (0, (size-1))    >>= \ arr# ->
 
            -- fill in all elements; elem i has i^2 put in it
-         fill_in arr# 0# (size# `minusInt#` 1#) `seqST`
+         fill_in arr# 0# (size# `minusInt#` 1#) >>
 
            -- freeze the puppy:
          freezeAddrArray arr#
        )
 
-    fill_in :: _MutableByteArray s Int -> Int# -> Int# -> _ST s ()
+    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
 
     fill_in arr_in# first# last#
       = if (first# ># last#)
        then returnST ()
        else writeAddrArray arr_in# (I# first#)
-                           (A# (int2Addr# (first# *# first#))) `seqST`
+                           (A# (int2Addr# (first# *# first#))) >>
             fill_in arr_in# (first# +# 1#) last#
 
-    lookup_range :: _ByteArray Int -> Int# -> Int# -> [ Int ]
+    lookup_range :: ByteArray Int -> Int# -> Int# -> [ Int ]
     lookup_range arr from# to#
       = let
            a2i (A# a#) = I# (addr2Int# a#)
@@ -111,29 +113,29 @@ test_floats
     in
        shows (lookup_range arr# 42# 416#) "\n"
   where
-    f :: Int -> _ByteArray Int
+    f :: Int -> ByteArray Int
 
     f size@(I# size#)
-      = _runST (
+      = runST (
            -- allocate an array of the specified size
-         newFloatArray (0, (size-1))   `thenST` \ arr# ->
+         newFloatArray (0, (size-1))   >>= \ arr# ->
 
            -- fill in all elements; elem i has "i * pi" put in it
-         fill_in arr# 0# (size# `minusInt#` 1#) `seqST`
+         fill_in arr# 0# (size# `minusInt#` 1#) >>
 
            -- freeze the puppy:
          freezeFloatArray arr#
        )
 
-    fill_in :: _MutableByteArray s Int -> Int# -> Int# -> _ST s ()
+    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
 
     fill_in arr_in# first# last#
       = if (first# ># last#)
        then returnST ()
-       else writeFloatArray arr_in# (I# first#) ((fromInt (I# first#)) * pi) `seqST`
+       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 :: ByteArray Int -> Int# -> Int# -> [Float]
     lookup_range arr from# to#
       = if (from# ># to#)
        then []
@@ -148,29 +150,29 @@ test_doubles
     in
        shows (lookup_range arr# 42# 416#) "\n"
   where
-    f :: Int -> _ByteArray Int
+    f :: Int -> ByteArray Int
 
     f size@(I# size#)
-      = _runST (
+      = runST (
            -- allocate an array of the specified size
-         newDoubleArray (0, (size-1))  `thenST` \ arr# ->
+         newDoubleArray (0, (size-1))  >>= \ arr# ->
 
            -- fill in all elements; elem i has "i * pi" put in it
-         fill_in arr# 0# (size# `minusInt#` 1#) `seqST`
+         fill_in arr# 0# (size# `minusInt#` 1#) >>
 
            -- freeze the puppy:
          freezeDoubleArray arr#
        )
 
-    fill_in :: _MutableByteArray s Int -> Int# -> Int# -> _ST s ()
+    fill_in :: MutableByteArray s Int -> Int# -> Int# -> ST s ()
 
     fill_in arr_in# first# last#
       = if (first# ># last#)
        then returnST ()
-       else writeDoubleArray arr_in# (I# first#) ((fromInt (I# first#)) * pi) `seqST`
+       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 :: ByteArray Int -> Int# -> Int# -> [Double]
     lookup_range arr from# to#
       = if (from# ># to#)
        then []
@@ -189,19 +191,19 @@ test_ptrs
     f :: Int -> Array Int (Ratio Int)
 
     f size
-      = _runST (
-         newArray (1, size) (3 % 5)    `thenST` \ arr# ->
+      = runST (
+         newArray (1, size) (3 % 5)    >>= \ arr# ->
          -- don't fill in the whole thing
-         fill_in arr# 1 400            `seqST`
+         fill_in arr# 1 400            >>
          freezeArray arr#
        )
 
-    fill_in :: _MutableArray s Int (Ratio Int) -> Int -> Int -> _ST s ()
+    fill_in :: MutableArray s Int (Ratio Int) -> Int -> Int -> ST s ()
 
     fill_in arr_in# first last
       = if (first > last)
        then returnST ()
-       else writeArray arr_in# first (fromInt (first * first)) `seqST`
+       else writeArray arr_in# first (fromInt (first * first)) >>
             fill_in  arr_in# (first + 1) last
 
     lookup_range :: Array Int (Ratio Int) -> Int -> Int -> [Ratio Int]
index 9de1d49..abc4a3b 100644 (file)
@@ -3,8 +3,8 @@
 
 class (Num a, Integral a) => Foo a
 
-main _ = [AppendChan stdout (shows (f ((fromInteger 21)::Foo a => a)
-                                     ((fromInteger 37)::Foo a => a)) "\n")]
+main = putStr (shows (f ((fromInteger 21)::Foo a => a)
+                       ((fromInteger 37)::Foo a => a)) "\n")
 
 f :: Foo a => a -> a -> Integer
 
index 0e02505..3fa877c 100644 (file)
@@ -1,4 +1,4 @@
-main _ = [AppendChan stdout (shows (f (read "42.0")) "\n")]
+main = putStr (shows (f (read "42.0")) "\n")
 
 -- f compiled to bogus code with ghc 0.18 and earlier
 -- switch() on a DoubleReg
index 744b6a6..f2aadad 100644 (file)
@@ -1,3 +1,5 @@
+module GHCmain 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...
 
index 1af160d..4cf54fc 100644 (file)
@@ -1 +1,5 @@
+module GHCmain where
+
+import PreludeGlaST
+
 mainPrimIO = _ccall_ puts "123\n"
index cc19a19..bede4b6 100644 (file)
@@ -3,8 +3,9 @@
 --
 module Main ( main ) where
 
-main _ = [AppendChan stdout (shows (sum ([1..1{-30-}]++[1..1{-40-}]++[11,22])) "\n"),
-         AppendChan stdout (shows (prog 1{-30-} 1{-40-}) "\n")]
+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#
index 47e3697..ace9189 100644 (file)
@@ -1,9 +1,12 @@
 --!! pattern-matching failure on functions that return Int#
 
-main resps = [AppendChan stdout (shows (I# (foo bar1 bar2)) "\n")]
+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]
index 5d50d86..e206f99 100644 (file)
@@ -1,7 +1,7 @@
 --!! worker/wrapper turns ( \ <absent> -> Int# ) function
 --!! into Int# -- WRONG
 
-main resps = [AppendChan stdout (shows true_or_false "\n")]
+main = putStr (shows true_or_false "\n")
   where
     true_or_false
       = case (cmp_name True imp1 imp2) of
index 2a68806..2f01c9b 100644 (file)
@@ -1,4 +1,6 @@
-main _ = [AppendChan stdout (
+import Ratio -- 1.3
+
+main = putStr (
    shows tinyFloat  ( '\n'
  : shows t_f       ( '\n'
  : shows hugeFloat  ( '\n'
@@ -11,7 +13,7 @@ main _ = [AppendChan stdout (
  : shows x_d       ( '\n'
  : shows y_f       ( '\n'
  : shows y_d       ( "\n"
- )))))))))))))]
+ )))))))))))))
   where
     t_f :: Float
     t_d :: Double
index 6029ae0..eef6e01 100644 (file)
@@ -8,5 +8,4 @@ po rd = 0.5 + 0.5 * erf ((rd / 1.04) / sqrt 2)
     erf :: Double -> Double
     erf x = unsafePerformPrimIO (_ccall_ erf x)
 
-main :: Dialogue
-main _ = [AppendChan stdout (shows (po 2.0) "\n")]
+main = putStr (shows (po 2.0) "\n")
index 00a7736..b32f67f 100644 (file)
@@ -4,7 +4,7 @@
 --
 module Main ( main, g ) where
 
-main _ = [AppendChan stdout (shows (g 42) "\n")]
+main = putStr (shows (g 42) "\n")
 
 g :: Int -> Int -> Int -> (Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int)
 
diff --git a/GHC_ONLY/cg039/Jmakefile b/GHC_ONLY/cg039/Jmakefile
new file mode 100644 (file)
index 0000000..7833ce9
--- /dev/null
@@ -0,0 +1 @@
+NoFibOneModuleCompileAndRun(cg039,)
diff --git a/GHC_ONLY/cg039/Main.hs b/GHC_ONLY/cg039/Main.hs
new file mode 100644 (file)
index 0000000..e2a40fc
--- /dev/null
@@ -0,0 +1,14 @@
+--! From a Rick Morgan bug report:
+--! Single-method class with a locally-polymorphic
+--! method.
+
+module Main where
+
+class Seq a where
+   seq :: a -> b -> b
+
+instance Seq [a] where
+   seq [] y = y
+   seq x  y = y
+
+main = print ("hurrah" `seq` "Hello, world!\n")
diff --git a/GHC_ONLY/cg039/cg039.stdout b/GHC_ONLY/cg039/cg039.stdout
new file mode 100644 (file)
index 0000000..004dc77
--- /dev/null
@@ -0,0 +1 @@
+"Hello, world!\n"
\ No newline at end of file
similarity index 100%
rename from parallel/prsa/junk
rename to GHC_ONLY/cg040/Jmakefile
diff --git a/GHC_ONLY/cg040/Main.hs b/GHC_ONLY/cg040/Main.hs
new file mode 100644 (file)
index 0000000..2edf75a
--- /dev/null
@@ -0,0 +1,19 @@
+module 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 (B1 {op1, op2}) n = op1 (op2 n)
+
+f3 :: Burble a -> Int -> Int
+f3 burb n = op1 burb (op2 burb n)
+
+f4 :: Burble [Int] -> Burble [Int]
+f4 x@(B1 {op1}) = x {op2 = \x->[x]}
+
+main = print (f2 (f1 3) 4)
diff --git a/GHC_ONLY/cg040/cg040.stdout b/GHC_ONLY/cg040/cg040.stdout
new file mode 100644 (file)
index 0000000..e69de29
index 308e9f4..b5ceae4 100644 (file)
@@ -2,6 +2,7 @@
 
 module Main where
 
+import IO
 import FiniteMap
 import Util
 
@@ -66,10 +67,10 @@ test2 size
   where
     fm1,fm2 :: FiniteMap Int Int
 
-    fms1 = [singletonFM i 1 | i <- [1..size]]
+    fms1 = [unitFM i 1 | i <- [1..size]]
     fm1 = foldr (plusFM_C (+)) emptyFM fms1
 
-    fms2 = [singletonFM 1 i | i <- [1..size]]
+    fms2 = [unitFM 1 i | i <- [1..size]]
     fm2 = foldr (plusFM_C (+)) emptyFM fms2
 
     sum1 = foldr (+) 0 (eltsFM fm1)
index 346bffb..c9a1bcf 100644 (file)
@@ -1,4 +1,4 @@
-import LibSystem (getEnv)
+import System (getEnv)
 
 main = 
     getEnv "TERM" >>= \ term -> 
index 535b471..93fff71 100644 (file)
@@ -1,4 +1,4 @@
-import LibSystem (getProgName, getArgs)
+import System (getProgName, getArgs)
 
 main = 
     getProgName >>= \ argv0 ->
index 59c745d..69d2221 100644 (file)
@@ -1,3 +1,3 @@
-import LibSystem (exitWith, ExitCode(..))
+import System (exitWith, ExitCode(..))
 
 main = exitWith (ExitFailure 42)
index a987b9f..3a41560 100644 (file)
@@ -1,11 +1,11 @@
-import LibSystem (system, ExitCode(..), exitWith)
+import System (system, ExitCode(..), exitWith)
 
 main = 
     system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
     case ec of
-        ExitSuccess   -> putStr "What?!?\n" >> fail "dog succeeded"
+        ExitSuccess   -> putStr "What?!?\n" >> fail (userError "dog succeeded")
         ExitFailure _ ->
             system "cat Main.hs 2>/dev/null" >>= \ ec ->
            case ec of
                ExitSuccess   -> exitWith ExitSuccess
-               ExitFailure _ -> putStr "What?!?\n" >> fail "cat failed"
+               ExitFailure _ -> putStr "What?!?\n" >> fail (userError "cat failed")
index a987b9f..3a41560 100644 (file)
@@ -1,11 +1,11 @@
-import LibSystem (system, ExitCode(..), exitWith)
+import System (system, ExitCode(..), exitWith)
 
 main = 
     system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
     case ec of
-        ExitSuccess   -> putStr "What?!?\n" >> fail "dog succeeded"
+        ExitSuccess   -> putStr "What?!?\n" >> fail (userError "dog succeeded")
         ExitFailure _ ->
             system "cat Main.hs 2>/dev/null" >>= \ ec ->
            case ec of
                ExitSuccess   -> exitWith ExitSuccess
-               ExitFailure _ -> putStr "What?!?\n" >> fail "cat failed"
+               ExitFailure _ -> putStr "What?!?\n" >> fail (userError "cat failed")
index c6fc539..6eb862c 100644 (file)
@@ -1,4 +1,6 @@
+import IO -- 1.3
+
 main =
     hClose stderr >>
-    hPutStr stderr "junk" `handle` \ (IllegalOperation _) -> putStr "Okay\n"
+    hPutStr stderr "junk" `catch` \ err -> if isIllegalOperation err then putStr "Okay\n" else error "Not okay\n"
 
index d6c94d8..467382f 100644 (file)
@@ -1,6 +1,11 @@
+import IO -- 1.3
+
 main =
     openFile "io007.in" ReadMode >>= \ hIn ->
-    hPutStr hIn "test" `handle`
-    \ (IllegalOperation _) -> 
+    hPutStr hIn "test" `catch`
+    \ err ->
+        if isIllegalOperation err then
         hGetContents hIn >>= \ stuff ->
         hPutStr stdout stuff
+       else
+           error "Oh dear\n"
index 51685c9..47f1a6e 100644 (file)
@@ -1,4 +1,7 @@
-import LibDirectory (removeFile)
+import IO -- 1.3
+import GHCio
+
+import Directory (removeFile)
 
 main =
     openFile "io008.in" ReadMode >>= \ hIn ->
@@ -14,5 +17,5 @@ main =
 
 copy :: Handle -> Handle -> IO ()
 copy hIn hOut =
-    try (hGetChar hIn) >>=
-    either (\ EOF -> return ()) ( \ x -> hPutChar hOut x >> copy hIn hOut)
+    tryIO (hGetChar hIn) >>=
+    either (\ err -> if isEOFError err then return () else error "copy") ( \ x -> hPutChar hOut x >> copy hIn hOut)
index b1bc0f2..5f95ce0 100644 (file)
@@ -1,7 +1,6 @@
-import LibDirectory (getDirectoryContents)
+import Directory (getDirectoryContents)
 import QSort (sort)
 
 main =
     getDirectoryContents "." >>= \ names ->
-    putText (sort names) >>
-    putChar '\n'
\ No newline at end of file
+    print (sort names)
index 5e5b0c3..7fa0327 100644 (file)
@@ -1,4 +1,4 @@
-import LibDirectory (getCurrentDirectory, setCurrentDirectory, 
+import Directory (getCurrentDirectory, setCurrentDirectory, 
                      createDirectory, removeDirectory, getDirectoryContents)
 
 main =
@@ -11,10 +11,10 @@ main =
         removeDirectory "foo" >>
         putStr "Okay\n"
     else
-        fail "Oops"
+        fail (userError "Oops")
 
 
 dot :: String -> Bool
 dot "." = True
 dot ".." = True
-dot _ = False
\ No newline at end of file
+dot _ = False
index 2fcbce5..97f7d90 100644 (file)
@@ -1,4 +1,6 @@
-import LibDirectory
+import IO -- 1.3
+
+import Directory
 
 main =
     createDirectory "foo" >>
index 9b7fba3..c5a16b7 100644 (file)
@@ -1,11 +1,12 @@
-import LibCPUTime
+import IO -- 1.3
+
+import CPUTime
 
 main = 
     openFile "/dev/null" WriteMode >>= \ h ->
-    hPutText h (nfib 30) >>
+    hPrint h (nfib 30) >>
     getCPUTime >>= \ t ->
-    putText t >>
-    putChar '\n'
+    print t
 
 nfib :: Integer -> Integer
 nfib n 
index 39c429e..e4249d8 100644 (file)
@@ -1,8 +1,9 @@
+import IO -- 1.3
+
 main = 
     openFile "io013.in" ReadMode >>= \ h ->
     hFileSize h >>= \ sz -> 
-    putText sz >>
-    putChar '\n' >>
+    print sz >>
     hSeek h SeekFromEnd (-3) >>
     hGetChar h >>= \ x ->
     putStr (x:"\n") >>
@@ -14,4 +15,4 @@ main =
     openFile "/dev/null" ReadMode >>= \ h ->
     hIsSeekable h >>= \ False ->
     hClose h
-    
\ No newline at end of file
+    
index 23f62ca..fecf4a5 100644 (file)
@@ -1,22 +1,22 @@
+import IO -- 1.3
+
 main = 
     accumulate (map hIsOpen [stdin, stdout, stderr]) >>= \ opens ->
-    putText opens >>
-    putChar '\n' >>
+    print opens >>
     accumulate (map hIsClosed [stdin, stdout, stderr]) >>= \ closeds ->
-    putText closeds >>
-    putChar '\n' >>
+    print closeds >>
     accumulate (map hIsReadable [stdin, stdout, stderr]) >>= \ readables ->
-    putText readables >>
-    putChar '\n' >>
+    print readables >>
     accumulate (map hIsWritable [stdin, stdout, stderr]) >>= \ writables ->
-    putText writables >>
-    putChar '\n' >>
+    print writables >>
     accumulate (map hIsBlockBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    putText buffereds >>
-    putChar '\n' >>
+    print buffereds >>
     accumulate (map hIsLineBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    putText buffereds >>
-    putChar '\n' >>
+    print buffereds >>
     accumulate (map hIsNotBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
-    putText buffereds >>
-    putChar '\n'
+    print buffereds
+  where
+    -- these didn't make it into 1.3
+    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 }
index 161878e..209be0b 100644 (file)
@@ -2,6 +2,6 @@
 [False, False, False]
 [True, False, False]
 [False, True, True]
-[(True, Nothing), (True, Nothing), (False, Nothing)]
+[True, True, False]
 [False, False, False]
 [False, False, True]
index a584509..37f0cc1 100644 (file)
@@ -1,3 +1,5 @@
+import IO -- 1.3
+
 main =
     isEOF >>= \ eof ->
     if eof then 
index a584509..37f0cc1 100644 (file)
@@ -1,3 +1,5 @@
+import IO -- 1.3
+
 main =
     isEOF >>= \ eof ->
     if eof then 
index 99aea3c..c9750d3 100644 (file)
@@ -1 +1 @@
-NoFibOneModuleCompileAndRun(io016,foo bar)
+NoFibOneModuleCompileAndRun(io016,Main.hs bar)
index e8df7a9..1ce01b2 100644 (file)
@@ -1,4 +1,7 @@
-import LibSystem (getArgs)
+import IO -- 1.3
+
+import System (getArgs)
+import Char   (toUpper)
 
 main   =  getArgs                           >>=        \ [f1,f2] ->
           openFile f1 ReadMode              >>=        \ h1      ->
index eedb847..0064d5b 100644 (file)
@@ -1,2 +1,21 @@
-ABCDEFGHIJKLMNOPQRSTUVWXYZ
-0123456789
+IMPORT IO -- 1.3
+
+IMPORT SYSTEM (GETARGS)
+IMPORT CHAR   (TOUPPER)
+
+MAIN   =  GETARGS                           >>=        \ [F1,F2] ->
+          OPENFILE F1 READMODE              >>=        \ H1      ->
+          OPENFILE F2 WRITEMODE             >>=        \ H2      ->
+          COPYFILE H1 H2                    >>
+          HCLOSE H1                         >>
+          HCLOSE H2
+
+COPYFILE H1 H2 =
+          HISEOF H1                         >>=        \ EOF ->
+          IF EOF THEN
+            RETURN ()
+          ELSE
+            HGETCHAR H1                     >>=        \ C       ->
+            HPUTCHAR H2 (TOUPPER C)         >>
+            COPYFILE H1 H2
+
index f0a6d3e..2be7254 100644 (file)
@@ -1,3 +1,5 @@
+import IO -- 1.3
+
 main =
       hSetBuffering stdout NoBuffering                  >>
       putStr   "Enter an integer: "                     >>
index f15c1cb..7318cc7 100644 (file)
@@ -1,4 +1,6 @@
-import LibSystem(getArgs)
+import IO -- 1.3
+
+import System(getArgs)
 
 main =   getArgs                            >>=        \ [user,host] ->
          let username = (user ++ "@" ++ host) in
index 168a4ac..bd50838 100644 (file)
@@ -1,9 +1,8 @@
-import LibTime
+import Time
 
 main = 
     getClockTime >>= \ time ->
-    putText time >>
-    putChar '\n' >>
+    print   time >>
 
     let (CalendarTime year month mday hour min sec psec 
                       wday yday timezone gmtoff isdst) = toUTCTime time
@@ -20,4 +19,4 @@ main =
     shows2 x = showString (pad2 x)
     pad2 x = case show x of
                c@[_] -> '0' : c
-               cs -> cs
\ No newline at end of file
+               cs -> cs
index ff68bd9..1f349eb 100644 (file)
@@ -1,4 +1,4 @@
-import LibTime
+import Time
 
 main = 
     getClockTime >>= \ time ->
@@ -7,7 +7,7 @@ main =
         time' = toClockTime (CalendarTime (year - 1) month mday hour min sec psec
                              wday yday timezone gmtoff isdst)
     in
-        putText time >>
+        print time >>
        putChar '\n' >>
-       putText time' >> 
+       print time' >> 
        putChar '\n'
index 66548f6..c45a40b 100644 (file)
@@ -1,3 +1,5 @@
+import IO -- 1.3
+
 main = 
     hSetBuffering stdin NoBuffering    >>
     hSetBuffering stdout NoBuffering   >>
index 7ae6cdc..8906023 100644 (file)
@@ -37,6 +37,6 @@ main =
     connect s (SockAddrInet 5000 (inet_addr avon))     >>
     
     writeSocket s message                              >>
-    shutdown s 2                                       >>
+    shutdown s ShutdownBoth                            >>
     sClose s
 
index 3948707..ba7fda4 100644 (file)
@@ -13,7 +13,7 @@ TESTS:
 module Main where
 
 import SocketPrim
-import LibSystem
+import System
 
 
 starbuck    = "130.209.240.81"
@@ -28,6 +28,6 @@ main =
     getPeerName s                      >>= \ (SockAddrInet p haddr) ->   
     putStr ("Connected to : " ++ (inet_ntoa haddr) ++ "\n") >>
     writeSocket s message                      >>
-    shutdown s 2                               >>
+    shutdown s ShutdownBoth                    >>
     sClose s
 
index 57be04e..70e5ee0 100644 (file)
@@ -23,5 +23,5 @@ main =
     connect s (SockAddrUnix "sock")                    >>
     
     writeSocket s message                              >>
-    shutdown s 2                                       >>
+    shutdown s ShutdownBoth                            >>
     sClose s
index 8c33929..748b491 100644 (file)
@@ -2,7 +2,7 @@ module Main where
 
 import SocketPrim
 import BSD
-import LibSystem
+import System
 
 
 main =
@@ -17,6 +17,6 @@ main =
     getHostByAddr AF_INET haddr                        >>= \ (HostEntry hname _ _ _) ->
     putStr ("Connected to : " ++ hname ++ "\n") >>
     writeSocket s message                      >>
-    shutdown s 2                               >>
+    shutdown s ShutdownBoth                    >>
     sClose s
 
index 085b33d..6351d54 100644 (file)
@@ -7,8 +7,8 @@ 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
+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
index 84e5ba1..e62c8a4 100644 (file)
@@ -26,11 +26,11 @@ toBeIsToDoAndToDoIsToBeSaidConFuTse
 -- main functions ----------------------------------------------------------
 
   g  = interact$map
-           chr.g.map
-           ord
+           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
+                                                      q v w x z = - y w:x
                                                       a = g q f
                                                       f x y = justRight x
                                                             && goodSize y
index db10bab..31c32ba 100644 (file)
@@ -1,14 +1,14 @@
-import LibPosix
+import Posix
 
 main =
     getParentProcessID >>= \ ppid ->
     getProcessID >>= \ pid ->
     putStr "Parent Process ID: " >>
-    putText ppid >>
+    print ppid >>
     putStr "\nProcess ID: " >>
-    putText pid >>
+    print pid >>
     putStr "\nforking ps uxww" >>
-    putText ppid >>
+    print ppid >>
     putChar '\n' >>
     forkProcess >>= \ child ->
     case child of
@@ -18,6 +18,6 @@ main =
 doParent cpid pid =
     getProcessStatus True False cpid >>
     putStr "\nChild finished.  Now exec'ing ps uxww" >>
-    putText pid >>
+    print pid >>
     putChar '\n' >>
     executeFile "ps" True ["uxww" ++ show pid] Nothing
index e646f02..8d01e8b 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     executeFile "printenv" True [] (Just [("ONE","1"),("TWO","2")])
index b05d9cf..dbea5e1 100644 (file)
@@ -1,5 +1,6 @@
-import LibPosix
+import IO
+import Posix
 
 main = 
     openFile "po003.out" WriteMode >>= \ h ->
-    runProcess "pwd" [] Nothing (Just "/usr/tmp") Nothing (Just h) Nothing
\ No newline at end of file
+    runProcess "pwd" [] Nothing (Just "/usr/tmp") Nothing (Just h) Nothing
index 1725dd4..2423f3f 100644 (file)
@@ -1,5 +1,5 @@
-import LibPosix
-import LibSystem(ExitCode(..), exitWith)
+import Posix
+import System(ExitCode(..), exitWith)
 
 main = 
     forkProcess >>= \ maybe_pid ->
@@ -11,7 +11,7 @@ doParent =
     getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
     case tc of
        Terminated sig | sig == floatingPointException -> forkChild2
-       _ -> fail "unexpected termination cause"
+       _ -> fail (userError "unexpected termination cause")
 
 forkChild2 =
     forkProcess >>= \ maybe_pid ->
@@ -23,7 +23,7 @@ doParent2 =
     getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
     case tc of
        Exited (ExitFailure 42) -> forkChild3
-       _ -> fail "unexpected termination cause (2)"
+       _ -> fail (userError "unexpected termination cause (2)")
            
 forkChild3 =
     forkProcess >>= \ maybe_pid ->
@@ -35,7 +35,7 @@ doParent3 =
     getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
     case tc of
        Exited ExitSuccess -> forkChild4
-       _ -> fail "unexpected termination cause (3)"
+       _ -> fail (userError "unexpected termination cause (3)")
            
 forkChild4 =
     forkProcess >>= \ maybe_pid ->
@@ -47,12 +47,12 @@ doParent4 =
     getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
     case tc of
        Stopped sig | sig == softwareStop -> enoughAlready pid
-       _ -> fail "unexpected termination cause (4)"
+       _ -> 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 "unexpected termination cause (5)"
+       _ -> fail (userError "unexpected termination cause (5)")
     
index 8ea7625..81dce3a 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     getEnvVar "TERM" >>= \ term ->
@@ -6,25 +6,25 @@ main =
     putChar '\n' >>
     setEnvironment [("one","1"),("two","2")] >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n' >>
     setEnvVar "foo" "bar" >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n' >>
     setEnvVar "foo" "baz" >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n' >>
     setEnvVar "fu" "bar" >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n' >>
     removeEnvVar "foo" >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n' >>
     setEnvironment [] >>
     getEnvironment >>= \ env ->
-    putText env >>
+    print env >>
     putChar '\n'
index 8008a50..eb6451d 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main = 
     epochTime >>= \ start ->
@@ -6,9 +6,9 @@ main =
     let timeleft = 0 in
     epochTime >>= \ finish ->
     putStr "Started: " >>
-    putText start >>
+    print start >>
     putStr "\nSlept: " >>
-    putText (5 - timeleft) >>
+    print (5 - timeleft) >>
     putStr "\nFinished: " >>
-    putText finish >>
+    print finish >>
     putChar '\n'
index d70e913..3a37dc7 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main = 
     installHandler keyboardSignal (Catch doCtrlC) Nothing >>
@@ -28,4 +28,4 @@ doCtrlC =
 ccStr '\DEL' = "^?"
 ccStr x 
   | x >= ' ' = [x]
-  | otherwise = ['^', (chr (ord x + ord '@'))]
+  | otherwise = ['^', (toEnum (fromEnum x + fromEnum '@'))]
index c775064..249e58e 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     installHandler realTimeAlarm (Catch alarmclock) Nothing >>
index 9707c58..a1f284f 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     putStr "Blocking real time alarms.\n" >>
@@ -9,6 +9,6 @@ main =
     sleep 5 >>
     getPendingSignals >>= \ ints ->
     putStr "Checking pending interrupts for RealTimeAlarm\n" >>
-    putText (inSignalSet realTimeAlarm ints) >>
+    print (inSignalSet realTimeAlarm ints) >>
     putChar '\n'
 
index bfc8909..86ef3e1 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     getUserEntryForName "mattson" >>= \ mattson ->
@@ -21,4 +21,4 @@ ue2String ue =
     uid = userID ue
     gid = userGroupID ue
     home = homeDirectory ue
-    shell = userShell ue
\ No newline at end of file
+    shell = userShell ue
index 3d78924..f8baf1c 100644 (file)
@@ -1,4 +1,4 @@
-import LibPosix
+import Posix
 
 main =
     getGroupEntryForName "grasp" >>= \ grasp ->
@@ -19,4 +19,4 @@ ge2String ge =
   where
     name = groupName ge
     gid = groupID ge
-    members = foldr (\x y -> x ++ (',' : y)) "" (groupMembers ge)
\ No newline at end of file
+    members = foldr (\x y -> x ++ (',' : y)) "" (groupMembers ge)
index 6c1c282..11b5df4 100644 (file)
@@ -1,4 +1,4 @@
-grasp:401:aachtenp,andre,andy,ap,areid,armstroj,augustsl,bos,cardelll,carlssom,cvh,dnt,gnik,gransere,grasp,grasper,halgrent,holyeri,hudakp,hwloidl,james,jl,jonesm,jtod,kh,mattson,moffatd,nobler,oderskym,partain,plasmeir,reddyu,runcimac,sansom,satnam,serrarep,sewardj,simonm,simonpj,sof,tookr,trinder,wadler,
-staff:9:alexa,alison,andy,anne,aran,arthur,audit,barnstaa,bedim,bill,botech,bw,carol,carron,cathy,christbs,cvh,dam,daw,dcg,de,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,finance,fiona,footsie,gilbert,gsm,handbook,harrismi,helen,hmg,huw,iain,id,igr,iii,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kmssys,laurent,lewis,lisa,lizbeth,logiej,lyons,maclib,macneisd,mark,mary,mattson,mcdermig,mjj,mmi,monica,mossin,mpa,muffy,nick,nk,norman,partain,pd,pdg,pete,pp,ps,rab,ray,rdm,reh,replib,rff,rich,rios,rjw,rn,ron,rtingres,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonpj,slurry,softlib,st,stephen,steve,stevem,stuart,support,susan,tania,tech,teresa,tfm,tommyk,tracy,trinder,types,typesftp,wadler,wf,xadmin,
-grasp:401:aachtenp,andre,andy,ap,areid,armstroj,augustsl,bos,cardelll,carlssom,cvh,dnt,gnik,gransere,grasp,grasper,halgrent,holyeri,hudakp,hwloidl,james,jl,jonesm,jtod,kh,mattson,moffatd,nobler,oderskym,partain,plasmeir,reddyu,runcimac,sansom,satnam,serrarep,sewardj,simonm,simonpj,sof,tookr,trinder,wadler,
-staff:9:alexa,alison,andy,anne,aran,arthur,audit,barnstaa,bedim,bill,botech,bw,carol,carron,cathy,christbs,cvh,dam,daw,dcg,de,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,finance,fiona,footsie,gilbert,gsm,handbook,harrismi,helen,hmg,huw,iain,id,igr,iii,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kmssys,laurent,lewis,lisa,lizbeth,logiej,lyons,maclib,macneisd,mark,mary,mattson,mcdermig,mjj,mmi,monica,mossin,mpa,muffy,nick,nk,norman,partain,pd,pdg,pete,pp,ps,rab,ray,rdm,reh,replib,rff,rich,rios,rjw,rn,ron,rtingres,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonpj,slurry,softlib,st,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,
+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,
index d4eb384..b84fafa 100644 (file)
@@ -1,4 +1,5 @@
-import LibPosix
+import Posix
+import IO -- 1.3
 
 main =
     createFile "po012.out" stdFileMode >>= \ fd ->
index b6d971c..18ca3b5 100644 (file)
@@ -9,31 +9,32 @@
 module Main ( main ) where
 
 -- the main program: reads stdin and writes stdout
-main = scc "CAF:main" 
-       readChan stdin exit ( \input ->
-       appendChan stdout (clausify input) exit done)
+main = _scc_ "CAF:main" 
+    do
+       input <- getContents
+       putStr (clausify input)
 
 -- convert lines of propostions input to clausal forms
-clausify input = scc "clausify"
+clausify input = _scc_ "clausify"
                 concat
                 (interleave (repeat "prop> ")
                             (map clausifyline (lines input)))
 
-clausifyline = scc "CAF:clausifyline"
+clausifyline = _scc_ "CAF:clausifyline"
               concat . map disp . clauses . parse
 
 -- the main pipeline from propositional formulae to printed clauses
-clauses = scc "CAF:clauses" unicl . split . disin . negin . elim
+clauses = _scc_ "CAF:clauses" unicl . split . disin . negin . elim
 
--- clauses = (scc "unicl" unicl) . (scc "split" split) .
---           (scc "disin" disin) . (scc "negin" negin) .
---           (scc "elim"  elim)
+-- clauses = (_scc_ "unicl" unicl) . (_scc_ "split" split) .
+--           (_scc_ "disin" disin) . (_scc_ "negin" negin) .
+--           (_scc_ "elim"  elim)
 
--- clauses = (\x -> scc "unicl" unicl x) .
---           (\x -> scc "split" split x) .
---           (\x -> scc "disin" disin x) . 
---           (\x -> scc "negin" negin x) .
---           (\x -> scc "elim"  elim x)
+-- clauses = (\x -> _scc_ "unicl" unicl x) .
+--           (\x -> _scc_ "split" split x) .
+--           (\x -> _scc_ "disin" disin x) . 
+--           (\x -> _scc_ "negin" negin x) .
+--           (\x -> _scc_ "elim"  elim x)
 
 data StackFrame = Ast Formula | Lex Char
 
@@ -46,7 +47,7 @@ data Formula =
   Eqv Formula Formula 
 
 -- separate positive and negative literals, eliminating duplicates
-clause p = scc "clause"
+clause p = _scc_ "clause"
            let 
            clause' (Dis p q)       x   = clause' p (clause' q x)
            clause' (Sym s)       (c,a) = (insert s c , a)
@@ -54,20 +55,20 @@ clause p = scc "clause"
           in
           clause' p ([] , [])
 
-conjunct p = scc "conjunct"
+conjunct p = _scc_ "conjunct"
             case p of 
             (Con p q) -> True
             p         -> False
 
 -- shift disjunction within conjunction
-disin p = scc "disin"
+disin p = _scc_ "disin"
          case p of 
          (Con p q) -> Con (disin p) (disin q)
          (Dis p q) -> disin' (disin p) (disin q)
          p         -> p
 
 -- auxilary definition encoding (disin . Dis)
-disin' p r = scc "disin'"
+disin' p r = _scc_ "disin'"
             case p of
             (Con p q) -> Con (disin' p r) (disin' q r)
             p         -> case r of
@@ -75,13 +76,13 @@ disin' p r = scc "disin'"
                          q         -> Dis p q
 
 -- format pair of lists of propositional symbols as clausal axiom
-disp p = scc "disp"
+disp p = _scc_ "disp"
         case p of
         (l,r) -> interleave l spaces ++ "<="
                  ++ interleave spaces r ++ "\n"
 
 -- eliminate connectives other than not, disjunction and conjunction
-elim f = scc "elim"
+elim f = _scc_ "elim"
         case f of
         (Sym s)    -> Sym s
         (Not p)    -> Not (elim p)
@@ -91,10 +92,10 @@ elim f = scc "elim"
          (Eqv f f') -> Con (elim (Imp f f')) (elim (Imp f' f))
 
 -- remove duplicates and any elements satisfying p
-filterset p s = scc "filterset"
+filterset p s = _scc_ "filterset"
                filterset' [] p s
 
-filterset' res p l = scc "filterset'"
+filterset' res p l = _scc_ "filterset'"
                     case l of
                     []     -> []
                      (x:xs) -> if (notElem x res) && (p x) then
@@ -103,20 +104,20 @@ filterset' res p l = scc "filterset'"
                                   filterset' res p xs
 
 -- insertion of an item into an ordered list
-insert x l = scc "insert"
+insert x l = _scc_ "insert"
             case l of
              []     -> [x]
              (y:ys) -> if x < y then x:(y:ys)
                        else if x > y then y : insert x ys
                        else y:ys
 
-interleave xs ys = scc "interleave"
+interleave xs ys = _scc_ "interleave"
                   case xs of
                   (x:xs) -> x : interleave ys xs
                   []     -> []
 
 -- shift negation to innermost positions
-negin f = scc "negin"
+negin f = _scc_ "negin"
          case f of
           (Not (Not p))   -> negin p
           (Not (Con p q)) -> Dis (negin (Not p)) (negin (Not q))
@@ -126,7 +127,7 @@ negin f = scc "negin"
          p               -> p
 
 -- the priorities of symbols during parsing
-opri c = scc "opri"
+opri c = _scc_ "opri"
         case c of
          '(' -> 0
          '=' -> 1
@@ -136,11 +137,11 @@ opri c = scc "opri"
          '~' -> 5
 
 -- parsing a propositional formula
-parse t = scc "parse" 
+parse t = _scc_ "parse" 
          let [Ast f] = parse' t []
          in f
 
-parse' cs s = scc "parse'"
+parse' cs s = _scc_ "parse'"
              case cs of
              []      -> redstar s
              (' ':t) -> parse' t s
@@ -153,7 +154,7 @@ parse' cs s = scc "parse'"
                          else parse' t (Lex c : s)
 
 -- reduction of the parse stack
-red l = scc "red" 
+red l = _scc_ "red" 
        case l of
        (Ast p : Lex '=' : Ast q : s) -> Ast (Eqv q p) : s
        (Ast p : Lex '>' : Ast q : s) -> Ast (Imp q p) : s
@@ -162,14 +163,14 @@ red l = scc "red"
        (Ast p : Lex '~' : s)         -> Ast (Not p) : s
 
 -- iterative reduction of the parse stack
-redstar = scc "CAF:redstar" 
+redstar = _scc_ "CAF:redstar" 
          while ((/=) 0 . spri) red
 
-spaces = scc "CAF:spaces" 
+spaces = _scc_ "CAF:spaces" 
         repeat ' '
 
 -- split conjunctive proposition into a list of conjuncts
-split p = scc "split" 
+split p = _scc_ "split" 
          let
           split' (Con p q) a = split' p (split' q a)
           split' p a = p : a
@@ -177,21 +178,21 @@ split p = scc "split"
          split' p []
 
 -- priority of the parse stack
-spri s = scc "spri"
+spri s = _scc_ "spri"
         case s of
         (Ast x : Lex c : s) -> opri c
          s -> 0
 
 -- does any symbol appear in both consequent and antecedant of clause
-tautclause p = scc "tautclause"
+tautclause p = _scc_ "tautclause"
               case p of
               (c,a) -> -- [x | x <- c, x `elem` a] /= []
                        any (\x -> x `elem` a) c
 
 -- form unique clausal axioms excluding tautologies
-unicl = scc "CAF:unicl"
+unicl = _scc_ "CAF:unicl"
        filterset (not . tautclause) . map clause
 
 -- functional while loop
-while p f x = scc "while"
+while p f x = _scc_ "while"
              if p x then while p f (f x) else x
index e37b19a..4424df8 100644 (file)
 module Main ( main ) where
 
 -- the main program: reads stdin and writes stdout
-main = scc "CAF:main" 
-       readChan stdin exit ( \input ->
-       appendChan stdout (clausify input) exit done)
+main = _scc_ "CAF:main" 
+    do
+       input <- getContents
+       putStr (clausify input)
 
 -- convert lines of propostions input to clausal forms
-clausify input = scc "clausify"
+clausify input = _scc_ "clausify"
                 concat
                 (interleave (repeat "prop> ")
                             (map clausifyline (lines input)))
 
-clausifyline = scc "CAF:clausifyline"
+clausifyline = _scc_ "CAF:clausifyline"
               concat . map disp . clauses . parse
 
 -- the main pipeline from propositional formulae to printed clauses
-clauses = scc "CAF:clauses" unicl . split . disin . negin . elim
+clauses = _scc_ "CAF:clauses" unicl . split . disin . negin . elim
 
--- clauses = (scc "unicl" unicl) . (scc "split" split) .
---           (scc "disin" disin) . (scc "negin" negin) .
---           (scc "elim"  elim)
+-- clauses = (_scc_ "unicl" unicl) . (_scc_ "split" split) .
+--           (_scc_ "disin" disin) . (_scc_ "negin" negin) .
+--           (_scc_ "elim"  elim)
 
--- clauses = (\x -> scc "unicl" unicl x) .
---           (\x -> scc "split" split x) .
---           (\x -> scc "disin" disin x) . 
---           (\x -> scc "negin" negin x) .
---           (\x -> scc "elim"  elim x)
+-- clauses = (\x -> _scc_ "unicl" unicl x) .
+--           (\x -> _scc_ "split" split x) .
+--           (\x -> _scc_ "disin" disin x) . 
+--           (\x -> _scc_ "negin" negin x) .
+--           (\x -> _scc_ "elim"  elim x)
 
 data StackFrame = Ast Formula | Lex Char
 
@@ -49,7 +50,7 @@ data Formula =
   Eqv Formula Formula 
 
 -- separate positive and negative literals, eliminating duplicates
-clause p = scc "clause"
+clause p = _scc_ "clause"
            let 
            clause' (Dis p q)       x   = clause' p (clause' q x)
            clause' (Sym s)       (c,a) = (insert s c , a)
@@ -57,20 +58,20 @@ clause p = scc "clause"
           in
           clause' p ([] , [])
 
-conjunct p = scc "conjunct"
+conjunct p = _scc_ "conjunct"
             case p of 
             (Con p q) -> True
             p         -> False
 
 -- shift disjunction within conjunction
-disin p = scc "disin"
+disin p = _scc_ "disin"
          case p of 
          (Con p q) -> Con (disin p) (disin q)
          (Dis p q) -> disin' (disin p) (disin q)
          p         -> p
 
 -- auxilary definition encoding (disin . Dis)
-disin' p r = scc "disin'"
+disin' p r = _scc_ "disin'"
             case p of
             (Con p q) -> Con (disin' p r) (disin' q r)
             p         -> case r of
@@ -78,13 +79,13 @@ disin' p r = scc "disin'"
                          q         -> Dis p q
 
 -- format pair of lists of propositional symbols as clausal axiom
-disp p = scc "disp"
+disp p = _scc_ "disp"
         case p of
         (l,r) -> interleave (foldr ((:) . C#) [] l) spaces ++ "<="             -- ***
                  ++ interleave spaces (foldr ((:) . C#) [] r) ++ "\n"          -- ***
 
 -- eliminate connectives other than not, disjunction and conjunction
-elim f = scc "elim"
+elim f = _scc_ "elim"
         case f of
         (Sym s)    -> Sym s
         (Not p)    -> Not (elim p)
@@ -94,10 +95,10 @@ elim f = scc "elim"
          (Eqv f f') -> Con (elim (Imp f f')) (elim (Imp f' f))
 
 -- remove duplicates and any elements satisfying p
-filterset p s = scc "filterset"
+filterset p s = _scc_ "filterset"
                filterset' [] p s
 
-filterset' res p l = scc "filterset'"
+filterset' res p l = _scc_ "filterset'"
                     case l of
                     []     -> []
                      (x:xs) -> if (notElem x res) && (p x) then
@@ -106,20 +107,20 @@ filterset' res p l = scc "filterset'"
                                   filterset' res p xs
 
 -- insertion of an item into an ordered list
-insert x l = scc "insert"
+insert x l = _scc_ "insert"
             case l of
              []     -> [x]
              (y:ys) -> if x < y then x:(y:ys)
                        else if x > y then y : insert x ys
                        else y:ys
 
-interleave xs ys = scc "interleave"
+interleave xs ys = _scc_ "interleave"
                   case xs of
                   (x:xs) -> x : interleave ys xs
                   []     -> []
 
 -- shift negation to innermost positions
-negin f = scc "negin"
+negin f = _scc_ "negin"
          case f of
           (Not (Not p))   -> negin p
           (Not (Con p q)) -> Dis (negin (Not p)) (negin (Not q))
@@ -129,7 +130,7 @@ negin f = scc "negin"
          p               -> p
 
 -- the priorities of symbols during parsing
-opri c = scc "opri"
+opri c = _scc_ "opri"
         case c of
          '(' -> 0
          '=' -> 1
@@ -139,11 +140,11 @@ opri c = scc "opri"
          '~' -> 5
 
 -- parsing a propositional formula
-parse t = scc "parse" 
+parse t = _scc_ "parse" 
          let [Ast f] = parse' t []
          in f
 
-parse' cs s = scc "parse'"
+parse' cs s = _scc_ "parse'"
              case cs of
              []      -> redstar s
              (' ':t) -> parse' t s
@@ -156,7 +157,7 @@ parse' cs s = scc "parse'"
                          else parse' t (Lex c : s)
 
 -- reduction of the parse stack
-red l = scc "red" 
+red l = _scc_ "red" 
        case l of
        (Ast p : Lex '=' : Ast q : s) -> Ast (Eqv q p) : s
        (Ast p : Lex '>' : Ast q : s) -> Ast (Imp q p) : s
@@ -165,14 +166,14 @@ red l = scc "red"
        (Ast p : Lex '~' : s)         -> Ast (Not p) : s
 
 -- iterative reduction of the parse stack
-redstar = scc "CAF:redstar" 
+redstar = _scc_ "CAF:redstar" 
          while ((/=) 0 . spri) red
 
-spaces = scc "CAF:spaces" 
+spaces = _scc_ "CAF:spaces" 
         repeat ' '
 
 -- split conjunctive proposition into a list of conjuncts
-split p = scc "split" 
+split p = _scc_ "split" 
          let
           split' (Con p q) a = split' p (split' q a)
           split' p a = p : a
@@ -180,21 +181,21 @@ split p = scc "split"
          split' p []
 
 -- priority of the parse stack
-spri s = scc "spri"
+spri s = _scc_ "spri"
         case s of
         (Ast x : Lex c : s) -> opri c
          s -> 0
 
 -- does any symbol appear in both consequent and antecedant of clause
-tautclause p = scc "tautclause"
+tautclause p = _scc_ "tautclause"
               case p of
               (c,a) -> -- [x | x <- c, x `elem` a] /= []
                        any (\x -> x `elem` a) c
 
 -- form unique clausal axioms excluding tautologies
-unicl = scc "CAF:unicl"
+unicl = _scc_ "CAF:unicl"
        filterset (not . tautclause) . map clause
 
 -- functional while loop
-while p f x = scc "while"
+while p f x = _scc_ "while"
              if p x then while p f (f x) else x
index 86b4b24..8894c53 100644 (file)
@@ -3,6 +3,6 @@ module Main ( main ) where
 import PreludeClausify (clausify)
 
 -- the main program: reads stdin and writes stdout
-main = scc "CAF:main" 
-       readChan stdin exit ( \input ->
-       appendChan stdout (clausify input) exit done)
+main = scc "CAF:main" do
+       input <- getContents
+       putStr (clausify input)
index 86b4b24..b22d92c 100644 (file)
@@ -4,5 +4,6 @@ import PreludeClausify (clausify)
 
 -- the main program: reads stdin and writes stdout
 main = scc "CAF:main" 
-       readChan stdin exit ( \input ->
-       appendChan stdout (clausify input) exit done)
+    do
+       input <- getContents
+       putStr (clausify input)
index 8d8818b..f603712 100644 (file)
@@ -17,10 +17,12 @@ instance  Eq Int#  where
     x == y = eqInt# x y
     x /= y = neInt# x y
 
-instance  Text Int#  where
+instance  Read Int#  where
     readsPrec p s = map (\ (I# i#, s) -> (i#, s)) (readsPrec p s)
-    showsPrec p x = showsPrec p (I# x)
     readList s = map (\ (x, s) -> (local_map (\ (I# i#) -> i#) x, s)) (readList s)
+
+instance  Show Int#  where
+    showsPrec p x = showsPrec p (I# x)
     showList l = showList (local_map I# l)
 
 instance  Num Int#  where
index de3cd04..2084778 100644 (file)
@@ -23,8 +23,9 @@ doalist as0
 
 dolist xs = alisttolist (doalist (listtoalist xs))
 
-main = readChan stdin abort (\ input ->
-       appendChan stdout (unlines (map dolist (lines input))) abort done)
+main = do
+    input <- getContents
+    putStr (unlines (map dolist (lines input)))
 
 
 data AListChar = ANilChar | AConsChar Char# AListChar
index dacb062..b310e38 100644 (file)
@@ -7,8 +7,9 @@ module Main where
 bigtuple2 = bigtuple1
 untuple2  = untuple1
 
-main = readChan stdin abort (\ input ->
-       appendChan stdout (unlines (map dolist (lines input))) abort done)
+main = do
+    input <- getContents
+    putStr (unlines (map dolist (lines input)))
 
 dolist l = untuple1 (bigtuple1 l) ++ ['\n'] ++ untuple2 (bigtuple2 l)
 
index 4c09510..086ac9f 100644 (file)
@@ -4,7 +4,7 @@ module Main where
 
 import PreludeNum
 
-main = appendChan stdout (show values) abort done
+main = putStr (show values)
 
 values = (I# f1, I# f2, I# f3)
 
index 737914c..2910308 100644 (file)
@@ -10,10 +10,12 @@ instance  Eq Int#  where
     x == y = eqInt# x y
     x /= y = neInt# x y
 
-instance  Text Int#  where
+instance  Read Int#  where
     readsPrec p s = map (\ (I# i#, s) -> (i#, s)) (readsPrec p s)
-    showsPrec p x = showsPrec p (I# x)
     readList s = map (\ (x, s) -> (local_map (\ (I# i#) -> i#) x, s)) (readList s)
+
+instance  Show Int#  where
+    showsPrec p x = showsPrec p (I# x)
     showList l = showList (local_map I# l)
 
 instance  Num Int#  where
index ee87ad0..818aee6 100644 (file)
@@ -1,11 +1,12 @@
 \begin{code}
 import PreludeGlaST
-import PreludeGlaMisc
+import GHCio(stThen)
+--old:import PreludeGlaMisc
 
-main = makeStablePtr test      `thenPrimIO` \ stablePtr ->
+main = makeStablePtr test      `stThen` \ stablePtr ->
        ((_casm_GC_ ``SaveAllStgRegs(); test1(%0); RestoreAllStgRegs();'' stablePtr)
                                                :: PrimIO ())
-                               `seqPrimIO`
+                               `stThen` \ _ ->
        return ()
 
 test :: IO Int
@@ -15,7 +16,7 @@ test =
        in 
        _ccall_ printf
              "The stable pointer has just been used to print this number %d\n" (f 100)
-                                       `seqPrimIO`
+                               `stThen` \ _ ->
        return 42
 \end{code}
 
index 2d12dbf..1689f3d 100644 (file)
@@ -1 +1 @@
-The NoFib Haskell benchmark suite, version 0.26, patchlevel 0
+The NoFib Haskell benchmark suite, version 2.01, patchlevel 0
diff --git a/README b/README
index 9599eaa..a79ad81 100644 (file)
--- a/README
+++ b/README
@@ -1,11 +1,14 @@
 This is the root directory of the "NoFib Haskell benchmark suite";
-version 0.26 (to match our other Glasgow functional-programming
+version 2.01 (to match our other Glasgow functional-programming
 tools).
 
+The main change between version 0.26 and 2.01 is that the programs
+have been converted to Haskell 1.3 (insofar as I could be bothered).
+
 We have yet to release the NoFib stuff as we intended -- everything
 tidied up -- because it's a lot of work for very few brownie points.
-As it is, however, it is quite useful as a Haskell-compiler test
-suite, so we are not keeping it to ourselves.
+Probably we never will.  As it is, however, it is quite useful as a
+Haskell-compiler test suite, so we are not keeping it to ourselves.
 
 This version has *MANY* shortcomings, some of which I hope you will
 report, so we can get something "real" out the door.
@@ -13,11 +16,11 @@ report, so we can get something "real" out the door.
 There are some restrictions on the use of this software.  First of
 all, the copyright for the individual programs remains with their
 authors (unless they have explicitly said otherwise).  Second, we (the
-AQUA project at University of Glasgow) retain the copyright to any
-changes made to the programs *and* to the collection of programs
-itself.  Third, for this "not-0.26" non-release, it would be dishonest
-to suggest that any results are related to the still-in-the-future
-"NoFib benchmark suite".  So please do not make any such claims.
+Glasgow Haskell project at University of Glasgow) retain the copyright
+to any changes made to the programs *and* to the collection of
+programs itself.  Third, for 2.01, it would be dishonest to suggest
+that any results are related to the still-in-the-future "NoFib
+benchmark suite".  So please do not make any such claims.
 
 A position paper about the suite is in docs/paper/paper.dvi, and it
 includes more than enough indication as to how we intend this suite to
@@ -30,12 +33,10 @@ in order to run it. [NOTE: doesn't exist yet; see sketchy notes below]
 The file BUGS is a list of things we *know* are not right [ALSO
 VIRTUALLY USELESS].  Help would be most welcome...
 
-You may sent comments or bug reports about this suite either to me
-(partain@dcs.glasgow.ac.uk) or (glasgow-haskell-bugs@dcs.glasgow.ac.uk).
+You may sent comments or bug reports about this suite either to the
+Glasgow Haskell bugs list <glasgow-haskell-bugs@dcs.gla.ac.uk>.
 They will be most welcome.
 
-Will Partain
-
 == SKETCHY NOTES ==================================================
 
 Quick and dirty
index 05cd96d..f750f56 100644 (file)
@@ -18,7 +18,7 @@ Haskell and here is the result using hbc.
 ----------------------------------------------------------
 infix 8 ^^^
 
-data Nat = Z | S Nat deriving (Eq,Ord,Text)
+data Nat = Z | S Nat deriving (Eq,Ord,Show{-was:Text-})
 
 instance Num Nat where
     Z   + y   = y
index 2851ee8..2adbedf 100644 (file)
@@ -25,6 +25,6 @@ numericRule x
     (p,_:q) = span (/= '-') x
     (r,_:s) = span (/= '>') q
     (u,v)   = (mknum p, mknum r)
-    mknum s = foldl (\ u c -> u * 10 + (ord c - ord '0')) 0 s
+    mknum s = foldl (\ u c -> u * 10 + (fromEnum c - fromEnum '0')) 0 s
     pad s   = [ '0' | i <- [1 .. (width-(length s))]] ++ s
     width   = max (length (show u)) (length (show v))
index 2e743c7..17d3acd 100644 (file)
@@ -109,6 +109,7 @@ test_paraffins_until n = let
     array (1,n) [i := (let { (bv,cv) = result!i} in (length bv) + (length cv))
                       | i <- [1..n]]
 
-main = appendChan stdout "Type in N: " abort $
-       readChan stdin abort $ \ input ->
-       appendChan stdout (show (test_paraffins_until (read (head (lines input))))) abort done
+main = do
+    putStr "Type in N: "
+    input <- getContents
+    putStr (show (test_paraffins_until (read (head (lines input)))))
index 2bb6047..d6aabc3 100644 (file)
@@ -1,5 +1,5 @@
-succ :: Int -> Int
-succ x = x + 1
+suCC :: Int -> Int
+suCC x = x + 1
 
 isdivs :: Int  -> Int -> Bool
 isdivs n x = mod x n /= 0
@@ -8,7 +8,7 @@ the_filter :: [Int] -> [Int]
 the_filter (n:ns) = filter (isdivs n) ns
 
 primes :: [Int]
-primes = map head (iterate the_filter (iterate succ 2))
+primes = map head (iterate the_filter (iterate suCC 2))
 
 main = print (primes !! 1500)
 --OLD: main = print (take 300 primes)
index c3d0039..ed7db6a 100644 (file)
@@ -1 +1 @@
-12569
\ No newline at end of file
+12569
index f591613..67adbdb 100644 (file)
@@ -1 +1 @@
-724
\ No newline at end of file
+724
index 20a57ee..7800309 100644 (file)
@@ -1 +1 @@
-2692537.0000000000
\ No newline at end of file
+2692537.0000000000
index cd360ce..9fc64f4 100644 (file)
@@ -1 +1 @@
-"9\n"
\ No newline at end of file
+"9\n"
index 5f72b52..40a8c17 100644 (file)
@@ -1,6 +1 @@
-/* this Jmakefile is used mainly to make the nofib.{dvi,info} document */
-
-LitStuffNeededHere(docs depend)
-InfoStuffNeededHere(docs)
-
-LitDocRootTarget(nofib,lit)
+/* empty */
diff --git a/mkworld/install-nofib-ghc.ljm b/mkworld/install-nofib-ghc.ljm
deleted file mode 100644 (file)
index b315111..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-install-nofib-ghc]{Installation stuff for @ghc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-NONE.
diff --git a/mkworld/install-nofib-hbc.ljm b/mkworld/install-nofib-hbc.ljm
deleted file mode 100644 (file)
index ea0b9c8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-install-nofib-hbc]{Installation stuff for @hbc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-NONE.
diff --git a/mkworld/install-nofib-nhc.ljm b/mkworld/install-nofib-nhc.ljm
deleted file mode 100644 (file)
index 5081c72..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-install-nofib-nhc]{Installation stuff for @nhc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-NONE.
index e69de29..e05b0ed 100644 (file)
@@ -0,0 +1 @@
+/* yes, empty */
diff --git a/mkworld/install-nofib.ljm b/mkworld/install-nofib.ljm
deleted file mode 100644 (file)
index c37e9c3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-install-nofib]{Installation stuff for @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-NONE.
index cf60354..e358d7f 100644 (file)
@@ -1,4 +1,3 @@
-# line 10 "macros-nofib-ghc.ljm"
 #ifndef RunStdTestTimeCmd
 #define RunStdTestTimeCmd -ghc-timing
 #endif
diff --git a/mkworld/macros-nofib-ghc.ljm b/mkworld/macros-nofib-ghc.ljm
deleted file mode 100644 (file)
index 1746d18..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-rules-nofib-ghc]{Nonsuffix rules for @ghc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-Use GHC-specific timing stuff in @runstdtest@.
-
-\begin{code}
-#ifndef RunStdTestTimeCmd
-#define RunStdTestTimeCmd -ghc-timing
-#endif
-\end{code}
-
index 71e65ad..bd2cb4e 100644 (file)
@@ -1,4 +1,3 @@
-# line 10 "macros-nofib-hbc.ljm"
 #ifndef RunStdTestTimeCmd
 #define RunStdTestTimeCmd -hbc-timing
 #endif
diff --git a/mkworld/macros-nofib-hbc.ljm b/mkworld/macros-nofib-hbc.ljm
deleted file mode 100644 (file)
index edac3a3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-rules-nofib-hbc]{Nonsuffix rules for @hbc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-Use HBC-specific timing stuff in @runstdtest@.
-
-\begin{code}
-#ifndef RunStdTestTimeCmd
-#define RunStdTestTimeCmd -hbc-timing
-#endif
-\end{code}
-
diff --git a/mkworld/macros-nofib-nhc.ljm b/mkworld/macros-nofib-nhc.ljm
deleted file mode 100644 (file)
index 6d16df8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-rules-nofib-nhc]{Nonsuffix rules for @nhc@ setup of @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-NONE.
index d5e4301..9f1e117 100644 (file)
@@ -1,12 +1,11 @@
-# line 13 "macros-nofib.ljm"
 #ifndef RunStdTestTimeCmd
 #define RunStdTestTimeCmd -t $(TIME)
 #endif
-# line 22 "macros-nofib.ljm"
+
 #ifndef NoFibAt
 #define NoFibAt @
 #endif
-# line 34 "macros-nofib.ljm"
+
 #ifndef ProjectMakeVarsForAllinSubdirs
 #define ProjectMakeVarsForAllinSubdirs HC="$(HC)" EXTRA_HC_OPTS="$(EXTRA_HC_OPTS)"
 #endif
 #ifndef ProjectMakeVarsForRunTestsinSubdirs
 #define ProjectMakeVarsForRunTestsinSubdirs HC="$(HC)" EXTRA_HC_OPTS="$(EXTRA_HC_OPTS)"
 #endif
-# line 63 "macros-nofib.ljm"
+
 #ifndef NoFibHaskellCompile__
 #define NoFibHaskellCompile__(test,way,way_opts,module,isuf)           @@\
 CAT3(module,way,.o) : module.isuf                                      @@\
-       NoFibAt $(RM) $@                                                @@\
+       NoFibAt : do not $(RM) $@                                               @@\
        @echo ==nofib== test\: time to compile $@ follows...            @@\
        NoFibAt $(TIME) $(HC) -c -o $@ way_opts $(HCFLAGS) $(CAT2(HC_OPTS_,test)) $(CAT4(HC_OPTS_,test,_,module)) module.isuf @@\
        @echo ==nofib== test\: size of $@ follows...                    @@\
        NoFibAt size $@
 #endif /* NoFibHaskellCompile__ */
-# line 75 "macros-nofib.ljm"
+
 #ifndef NoFibLinkPgm__
 #define NoFibLinkPgm__(progname,way,way_opts,objlistvar)                    @@\
 CAT3(all_,progname,way) :: CAT2(progname,way)                               @@\
@@ -37,7 +36,7 @@ CAT2(progname,way) :: $(objlistvar)                                        @@\
        @echo ==nofib== CAT2(progname,way)\: size of CAT2(progname,way) follows... @@\
        NoFibAt size CAT2(progname,way)
 #endif /* NoFibLinkPgm__ */
-# line 90 "macros-nofib.ljm"
+
 #ifndef NoFibRunPgm__
 #define NoFibRunPgm__(test,prog,way,runstdtest_opts)                   @@\
 CAT3(runtest_,test,way) :: CAT2(prog,way)                              @@\
@@ -52,13 +51,13 @@ CAT3(runtest_,test,way)::                                           @@\
                $(RUNSTDTEST_FLAGS) runstdtest_opts     \               @@\
                $(CAT2(NOFIB_RUN,way)) $(CAT2(NOFIB_RUN_,test))
 #endif /* NoFibRunPgm__ */
-# line 107 "macros-nofib.ljm"
+
 #ifndef NoFibCleanupPgm__
 #define NoFibCleanupPgm__(prog,way,objlistvar)                         @@\
 CAT3(clean_,prog,way) ::                                               @@\
        $(RM) CAT2(prog,way) $(objlistvar)
 #endif /* NoFibCleanupPgm__ */
-# line 115 "macros-nofib.ljm"
+
 #ifndef NoFibMultiModuleCompileAndRun__
 
 #define NoFibMultiModuleCompileAndRun__(testname,way,way_opts,runstdtest_opts) @@\
@@ -74,7 +73,7 @@ NoFibRunPgm__(testname,testname,way,runstdtest_opts)                  @@\
 NoFibCleanupPgm__(testname,way,CAT2(OBJS_O,way))
 
 #endif /* NoFibMultiModuleCompileAndRun__ */
-# line 138 "macros-nofib.ljm"
+
 #ifndef NoFibOneModuleCompileAndRun__
 #define NoFibOneModuleCompileAndRun__(testname,runopts,way,way_opts)   @@\
                                                                        @@\
@@ -82,7 +81,7 @@ NoFibMultiModuleCompileAndRun__(testname,way,way_opts,-o1 testname.stdout runopt
                                                                        @@\
 NoFibHaskellCompile__(testname,way,way_opts,Main,hs)
 #endif /* NoFibOneModuleCompileAndRun__ */
-# line 156 "macros-nofib.ljm"
+
 #ifndef NoFib_UserWay_a
 #define NoFib_UserWay_a NO
 #endif /* ! NoFib_UserWay_a */
@@ -128,7 +127,7 @@ NoFibHaskellCompile__(testname,way,way_opts,Main,hs)
 #ifndef NoFib_UserWay_o
 #define NoFib_UserWay_o NO
 #endif /* ! NoFib_UserWay_o */
-# line 204 "macros-nofib.ljm"
+
 #if NoFib_UserWay_a == YES
 #define NoFibHaskellCompile_a(test,module,isuf) \
        NoFibHaskellCompile__(test,_a,$(HC_OPTS_a),module,isuf)
@@ -503,7 +502,6 @@ NoFibHaskellCompile__(testname,way,way_opts,Main,hs)
 #define NoFibOneModuleCompileAndRun_o(testname,runopts) /*none*/
 #define NoFibDependWay_o /*none*/
 #endif /* ! NoFib_UserWay_o */
-# line 581 "macros-nofib.ljm"
 #ifndef NoFibHaskellCompile
 #define NoFibHaskellCompile(test,module,isuf)  \
 NoFibHaskellCompile__(test,,$(HC_OPTS_std),module,isuf)        \
@@ -523,7 +521,6 @@ NoFibHaskellCompile_m(test,module,isuf)             \
 NoFibHaskellCompile_n(test,module,isuf)                \
 NoFibHaskellCompile_o(test,module,isuf)
 #endif /* NoFibHaskellCompile */
-# line 603 "macros-nofib.ljm"
 #ifndef NoFibLinkPgm
 #define NoFibLinkPgm(target,progname,objlistvar)       \
 NoFibLinkPgm__(target,progname,$(HC_OPTS_std),objlistvar)              \
@@ -543,7 +540,6 @@ NoFibLinkPgm_m(target,progname,objlistvar)          \
 NoFibLinkPgm_n(target,progname,objlistvar)             \
 NoFibLinkPgm_o(target,progname,objlistvar)
 #endif /* NoFibLinkPgm */
-# line 625 "macros-nofib.ljm"
 #ifndef NoFibRunPgm
 #define NoFibRunPgm(test,prog,runstdtest_opts) \
 NoFibRunPgm__(test,prog,,runstdtest_opts)      \
@@ -563,7 +559,6 @@ NoFibRunPgm_m(test,prog,runstdtest_opts)    \
 NoFibRunPgm_n(test,prog,runstdtest_opts)       \
 NoFibRunPgm_o(test,prog,runstdtest_opts)
 #endif /* NoFibRunPgm */
-# line 647 "macros-nofib.ljm"
 #ifndef NoFibCleanupPgm
 #define NoFibCleanupPgm(prog,objlistvar)       \
 NoFibCleanupPgm__(prog,,objlistvar)            \
@@ -583,7 +578,6 @@ NoFibCleanupPgm_m(prog,objlistvar)          \
 NoFibCleanupPgm_n(prog,objlistvar)             \
 NoFibCleanupPgm_o(prog,objlistvar)
 #endif /* NoFibCleanupPgm */
-# line 669 "macros-nofib.ljm"
 #ifndef NoFibMultiModuleCompileAndRun
 #define NoFibMultiModuleCompileAndRun(testname,runstdtest_opts)        @@\
                                                                @@\
@@ -624,7 +618,6 @@ NoFibMultiModuleCompileAndRun_m(testname,runstdtest_opts)   \
 NoFibMultiModuleCompileAndRun_n(testname,runstdtest_opts)      \
 NoFibMultiModuleCompileAndRun_o(testname,runstdtest_opts)
 #endif /* NoFibMultiModuleCompileAndRun */
-# line 712 "macros-nofib.ljm"
 #ifndef NoFibOneModuleCompileAndRun
 #define NoFibOneModuleCompileAndRun(testname,runopts) @@\
 OBJS_O = Main.o                                        @@\
@@ -662,7 +655,6 @@ NoFibOneModuleCompileAndRun_m(testname,runopts) \
 NoFibOneModuleCompileAndRun_n(testname,runopts) \
 NoFibOneModuleCompileAndRun_o(testname,runopts)
 #endif /* NoFibOneModuleCompileAndRun */
-# line 754 "macros-nofib.ljm"
 #ifndef NoFibDependWays
 #define NoFibDependWays \
 NoFibDependWay_a NoFibDependWay_b NoFibDependWay_c \
diff --git a/mkworld/macros-nofib.ljm b/mkworld/macros-nofib.ljm
deleted file mode 100644 (file)
index 90d0285..0000000
+++ /dev/null
@@ -1,773 +0,0 @@
-%************************************************************************
-%*                                                                     *
-\section[mkworld-rules-nofib]{Nonsuffix rules for @nofib@ project}
-%*                                                                     *
-%************************************************************************
-
-These are the {\em default} NoFib rules; setups are likely to override
-them.
-
-First, we need to ``turn on'' the time command for @RunStdTest@, which
-is off by default, but obviously should be on for NoFibbery.
-\begin{code}
-#ifndef RunStdTestTimeCmd
-#define RunStdTestTimeCmd -t $(TIME)
-#endif
-\end{code}
-
-Second, we normally don't want too much junk in our ``make'' logs.  So
-we define @NoFibAt@ to \tr{@}, so make won't echo all the programs it
-invokes.
-\begin{code}
-#ifndef NoFibAt
-#define NoFibAt @
-#endif
-\end{code}
-
-%************************************************************************
-%*                                                                     *
-\subsection[nofib-makevars-to-subdirs]{Passing some make-variables to subdirectories}
-%*                                                                     *
-%************************************************************************
-
-\begin{code}
-#ifndef ProjectMakeVarsForAllinSubdirs
-#define ProjectMakeVarsForAllinSubdirs HC="$(HC)" EXTRA_HC_OPTS="$(EXTRA_HC_OPTS)"
-#endif
-
-#ifndef ProjectMakeVarsForRunTestsinSubdirs
-#define ProjectMakeVarsForRunTestsinSubdirs HC="$(HC)" EXTRA_HC_OPTS="$(EXTRA_HC_OPTS)"
-#endif
-\end{code}
-
-%************************************************************************
-%*                                                                     *
-\subsection[nofib-rules]{Basic rules to compile/link/run}
-%*                                                                     *
-%************************************************************************
-
-The basic business of the \tr{nofib} suite is to (a)~compile a group
-of modules, (b)~link them into an executable, (c)~run that executable
-against prepared input [and {\em measure} what happened!], and
-(d)~clean up after itself.
-
-In the simplest case, we want to go through the above process in just
-one ``way''.  However, in testing, we probably want to compile each
-module {\em several} different ``ways'' (perhaps using different
-optimisation options each time), link several binaries accordingly,
-then run the test for each different ``way''.
-
-Therefore, these underlying macros support ``ways''.
-
-\begin{code}
-#ifndef NoFibHaskellCompile__
-#define NoFibHaskellCompile__(test,way,way_opts,module,isuf)           @@\
-CAT3(module,way,.o) : module.isuf                                      @@\
-       NoFibAt $(RM) $@                     &