Tue Mar  6 22:15:04 PST 2012  John Meacham <[email protected]>
  * mv base to haskell-extras 

Wed Mar  7 00:52:27 PST 2012  John Meacham <[email protected]>
  * clean up configure.ac a little

Wed Mar  7 02:08:09 PST 2012  John Meacham <[email protected]>
  * update library dependencies
New patches:

[mv base to haskell-extras 
John Meacham <[email protected]>**20120307061504
 Ignore-this: acc62fbf85b246155f10055cf7228cd7
] move ./lib/base ./lib/haskell-extras
move ./lib/haskell-extras/base.yaml ./lib/haskell-extras/haskell-extras.yaml.m4
hunk ./Makefile.am 67
 include library_deps.make
 
 EXTRA_DIST = src/data rts utils docs src/FrontEnd/HsParser.y $(BUILT_SOURCES) \
-             lib/jhc lib/jhc-prim lib/base lib/haskell98 lib/flat-foreign $(JHC_LIBS) $(JHC_EXT_LIBS) \
+             lib/jhc lib/jhc-prim lib/haskell-extras lib/haskell98 lib/flat-foreign $(JHC_LIBS) $(JHC_EXT_LIBS) \
 	     src/StringTable/StringTable_cbits.c src/StringTable/StringTable_cbits.h src/cbits/md5sum.c jhc.1 \
 	     src/StringTable/Atom.hsc jhc.spec src/cbits/lookup3.c \
 	     manual.html lib/applicative examples/HelloWorld.hs examples/Calendar.hs \
hunk ./Makefile.am 282
 show_elibs: lib/ext/*.cabal  lib/ext/*.yaml
 	-perl utils/build_extlibs.prl -l $^
 
-%: examples/%.hs jhc base-1.0.hl haskell98-1.0.hl
+%: examples/%.hs jhc $(JHC_LIBS)
 	./jhc -L- -L$(srcdir) -L. --no-cache $(JHC_TEST) $< -o $@ # 2>&1 | tee [email protected]
 
 TESTS=HelloWorld Primes
hunk ./configure.ac 1
-AC_INIT([jhc],[0.8.0])
+AC_INIT([jhc],[0.8.1])
 AC_CONFIG_SRCDIR(src/Main.hs)
 AC_CONFIG_MACRO_DIR(ac-macros)
 AC_CONFIG_AUX_DIR(ac-macros)
hunk ./lib/applicative/applicative.yaml 4
 Name: applicative
 Version: 1.0
 Hs-Source-Dirs: .
-Options: [ -pbase, --noauto ]
+Options: [ -phaskell2010, -phaskell-extras, --noauto ]
 Exposed-Modules:
         - Control.Applicative
         - Control.Arrow
hunk ./lib/ext/safe.cabal 10
 Maintainer:     [email protected]
 Author:         Neil Mitchell
 Homepage:       http://www-users.cs.york.ac.uk/~ndm/safe/
-Build-Depends:  base
+Build-Depends:  haskell-extras
 Category:       Unclassified
 Synopsis:       Library for safe (pattern match free) functions
 Description:
hunk ./lib/ext/smallcheck.cabal 10
                tests properties for all the finitely many values up to some depth,
                progressively increasing the depth used.
 
-Build-Depends: base, haskell98
+Build-Depends: haskell98
 Exposed-modules:    Test.SmallCheck
hunk ./lib/ext/xhtml.cabal 9
 Author: Bjorn Bringert
 License: BSD3
 License-file: LICENSE
-build-depends: base
 Extensions:
 Synopsis: An XHTML combinator library
 Description:
hunk ./lib/flat-foreign/flat-foreign.yaml 4
 Name: flat-foreign
 Version: 1.0
 hs-source-dir: .
-build-depends: [base, jhc]
+build-depends: [haskell2010]
 exposed-modules: [ Bits, CError, CForeign, CString, CTypes, ForeignPtr, Int,
         MarshalAlloc, MarshalArray, MarshalError, MarshalUtils, Ptr,
         StablePtr, Storable, Word ]
hunk ./lib/haskell-extras/haskell-extras.yaml.m4 1
-Name: base
-Version: 1.0
+Name: haskell-extras
+Version: __JHC_VERSION__
 Hs-Source-Dir: .
 Extensions: ForeignFunctionInterface
hunk ./lib/haskell-extras/haskell-extras.yaml.m4 5
-Options: [ -pjhc, --noauto ]
+build-depends: jhc
+Options: [ --noauto ]
 Exposed-Modules:
         - Control.Exception
         - Control.Monad
hunk ./lib/haskell2010/haskell2010.yaml.m4 6
 Extensions: [ ForeignFunctionInterface, NoImplicitPrelude,
               UnboxedTuples, UnboxedValues ]
 Hs-Source-Dir: .
-build-depends: [ jhc, base ]
-#Options: [ --noauto ]
+build-depends: [ jhc, haskell-extras ]
+Options: [ --noauto ]
 Exposed-Modules:
         - Control.Monad
         - Data.Array
hunk ./lib/haskell98/haskell98.yaml 4
 name: 	haskell98
 version: 1.0
 options:        --noauto
-build-depends: [ base, jhc ]
+build-depends: [ haskell2010, haskell-extras ]
 hs-source-dir: .
 exposed-modules: [ Prelude, Numeric, Array, CPUTime, Char, Complex, Directory, IO, Ix, List, Locale, Maybe, Monad, Random, Ratio, System, Time ]
hunk ./library_deps.make 1
-base-1.0.hl: lib/base/base.yaml lib/base/System/Info.hs lib/base/Data/Int.hs lib/base/Debug/Trace.hs lib/base/Data/Array.hs \
-    lib/base/Data/Typeable.hs lib/base/Text/Printf.hs lib/base/System/Directory.hs lib/base/Data/Word.hs lib/base/Data/Maybe.hs \
-    lib/base/System/IO/Error.hs lib/base/System/IO/Binary.hs lib/base/System/CPUTime.hs lib/base/System/IO/Pipe.hs lib/base/Control/Monad/Instances.hs \
-    lib/base/Foreign/Marshal/Error.hs lib/base/System/Exit.hs lib/base/System/Environment.hs lib/base/Data/Array/IO.hs lib/base/Data/Char.hs \
-    lib/base/Data/Version.hs lib/base/Text/Show/Functions.hs lib/base/Control/Monad.hs lib/base/Data/Functor.hs lib/base/Data/Monoid.hs \
-    lib/base/System/Locale.hs lib/base/System/IO.hs lib/base/Foreign/Marshal/Pool.hs lib/base/Prelude.hs lib/base/Control/Monad/Fix.hs \
-    lib/base/Data/Complex.hs lib/base/Data/IORef.hs lib/base/System/Console/GetOpt.hs lib/base/Data/List.hs lib/base/System/Cmd.hs \
-    lib/base/System/Random.hs lib/base/Data/Unicode.hs lib/base/Foreign/ForeignPtr.hs lib/base/System/Time.hs lib/base/Control/Exception.hs \
-    lib/base/Foreign/StablePtr.hs lib/base/Foreign/C.hs lib/base/Data/Bits.hs lib/base/Foreign/Marshal.hs lib/base/Foreign.hs \
-    lib/base/Data/Array/Unboxed.hs lib/base/Data/Function.hs lib/base/Data/Ix.hs jhc-prim-1.0.hl jhc-1.0.hl
-	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-applicative-1.0.hl: lib/applicative/applicative.yaml lib/applicative/Control/Arrow.hs lib/applicative/Control/Applicative.hs lib/applicative/Data/Foldable.hs lib/applicative/Control/Category.hs \
-    lib/applicative/Data/Traversable.hs jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
-	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-flat-foreign-1.0.hl: lib/flat-foreign/flat-foreign.yaml lib/flat-foreign/StablePtr.hs lib/flat-foreign/MarshalAlloc.hs lib/flat-foreign/CForeign.hs lib/flat-foreign/Storable.hs \
-    lib/flat-foreign/Ptr.hs lib/flat-foreign/MarshalArray.hs lib/flat-foreign/Int.hs lib/flat-foreign/CString.hs lib/flat-foreign/Word.hs \
-    lib/flat-foreign/CError.hs lib/flat-foreign/CTypes.hs lib/flat-foreign/MarshalError.hs lib/flat-foreign/MarshalUtils.hs lib/flat-foreign/Bits.hs \
-    lib/flat-foreign/ForeignPtr.hs jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
-	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-haskell98-1.0.hl: lib/haskell98/haskell98.yaml lib/haskell98/System.hs lib/haskell98/List.hs lib/haskell98/Time.hs lib/haskell98/Array.hs \
-    lib/haskell98/Random.hs lib/haskell98/Complex.hs lib/haskell98/Locale.hs lib/haskell98/CPUTime.hs lib/haskell98/Ratio.hs \
-    lib/haskell98/Monad.hs lib/haskell98/Directory.hs lib/haskell98/IO.hs lib/haskell98/Ix.hs lib/haskell98/Char.hs \
-    lib/haskell98/Maybe.hs jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+jhc-prim-1.0.hl: lib/jhc-prim/jhc-prim.yaml lib/jhc-prim/Jhc/Prim/IO.hs lib/jhc-prim/Jhc/Prim/Prim.hs lib/jhc-prim/Jhc/Prim/Array.hs lib/jhc-prim/Jhc/Prim/Wrapper.hs \
+    lib/jhc-prim/Jhc/Prim/Rts.hs lib/jhc-prim/Jhc/Prim/Bits.hs
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
 jhc-1.0.hl: lib/jhc/jhc.yaml lib/jhc/Jhc/Prim.hs lib/jhc/Jhc/IO.hs lib/jhc/Jhc/Int.hs lib/jhc/Jhc/Inst/Enum.hs \
     lib/jhc/Prelude/IO.hs lib/jhc/Jhc/Order.hs lib/jhc/System/C/Stdio.hs lib/jhc/Foreign/C/String.hs lib/jhc/Jhc/Show.hs \
hunk ./library_deps.make 17
     lib/jhc/Jhc/Monad.hs lib/jhc/System/IO/Unsafe.hs lib/jhc/System/Mem/StableName.hs lib/jhc/Jhc/Inst/Read.hs lib/jhc/Jhc/Maybe.hs \
     jhc-prim-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-jhc-prim-1.0.hl: lib/jhc-prim/jhc-prim.yaml lib/jhc-prim/Jhc/Prim/IO.hs lib/jhc-prim/Jhc/Prim/Prim.hs lib/jhc-prim/Jhc/Prim/Array.hs lib/jhc-prim/Jhc/Prim/Wrapper.hs \
-    lib/jhc-prim/Jhc/Prim/Rts.hs lib/jhc-prim/Jhc/Prim/Bits.hs
+haskell-extras-0.8.0.hl: lib/haskell-extras/haskell-extras.yaml.m4 lib/haskell-extras/System/Info.hs lib/haskell-extras/Data/Int.hs lib/haskell-extras/Debug/Trace.hs lib/haskell-extras/Data/Array.hs \
+    lib/haskell-extras/Data/Typeable.hs lib/haskell-extras/Text/Printf.hs lib/haskell-extras/System/Directory.hs lib/haskell-extras/Data/Word.hs lib/haskell-extras/Data/Maybe.hs \
+    lib/haskell-extras/System/IO/Error.hs lib/haskell-extras/System/IO/Binary.hs lib/haskell-extras/System/CPUTime.hs lib/haskell-extras/System/IO/Pipe.hs lib/haskell-extras/Control/Monad/Instances.hs \
+    lib/haskell-extras/Foreign/Marshal/Error.hs lib/haskell-extras/System/Exit.hs lib/haskell-extras/System/Environment.hs lib/haskell-extras/Data/Array/IO.hs lib/haskell-extras/Data/Char.hs \
+    lib/haskell-extras/Data/Version.hs lib/haskell-extras/Text/Show/Functions.hs lib/haskell-extras/Control/Monad.hs lib/haskell-extras/Data/Functor.hs lib/haskell-extras/Data/Monoid.hs \
+    lib/haskell-extras/System/Locale.hs lib/haskell-extras/System/IO.hs lib/haskell-extras/Foreign/Marshal/Pool.hs lib/haskell-extras/Prelude.hs lib/haskell-extras/Control/Monad/Fix.hs \
+    lib/haskell-extras/Data/Complex.hs lib/haskell-extras/Data/IORef.hs lib/haskell-extras/System/Console/GetOpt.hs lib/haskell-extras/Data/List.hs lib/haskell-extras/System/Cmd.hs \
+    lib/haskell-extras/System/Random.hs lib/haskell-extras/Data/Unicode.hs lib/haskell-extras/Foreign/ForeignPtr.hs lib/haskell-extras/System/Time.hs lib/haskell-extras/Control/Exception.hs \
+    lib/haskell-extras/Foreign/StablePtr.hs lib/haskell-extras/Foreign/C.hs lib/haskell-extras/Data/Bits.hs lib/haskell-extras/Foreign/Marshal.hs lib/haskell-extras/Foreign.hs \
+    lib/haskell-extras/Data/Array/Unboxed.hs lib/haskell-extras/Data/Function.hs lib/haskell-extras/Data/Ix.hs jhc-prim-1.0.hl jhc-1.0.hl
+	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
+haskell2010-0.8.0.hl: lib/haskell2010/haskell2010.yaml.m4 jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
+flat-foreign-1.0.hl: lib/flat-foreign/flat-foreign.yaml lib/flat-foreign/StablePtr.hs lib/flat-foreign/MarshalAlloc.hs lib/flat-foreign/CForeign.hs lib/flat-foreign/Storable.hs \
+    lib/flat-foreign/Ptr.hs lib/flat-foreign/MarshalArray.hs lib/flat-foreign/Int.hs lib/flat-foreign/CString.hs lib/flat-foreign/Word.hs \
+    lib/flat-foreign/CError.hs lib/flat-foreign/CTypes.hs lib/flat-foreign/MarshalError.hs lib/flat-foreign/MarshalUtils.hs lib/flat-foreign/Bits.hs \
+    lib/flat-foreign/ForeignPtr.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
+haskell98-1.0.hl: lib/haskell98/haskell98.yaml lib/haskell98/System.hs lib/haskell98/List.hs lib/haskell98/Time.hs lib/haskell98/Array.hs \
+    lib/haskell98/Random.hs lib/haskell98/Complex.hs lib/haskell98/Locale.hs lib/haskell98/CPUTime.hs lib/haskell98/Ratio.hs \
+    lib/haskell98/Monad.hs lib/haskell98/Directory.hs lib/haskell98/IO.hs lib/haskell98/Ix.hs lib/haskell98/Char.hs \
+    lib/haskell98/Maybe.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
hunk ./library_deps.make 40
-haskell2010-0.8.0.hl: lib/haskell2010/haskell2010.yaml.m4 jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+applicative-1.0.hl: lib/applicative/applicative.yaml lib/applicative/Control/Arrow.hs lib/applicative/Control/Applicative.hs lib/applicative/Data/Foldable.hs lib/applicative/Control/Category.hs \
+    lib/applicative/Data/Traversable.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
hunk ./library_deps.make 43
-JHC_LIBS = base-1.0.hl applicative-1.0.hl flat-foreign-1.0.hl haskell98-1.0.hl jhc-1.0.hl \
-    jhc-prim-1.0.hl haskell2010-0.8.0.hl
-containers-0.3.0.0.hl: lib/ext/containers.cabal jhc-prim-1.0.hl applicative-1.0.hl base-1.0.hl jhc-1.0.hl \
+JHC_LIBS = jhc-prim-1.0.hl jhc-1.0.hl haskell-extras-0.8.0.hl haskell2010-0.8.0.hl flat-foreign-1.0.hl \
+    haskell98-1.0.hl applicative-1.0.hl
+containers-0.3.0.0.hl: lib/ext/containers.cabal jhc-prim-1.0.hl applicative-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl \
     lib/ext/containers.patch
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 48
-Diff-0.1.2.hl: lib/ext/Diff.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+Diff-0.1.2.hl: lib/ext/Diff.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 50
-html-1.0.1.2.hl: lib/ext/html.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+html-1.0.1.2.hl: lib/ext/html.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 52
-HUnit-1.2.2.1.hl: lib/ext/HUnit.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+HUnit-1.2.2.1.hl: lib/ext/HUnit.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 54
-parsec-2.1.0.1.hl: lib/ext/parsec.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+parsec-2.1.0.1.hl: lib/ext/parsec.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 56
-pretty-1.0.1.1.hl: lib/ext/pretty.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+pretty-1.0.1.1.hl: lib/ext/pretty.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 58
-QuickCheck-1.2.0.0.hl: lib/ext/QuickCheck.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+QuickCheck-1.2.0.0.hl: lib/ext/QuickCheck.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 60
-safe-0.2.hl: lib/ext/safe.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+safe-0.2.hl: lib/ext/safe.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 62
-smallcheck-0.4.hl: lib/ext/smallcheck.cabal jhc-prim-1.0.hl haskell98-1.0.hl base-1.0.hl jhc-1.0.hl \
+smallcheck-0.4.hl: lib/ext/smallcheck.cabal jhc-prim-1.0.hl haskell98-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl \
     lib/ext/smallcheck.patch
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 65
-xhtml-3000.2.0.1.hl: lib/ext/xhtml.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+xhtml-3000.2.0.1.hl: lib/ext/xhtml.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 67
-transformers-0.2.1.0.hl: lib/ext/transformers.cabal jhc-prim-1.0.hl applicative-1.0.hl base-1.0.hl jhc-1.0.hl
+transformers-0.2.1.0.hl: lib/ext/transformers.cabal jhc-prim-1.0.hl applicative-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 69
-filepath-1.2.0.0.hl: lib/ext/filepath.cabal jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl
+filepath-1.2.0.0.hl: lib/ext/filepath.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 71
-deepseq-1.1.0.2.hl: lib/ext/deepseq.cabal jhc-prim-1.0.hl applicative-1.0.hl containers-0.3.0.0.hl base-1.0.hl \
+deepseq-1.1.0.2.hl: lib/ext/deepseq.cabal jhc-prim-1.0.hl applicative-1.0.hl containers-0.3.0.0.hl haskell-extras-0.8.0.hl \
     jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 74
-bytestring-0.9.2.0.hl: lib/ext/bytestring.yaml jhc-prim-1.0.hl base-1.0.hl jhc-1.0.hl lib/ext/bytestring.patch
+bytestring-0.9.2.0.hl: lib/ext/bytestring.yaml jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl lib/ext/bytestring.patch
 	perl utils/build_extlibs.prl $<
 JHC_EXT_LIBS = containers-0.3.0.0.hl Diff-0.1.2.hl html-1.0.1.2.hl HUnit-1.2.2.1.hl parsec-2.1.0.1.hl \
     pretty-1.0.1.1.hl QuickCheck-1.2.0.0.hl safe-0.2.hl smallcheck-0.4.hl xhtml-3000.2.0.1.hl \
hunk ./library_deps.make 78
-    transformers-0.2.1.0.hl filepath-1.2.0.0.hl deepseq-1.1.0.2.hl bytestring-0.9.2.0.hl
+    transformers-0.2.1.0.hl filepath-1.2.0.0.hl deepseq-1.1.0.2.hl
[clean up configure.ac a little
John Meacham <[email protected]>**20120307085227
 Ignore-this: 255bde23aa451530727987934e68787
] hunk ./Makefile.am 51
 	 -I$(srcdir)/src
 
 PACKAGES= -hide-all-packages -package base -package fgl -package regex-compat -package random -package array -package directory \
-          -package bytestring -package binary -package pretty -package mtl -package containers \
-	  -package unix  -package utf8-string -package zlib -package HsSyck \
+          -package bytestring -package binary -package mtl -package containers \
+	  -package unix -package utf8-string -package zlib -package HsSyck \
 	  -package filepath -package process
 
 GHCLANG= -XTypeFamilies -XViewPatterns -XUndecidableInstances -XOverlappingInstances \
hunk ./configure.ac 44
 GHCFLAGS="-hide-all-packages -package base"
 GHC_CHECK_MODULE(Data.Generics.Instances,syb,,,[])
 GHC_CHECK_MODULE(System.Time,old-time,,,[])
+GHC_CHECK_MODULE(Text.PrettyPrint.HughesPJ,pretty,,,[])
 GHC_CHECK_MODULE(System.Console.Readline,readline,,,[
      GHC_CHECK_MODULE(System.Console.Editline.Readline,editline,,
          GHCFLAGS="$GHCFLAGS -DUSE_EDITLINE"
hunk ./configure.ac 54
       ])
 ])
 
-GHC_CHECK_MODULE(System,,,[] ,[ GHCINC="$GHCINC -icompat/haskell98"])
+GHC_CHECK_MODULE(System,base,,[] ,[ GHCINC="$GHCINC -icompat/haskell98"])
 
 AC_PROGRAM_REQUIRE(hsc2hs,hsc2hs,     [  --with-hsc2hs=<hsc2hs location>    Specify location of hsc2hs.])
 if test -z "$HSC2HS"; then
hunk ./configure.ac 62
     exit 1
 fi
 
-GHCFLAGS="$GHCFLAGS -package pretty"
 TRY_COMPILE_GHC([
 import Text.PrettyPrint.HughesPJ
 import Data.Monoid
[update library dependencies
John Meacham <[email protected]>**20120307100809
 Ignore-this: 8a7d092c6112d7a5590d2adaec9c271a
] hunk ./lib/Test/QuickCheck.hs 1
------------------------------------------------------------------------------
--- |
--- Module      :  Test.QuickCheck
--- Copyright   :  (c) Koen Claessen, John Hughes 2001
--- License     :  BSD-style (see the file libraries/base/LICENSE)
---
--- Maintainer  :  [email protected]
--- Stability   :  experimental
--- Portability :  portable
---
--- QuickCheck v.0.2
--- DRAFT implementation; last update 000104.
--- Koen Claessen, John Hughes.
--- This file represents work in progress, and might change at a later date.
---
------------------------------------------------------------------------------
-
-module Test.QuickCheck
-  -- testing functions
-  ( quickCheck    -- :: prop -> IO ()
-  , verboseCheck  -- :: prop -> IO ()
-  , test          -- :: prop -> IO ()  -- = quickCheck
-
-  , Config(Config, configMaxTest, configMaxFail, configSize, configEvery)    -- :: *
-  , defaultConfig -- :: Config
-  , check         -- :: Config -> prop -> IO ()
-
-  -- property combinators
-  , forAll        -- :: Gen a -> (a -> prop) -> prop
-  , (==>)         -- :: Bool -> prop -> prop
-
-  -- gathering test-case information
-  , label         -- :: String         -> prop -> prop
-  , collect       -- :: Show a => a    -> prop -> prop
-  , classify      -- :: Bool -> String -> prop -> prop
-  , trivial       -- :: Bool           -> prop -> prop
-
-  -- generator combinators
-  , Gen           -- :: * -> * ; Functor, Monad
-
-  , elements      -- :: [a] -> Gen a
-  , two           -- :: Gen a -> Gen (a,a)
-  , three         -- :: Gen a -> Gen (a,a,a)
-  , four          -- :: Gen a -> Gen (a,a,a,a)
-
-  , sized         -- :: (Int -> Gen a) -> Gen a
-  , resize        -- :: Int -> Gen a -> Gen a
-  , choose        -- :: Random a => (a, a) -> Gen a
-  , oneof         -- :: [Gen a] -> Gen a
-  , frequency     -- :: [(Int, Gen a)] -> Gen a
-
-  , vector        -- :: Arbitrary a => Int -> Gen [a]
-
-  -- default generators
-  , Arbitrary(arbitrary,coarbitrary) -- :: class
-  , rand          -- :: Gen StdGen
-  , promote       -- :: (a -> Gen b) -> Gen (a -> b)
-  , variant       -- :: Int -> Gen a -> Gen a
-
-  -- testable
-  , Testable(property)  -- :: class
-  , Property      -- :: *
-
-  -- For writing your own driver
-  , Result(Result,ok,arguments)	 -- :: data
-  , generate	 -- :: Int -> StdGen -> Gen a -> a
-  , evaluate     -- :: Testable a => a -> Gen Result
-  )
- where
-
-import Prelude
-
-import Random
-import List( group, sort, intersperse )
-import Monad( liftM2, liftM3, liftM4 )
-
-infixr 0 ==>
-infix  1 `classify`
-
---------------------------------------------------------------------
--- Generator
-
-newtype Gen a
-  = Gen (Int -> StdGen -> a)
-
-sized :: (Int -> Gen a) -> Gen a
-sized fgen = Gen (\n r -> let Gen m = fgen n in m n r)
-
-resize :: Int -> Gen a -> Gen a
-resize n (Gen m) = Gen (\_ r -> m n r)
-
-rand :: Gen StdGen
-rand = Gen (\n r -> r)
-
-promote :: (a -> Gen b) -> Gen (a -> b)
-promote f = Gen (\n r -> \a -> let Gen m = f a in m n r)
-
-variant :: Int -> Gen a -> Gen a
-variant v (Gen m) = Gen (\n r -> m n (rands r !! (v+1)))
- where
-  rands r0 = r1 : rands r2 where (r1, r2) = split r0
-
-generate :: Int -> StdGen -> Gen a -> a
-generate n rnd (Gen m) = m size rnd'
- where
-  (size, rnd') = randomR (0, n) rnd
-
-instance Functor Gen where
-  fmap f m = m >>= return . f
-
-instance Monad Gen where
-  return a    = Gen (\n r -> a)
-  Gen m >>= k =
-    Gen (\n r0 -> let (r1,r2) = split r0
-                      Gen m'  = k (m n r1)
-                   in m' n r2)
-
--- derived
-
-choose :: Random a => (a, a) -> Gen a
-choose bounds = (fst . randomR bounds) `fmap` rand
-
-elements :: [a] -> Gen a
-elements xs = (xs !!) `fmap` choose (0, length xs - 1)
-
-vector :: Arbitrary a => Int -> Gen [a]
-vector n = sequence [ arbitrary | i <- [1..n] ]
-
-oneof :: [Gen a] -> Gen a
-oneof gens = elements gens >>= id
-
-frequency :: [(Int, Gen a)] -> Gen a
-frequency xs = choose (1, tot) >>= (`pick` xs)
- where
-  tot = sum (map fst xs)
-
-  pick n ((k,x):xs)
-    | n <= k    = x
-    | otherwise = pick (n-k) xs
-
--- general monadic
-
-two :: Monad m => m a -> m (a, a)
-two m = liftM2 (,) m m
-
-three :: Monad m => m a -> m (a, a, a)
-three m = liftM3 (,,) m m m
-
-four :: Monad m => m a -> m (a, a, a, a)
-four m = liftM4 (,,,) m m m m
-
---------------------------------------------------------------------
--- Arbitrary
-
-class Arbitrary a where
-  arbitrary   :: Gen a
-  coarbitrary :: a -> Gen b -> Gen b
-
-instance Arbitrary () where
-  arbitrary     = return ()
-  coarbitrary _ = variant 0
-
-instance Arbitrary Bool where
-  arbitrary     = elements [True, False]
-  coarbitrary b = if b then variant 0 else variant 1
-
-instance Arbitrary Int where
-  arbitrary     = sized $ \n -> choose (-n,n)
-  coarbitrary n = variant (if n >= 0 then 2*n else 2*(-n) + 1)
-
-instance Arbitrary Integer where
-  arbitrary     = sized $ \n -> choose (-fromIntegral n,fromIntegral n)
-  coarbitrary n = variant (fromInteger (if n >= 0 then 2*n else 2*(-n) + 1))
-
-instance Arbitrary Float where
-  arbitrary     = liftM3 fraction arbitrary arbitrary arbitrary
-  coarbitrary x = coarbitrary (decodeFloat x)
-
-instance Arbitrary Double where
-  arbitrary     = liftM3 fraction arbitrary arbitrary arbitrary
-  coarbitrary x = coarbitrary (decodeFloat x)
-
-fraction a b c = fromInteger a + (fromInteger b / (abs (fromInteger c) + 1))
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (a, b) where
-  arbitrary          = liftM2 (,) arbitrary arbitrary
-  coarbitrary (a, b) = coarbitrary a . coarbitrary b
-
-instance (Arbitrary a, Arbitrary b, Arbitrary c) => Arbitrary (a, b, c) where
-  arbitrary             = liftM3 (,,) arbitrary arbitrary arbitrary
-  coarbitrary (a, b, c) = coarbitrary a . coarbitrary b . coarbitrary c
-
-instance (Arbitrary a, Arbitrary b, Arbitrary c, Arbitrary d)
-      => Arbitrary (a, b, c, d)
- where
-  arbitrary = liftM4 (,,,) arbitrary arbitrary arbitrary arbitrary
-  coarbitrary (a, b, c, d) =
-    coarbitrary a . coarbitrary b . coarbitrary c . coarbitrary d
-
-instance Arbitrary a => Arbitrary [a] where
-  arbitrary          = sized (\n -> choose (0,n) >>= vector)
-  coarbitrary []     = variant 0
-  coarbitrary (a:as) = coarbitrary a . variant 1 . coarbitrary as
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (a -> b) where
-  arbitrary         = promote (`coarbitrary` arbitrary)
-  coarbitrary f gen = arbitrary >>= ((`coarbitrary` gen) . f)
-
---------------------------------------------------------------------
--- Testable
-
-data Result
-  = Result { ok :: Maybe Bool, stamp :: [String], arguments :: [String] }
-
-nothing :: Result
-nothing = Result{ ok = Nothing, stamp = [], arguments = [] }
-
-newtype Property
-  = Prop (Gen Result)
-
-result :: Result -> Property
-result res = Prop (return res)
-
-evaluate :: Testable a => a -> Gen Result
-evaluate a = gen where Prop gen = property a
-
-class Testable a where
-  property :: a -> Property
-
-instance Testable () where
-  property _ = result nothing
-
-instance Testable Bool where
-  property b = result (nothing{ ok = Just b })
-
-instance Testable Result where
-  property res = result res
-
-instance Testable Property where
-  property prop = prop
-
-instance (Arbitrary a, Show a, Testable b) => Testable (a -> b) where
-  property f = forAll arbitrary f
-
-forAll :: (Show a, Testable b) => Gen a -> (a -> b) -> Property
-forAll gen body = Prop $
-  do a   <- gen
-     res <- evaluate (body a)
-     return (argument a res)
- where
-  argument a res = res{ arguments = show a : arguments res }
-
-(==>) :: Testable a => Bool -> a -> Property
-True  ==> a = property a
-False ==> a = property ()
-
-label :: Testable a => String -> a -> Property
-label s a = Prop (add `fmap` evaluate a)
- where
-  add res = res{ stamp = s : stamp res }
-
-classify :: Testable a => Bool -> String -> a -> Property
-classify True  name = label name
-classify False _    = property
-
-trivial :: Testable a => Bool -> a -> Property
-trivial = (`classify` "trivial")
-
-collect :: (Show a, Testable b) => a -> b -> Property
-collect v = label (show v)
-
---------------------------------------------------------------------
--- Testing
-
-data Config = Config
-  { configMaxTest :: Int
-  , configMaxFail :: Int
-  , configSize    :: Int -> Int
-  , configEvery   :: Int -> [String] -> String
-  }
-
-quick :: Config
-quick = Config
-  { configMaxTest = 100
-  , configMaxFail = 1000
-  , configSize    = (+ 3) . (`div` 2)
-  , configEvery   = \n args -> let s = show n in s ++ [ '\b' | _ <- s ]
-  }
-
-verbose :: Config
-verbose = quick
-  { configEvery = \n args -> show n ++ ":\n" ++ unlines args
-  }
-
-defaultConfig :: Config
-defaultConfig = quick
-
-test, quickCheck, verboseCheck :: Testable a => a -> IO ()
-test         = check quick
-quickCheck   = check quick
-verboseCheck = check verbose
-
-check :: Testable a => Config -> a -> IO ()
-check config a =
-  do rnd <- newStdGen
-     tests config (evaluate a) rnd 0 0 []
-
-tests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO ()
-tests config gen rnd0 ntest nfail stamps
-  | ntest == configMaxTest config = do done "OK, passed" ntest stamps
-  | nfail == configMaxFail config = do done "Arguments exhausted after" ntest stamps
-  | otherwise               =
-      do putStr (configEvery config ntest (arguments result))
-         case ok result of
-           Nothing    ->
-             tests config gen rnd1 ntest (nfail+1) stamps
-           Just True  ->
-             tests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
-           Just False ->
-             putStr ( "Falsifiable, after "
-                   ++ show ntest
-                   ++ " tests:\n"
-                   ++ unlines (arguments result)
-                    )
-     where
-      result      = generate (configSize config ntest) rnd2 gen
-      (rnd1,rnd2) = split rnd0
-
-done :: String -> Int -> [[String]] -> IO ()
-done mesg ntest stamps =
-  do putStr ( mesg ++ " " ++ show ntest ++ " tests" ++ table )
- where
-  table = display
-        . map entry
-        . reverse
-        . sort
-        . map pairLength
-        . group
-        . sort
-        . filter (not . null)
-        $ stamps
-
-  display []  = ".\n"
-  display [x] = " (" ++ x ++ ").\n"
-  display xs  = ".\n" ++ unlines (map (++ ".") xs)
-
-  pairLength xss@(xs:_) = (length xss, xs)
-  entry (n, xs)         = percentage n ntest
-                       ++ " "
-                       ++ concat (intersperse ", " xs)
-
-  percentage n m        = show ((100 * n) `div` m) ++ "%"
-
---------------------------------------------------------------------
--- the end.
rmfile ./lib/Test/QuickCheck.hs
hunk ./lib/Test/QuickCheck/Batch.hs 1
------------------------------------------------------------------------------
--- |
--- Module      :  Test.QuickCheck.Batch
--- Copyright   :  (c) Andy Gill 2001
--- License     :  BSD-style (see the file libraries/base/LICENSE)
---
--- Maintainer  :  [email protected]
--- Stability   :  experimental
--- Portability :  non-portable (uses Control.Exception, Control.Concurrent)
---
--- This is a batch driver for running QuickCheck (GHC only).
---
------------------------------------------------------------------------------
-
-{-
- - Here is the key for reading the output.
- -  . = test successful
- -  ? = every example passed, but quickcheck did not find enough good examples
- -  * = test aborted for some reason (out-of-time, bottom, etc)
- -  # = test failed outright
- -
- - We also provide the dangerous "isBottom".
- -
- - Here is is an example of use for sorting:
- -
- - testOptions :: TestOptions
- - testOptions = TestOptions
- -                 { no_of_tests = 100		-- number of tests to run
- -                 , length_of_tests = 1	-- 1 second max per check
- -						-- where a check == n tests
- -                 , debug_tests = False	-- True => debugging info
- -                 }
- -
- - prop_sort1 xs = sort xs == sortBy compare xs
- -   where types = (xs :: [OrdALPHA])
- - prop_sort2 xs =
- -         (not (null xs)) ==>
- -         (head (sort xs) == minimum xs)
- -   where types = (xs :: [OrdALPHA])
- - prop_sort3 xs = (not (null xs)) ==>
- -         last (sort xs) == maximum xs
- -   where types = (xs :: [OrdALPHA])
- - prop_sort4 xs ys =
- -         (not (null xs)) ==>
- -         (not (null ys)) ==>
- -         (head (sort (xs ++ ys)) == min (minimum xs) (minimum ys))
- -   where types = (xs :: [OrdALPHA], ys :: [OrdALPHA])
- - prop_sort6 xs ys =
- -         (not (null xs)) ==>
- -         (not (null ys)) ==>
- -         (last (sort (xs ++ ys)) == max (maximum xs) (maximum ys))
- -   where types = (xs :: [OrdALPHA], ys :: [OrdALPHA])
- - prop_sort5 xs ys =
- -         (not (null xs)) ==>
- -         (not (null ys)) ==>
- -         (head (sort (xs ++ ys)) == max (maximum xs) (maximum ys))
- -   where types = (xs :: [OrdALPHA], ys :: [OrdALPHA])
- -
- - test_sort = runTests "sort" testOptions
- -         [ run prop_sort1
- -         , run prop_sort2
- -         , run prop_sort3
- -         , run prop_sort4
- -         , run prop_sort5
- -         ]
- -
- - When run, this gives
- - Main> test_sort
- -                     sort : .....
- -
- - You would tie together all the test_* functions
- - into one test_everything, on a per module basis.
- -
- - Examples of use of bottom and isBottom:
- -      {- test for abort -}
- -	prop_head2 = isBottom (head [])
- -      {- test for strictness -}
- -	prop_head3 = isBottom (head bottom)
- -}
-
-module Test.QuickCheck.Batch
-   ( run		-- :: Testable a => a -> TestOptions -> IO TestResult
-   , runTests		-- :: String -> TestOptions ->
-			--	[TestOptions -> IO TestResult] -> IO ()
-   , defOpt		-- :: TestOptions
-   , TestOptions (..)
-   , TestResult (..)
-   , isBottom		-- :: a -> Bool
-   , bottom		-- :: a 		{- _|_ -}
-   ) where
-
-import Prelude
-
-import System.Random
-import Control.Concurrent
-import Control.Exception hiding (catch, evaluate)
-import qualified Control.Exception as Exception (catch, evaluate)
-import Test.QuickCheck
-import System.IO.Unsafe
-
-data TestOptions = TestOptions {
-	no_of_tests     :: Int,
-	length_of_tests :: Int,
-	debug_tests     :: Bool }
-
-defOpt :: TestOptions
-defOpt = TestOptions
-	{ no_of_tests = 100
-	, length_of_tests = 1
-	, debug_tests = False
-	}
-
-data TestResult = TestOk 	String  Int [[String]]
-		| TestExausted 	String  Int [[String]]
-		| TestFailed   [String] Int
-		| TestAborted   Exception
-
-tests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]]
-      -> IO TestResult
-tests config gen rnd0 ntest nfail stamps
-  | ntest == configMaxTest config = return (TestOk  "OK, passed" ntest stamps)
-  | nfail == configMaxFail config = return (TestExausted "Arguments exhausted after"
-					 ntest stamps)
-  | otherwise               =
-      do (if not (null txt) then putStr txt else return ())
-	 case ok result of
-           Nothing    ->
-             tests config gen rnd1 ntest (nfail+1) stamps
-           Just True  ->
-             tests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
-           Just False ->
-             do return (TestFailed (arguments result) ntest)
-     where
-      txt         = configEvery config ntest (arguments result)
-      result      = generate (configSize config ntest) rnd2 gen
-      (rnd1,rnd2) = split rnd0
-
-batch n v = Config
-  { configMaxTest = n
-  , configMaxFail = n * 10
-  , configSize    = (+ 3) . (`div` 2)
-  , configEvery   = \n args -> if v then show n ++ ":\n" ++ unlines args else ""
-  }
-
--- Here we use the same random number each time,
--- so we get reproducable results!
-run :: Testable a => a -> TestOptions -> IO TestResult
-run a TestOptions { no_of_tests = n, length_of_tests = len, debug_tests = debug } =
-  do me <- myThreadId
-     ready <- newEmptyMVar
-     r <- if len == 0
-	   then try theTest
-	   else try (do
-     	     -- This waits a bit, then raises an exception in its parent,
-             -- saying, right, you've had long enough!
-	     watcher <- forkIO (Exception.catch
-			      (do threadDelay (len * 1000 * 1000)
-				  takeMVar ready
-				  throwTo me NonTermination
-				  return ())
-			      (\ _ -> return ()))
-	     -- Tell the watcher we are starting...
-	     putMVar ready ()
-             -- This is cheating, because possibly some of the internal message
-             -- inside "r" might be _|_, but anyway....
-	     r <- theTest
-	     -- Now, we turn off the watcher.
-	     -- Ignored if the watcher is already dead,
-	     -- (unless some unlucky thread picks up the same name)
-	     killThread watcher
-	     return r)
-     case r of
-        Right r -> return r
-        Left  e -> return (TestAborted e)
-  where
-	theTest = tests (batch n debug) (evaluate a) (mkStdGen 0) 0 0 []
-
--- Prints a one line summary of various tests with common theme
-runTests :: String -> TestOptions -> [TestOptions -> IO TestResult] -> IO ()
-runTests name scale actions =
-  do putStr (rjustify 25 name ++ " : ")
-     f <- tr 1 actions [] 0
-     mapM fa f
-     return ()
-  where
-	rjustify n s = replicate (max 0 (n - length s)) ' ' ++ s
-
-	tr n [] xs c = do
-			putStr (rjustify (max 0 (35-n)) " (" ++ show c ++ ")\n")
-			return xs
-	tr n (action:actions) others c =
-	   do r <- action scale
-	      case r of
-		(TestOk _ m _)
-			-> do { putStr "." ;
-			       tr (n+1) actions others (c+m) }
-		(TestExausted s m ss)
-
-			-> do { putStr "?" ;
-			       tr (n+1) actions others (c+m) }
-		(TestAborted e)
-			-> do { putStr "*" ;
-			       tr (n+1) actions others c }
-	  	(TestFailed f num)
-			-> do { putStr "#" ;
-			        tr (n+1) actions ((f,n,num):others) (c+num) }
-
-	fa :: ([String],Int,Int) -> IO ()
-	fa (f,n,no) =
-	  do putStr "\n"
-	     putStr ("    ** test "
-			++ show (n  :: Int)
-			++ " of "
-			++ name
-			++ " failed with the binding(s)\n")
-	     sequence_ [putStr ("    **   " ++ v ++ "\n")
-			| v <- f ]
-  	     putStr "\n"
-
--- Look out behind you! These can be misused badly.
--- However, in the context of a batch tester, can also be very useful.
-
-bottom :: a
-bottom = error "_|_"
-
-isBottom :: a -> Bool
-isBottom a = unsafePerformIO (do
-	a' <- try (Exception.evaluate a)
-	case a' of
-	   Left _ -> return True
-	   Right _ -> return False)
rmfile ./lib/Test/QuickCheck/Batch.hs
hunk ./lib/Test/QuickCheck/Poly.hs 1
------------------------------------------------------------------------------
--- |
--- Module      :  Test.QuickCheck.Poly
--- Copyright   :  (c) Andy Gill 2001
--- License     :  BSD-style (see the file libraries/base/LICENSE)
---
--- Maintainer  :  [email protected]
--- Stability   :  experimental
--- Portability :  portable
---
--- This is an attempt to emulate polymorphic types for the
--- purposes of testing by using abstract monomorphic types.
---
--- It is likely that future versions of QuickCheck will
--- include some polymorphic emulation testing facility,
--- but this module can be used for now.
---
------------------------------------------------------------------------------
-
-module Test.QuickCheck.Poly
-  ( ALPHA
-  , BETA
-  , GAMMA
-  , OrdALPHA
-  , OrdBETA
-  , OrdGAMMA
-  ) where
-
-import Prelude
-
-import Test.QuickCheck
-import Test.QuickCheck.Utils
-
-{- This is the basic pseudo-polymorphic object.
- - The idea is you can't cheat, and use the integer
- - directly, but need to use the abstraction.
- -
- - We use phantom types (ref: Domain Specific Embedded Compilers,
- - Daan Leijen & Erik Meijer, 2nd Conference of Domain Specific
- - Languages, Austin, TX, 1999)
- -}
-
-newtype Poly a = Poly Int
-
-instance Show (Poly a) where
-        show (Poly a) = "_" ++ show a
-
-instance Arbitrary (Poly a) where
-    arbitrary            = sized $ \n -> (choose (1,n) >>= return . Poly)
-    coarbitrary (Poly n) = variant (if n >= 0 then 2*n else 2*(-n) + 1)
-
-instance Eq a => Eq (Poly a) where
-        (Poly a) == (Poly b) = a == b
-
-instance Ord a => Ord (Poly a) where
-        (Poly a) `compare` (Poly b) = a `compare` b
-
-{-
- - These are what we export, our pseudo-polymorphic instances.
- -}
-
-type ALPHA = Poly ALPHA_
-data ALPHA_ = ALPHA_ deriving (Eq)
-
-type BETA = Poly BETA_
-data BETA_ = BETA_ deriving (Eq)
-
-type GAMMA = Poly GAMMA_
-data GAMMA_ = GAMMA_ deriving (Eq)
-
-type OrdALPHA = Poly OrdALPHA_
-data OrdALPHA_ = OrdALPHA_ deriving (Eq,Ord)
-
-type OrdBETA = Poly OrdBETA_
-data OrdBETA_ = OrdBETA_ deriving (Eq,Ord)
-
-type OrdGAMMA = Poly OrdGAMMA_
-data OrdGAMMA_ = OrdGAMMA_ deriving (Eq,Ord)
-
-{-
- - This is a condition on OrdALPHA, OrdBETA, etc, itself.
- - It states that all OrdALPHA objects obey total ordering.
- -}
-
-prop_OrdPOLY x y = isTotalOrder x y
-    where types = (x :: OrdALPHA, y :: OrdALPHA)
rmfile ./lib/Test/QuickCheck/Poly.hs
hunk ./lib/Test/QuickCheck/Utils.hs 1
------------------------------------------------------------------------------
--- |
--- Module      :  Test.QuickCheck.Utils
--- Copyright   :  (c) Andy Gill 2001
--- License     :  BSD-style (see the file libraries/base/LICENSE)
---
--- Maintainer  :  [email protected]
--- Stability   :  experimental
--- Portability :  portable
---
--- These are some general purpose utilities for use with QuickCheck.
---
------------------------------------------------------------------------------
-
-module Test.QuickCheck.Utils
-  ( isAssociativeBy
-  , isAssociative
-  , isCommutableBy
-  , isCommutable
-  , isTotalOrder
-  ) where
-
-import Prelude
-
-import Test.QuickCheck
-
-isAssociativeBy :: (Show a,Testable prop)
-		=> (a -> a -> prop) -> Gen a -> (a -> a -> a) -> Property
-isAssociativeBy (===) src (**) =
-     	forAll src $ \ a ->
-     	forAll src $ \ b ->
-     	forAll src $ \ c ->
-	((a ** b) ** c) === (a ** (b ** c))
-
-isAssociative :: (Arbitrary a,Show a,Eq a) => (a -> a -> a) -> Property
-isAssociative = isAssociativeBy (==) arbitrary
-
-isCommutableBy :: (Show a,Testable prop)
-	       => (b -> b -> prop) -> Gen a -> (a -> a -> b) -> Property
-isCommutableBy (===) src (**) =
-	forAll src $ \ a ->
-	forAll src $ \ b ->
-	(a ** b) === (b ** a)
-
-isCommutable :: (Arbitrary a,Show a,Eq b) => (a -> a -> b) -> Property
-isCommutable = isCommutableBy (==) arbitrary
-
-isTotalOrder :: (Arbitrary a,Show a,Ord a) => a -> a -> Property
-isTotalOrder x y =
-    classify (x > y)  "less than" $
-    classify (x == y) "equals" $
-    classify (x < y)  "greater than" $
-    x < y || x == y || x > y
rmfile ./lib/Test/QuickCheck/Utils.hs
rmdir ./lib/Test/QuickCheck
rmdir ./lib/Test
hunk ./lib/flat-foreign/flat-foreign.yaml 5
 Version: 1.0
 hs-source-dir: .
 build-depends: [haskell2010]
+options: --noauto
 exposed-modules: [ Bits, CError, CForeign, CString, CTypes, ForeignPtr, Int,
         MarshalAlloc, MarshalArray, MarshalError, MarshalUtils, Ptr,
         StablePtr, Storable, Word ]
hunk ./library_deps.make 17
     lib/jhc/Jhc/Monad.hs lib/jhc/System/IO/Unsafe.hs lib/jhc/System/Mem/StableName.hs lib/jhc/Jhc/Inst/Read.hs lib/jhc/Jhc/Maybe.hs \
     jhc-prim-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-haskell-extras-0.8.0.hl: lib/haskell-extras/haskell-extras.yaml.m4 lib/haskell-extras/System/Info.hs lib/haskell-extras/Data/Int.hs lib/haskell-extras/Debug/Trace.hs lib/haskell-extras/Data/Array.hs \
+haskell-extras-0.8.1.hl: lib/haskell-extras/haskell-extras.yaml.m4 lib/haskell-extras/System/Info.hs lib/haskell-extras/Data/Int.hs lib/haskell-extras/Debug/Trace.hs lib/haskell-extras/Data/Array.hs \
     lib/haskell-extras/Data/Typeable.hs lib/haskell-extras/Text/Printf.hs lib/haskell-extras/System/Directory.hs lib/haskell-extras/Data/Word.hs lib/haskell-extras/Data/Maybe.hs \
     lib/haskell-extras/System/IO/Error.hs lib/haskell-extras/System/IO/Binary.hs lib/haskell-extras/System/CPUTime.hs lib/haskell-extras/System/IO/Pipe.hs lib/haskell-extras/Control/Monad/Instances.hs \
     lib/haskell-extras/Foreign/Marshal/Error.hs lib/haskell-extras/System/Exit.hs lib/haskell-extras/System/Environment.hs lib/haskell-extras/Data/Array/IO.hs lib/haskell-extras/Data/Char.hs \
hunk ./library_deps.make 28
     lib/haskell-extras/Foreign/StablePtr.hs lib/haskell-extras/Foreign/C.hs lib/haskell-extras/Data/Bits.hs lib/haskell-extras/Foreign/Marshal.hs lib/haskell-extras/Foreign.hs \
     lib/haskell-extras/Data/Array/Unboxed.hs lib/haskell-extras/Data/Function.hs lib/haskell-extras/Data/Ix.hs jhc-prim-1.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
-haskell2010-0.8.0.hl: lib/haskell2010/haskell2010.yaml.m4 jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+haskell2010-0.8.1.hl: lib/haskell2010/haskell2010.yaml.m4 haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
 flat-foreign-1.0.hl: lib/flat-foreign/flat-foreign.yaml lib/flat-foreign/StablePtr.hs lib/flat-foreign/MarshalAlloc.hs lib/flat-foreign/CForeign.hs lib/flat-foreign/Storable.hs \
     lib/flat-foreign/Ptr.hs lib/flat-foreign/MarshalArray.hs lib/flat-foreign/Int.hs lib/flat-foreign/CString.hs lib/flat-foreign/Word.hs \
hunk ./library_deps.make 33
     lib/flat-foreign/CError.hs lib/flat-foreign/CTypes.hs lib/flat-foreign/MarshalError.hs lib/flat-foreign/MarshalUtils.hs lib/flat-foreign/Bits.hs \
-    lib/flat-foreign/ForeignPtr.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+    lib/flat-foreign/ForeignPtr.hs haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
 haskell98-1.0.hl: lib/haskell98/haskell98.yaml lib/haskell98/System.hs lib/haskell98/List.hs lib/haskell98/Time.hs lib/haskell98/Array.hs \
     lib/haskell98/Random.hs lib/haskell98/Complex.hs lib/haskell98/Locale.hs lib/haskell98/CPUTime.hs lib/haskell98/Ratio.hs \
hunk ./library_deps.make 38
     lib/haskell98/Monad.hs lib/haskell98/Directory.hs lib/haskell98/IO.hs lib/haskell98/Ix.hs lib/haskell98/Char.hs \
-    lib/haskell98/Maybe.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+    lib/haskell98/Maybe.hs haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
 applicative-1.0.hl: lib/applicative/applicative.yaml lib/applicative/Control/Arrow.hs lib/applicative/Control/Applicative.hs lib/applicative/Data/Foldable.hs lib/applicative/Control/Category.hs \
hunk ./library_deps.make 41
-    lib/applicative/Data/Traversable.hs jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+    lib/applicative/Data/Traversable.hs haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	./jhc $(LIB_OPTIONS) --build-hl $< -o $@
hunk ./library_deps.make 43
-JHC_LIBS = jhc-prim-1.0.hl jhc-1.0.hl haskell-extras-0.8.0.hl haskell2010-0.8.0.hl flat-foreign-1.0.hl \
+JHC_LIBS = jhc-prim-1.0.hl jhc-1.0.hl haskell-extras-0.8.1.hl haskell2010-0.8.1.hl flat-foreign-1.0.hl \
     haskell98-1.0.hl applicative-1.0.hl
hunk ./library_deps.make 45
-containers-0.3.0.0.hl: lib/ext/containers.cabal jhc-prim-1.0.hl applicative-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl \
+containers-0.3.0.0.hl: lib/ext/containers.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl applicative-1.0.hl \
     lib/ext/containers.patch
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 48
-Diff-0.1.2.hl: lib/ext/Diff.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+Diff-0.1.2.hl: lib/ext/Diff.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 50
-html-1.0.1.2.hl: lib/ext/html.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+html-1.0.1.2.hl: lib/ext/html.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 52
-HUnit-1.2.2.1.hl: lib/ext/HUnit.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+HUnit-1.2.2.1.hl: lib/ext/HUnit.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 54
-parsec-2.1.0.1.hl: lib/ext/parsec.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+parsec-2.1.0.1.hl: lib/ext/parsec.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 56
-pretty-1.0.1.1.hl: lib/ext/pretty.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+pretty-1.0.1.1.hl: lib/ext/pretty.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 58
-QuickCheck-1.2.0.0.hl: lib/ext/QuickCheck.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+QuickCheck-1.2.0.0.hl: lib/ext/QuickCheck.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 60
-safe-0.2.hl: lib/ext/safe.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+safe-0.2.hl: lib/ext/safe.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 62
-smallcheck-0.4.hl: lib/ext/smallcheck.cabal jhc-prim-1.0.hl haskell98-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl \
+smallcheck-0.4.hl: lib/ext/smallcheck.cabal haskell-extras-0.8.1.hl haskell98-1.0.hl jhc-prim-1.0.hl jhc-1.0.hl \
     lib/ext/smallcheck.patch
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 65
-xhtml-3000.2.0.1.hl: lib/ext/xhtml.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+xhtml-3000.2.0.1.hl: lib/ext/xhtml.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 67
-transformers-0.2.1.0.hl: lib/ext/transformers.cabal jhc-prim-1.0.hl applicative-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+transformers-0.2.1.0.hl: lib/ext/transformers.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl applicative-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 69
-filepath-1.2.0.0.hl: lib/ext/filepath.cabal jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl
+filepath-1.2.0.0.hl: lib/ext/filepath.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 71
-deepseq-1.1.0.2.hl: lib/ext/deepseq.cabal jhc-prim-1.0.hl applicative-1.0.hl containers-0.3.0.0.hl haskell-extras-0.8.0.hl \
-    jhc-1.0.hl
+deepseq-1.1.0.2.hl: lib/ext/deepseq.cabal haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl containers-0.3.0.0.hl \
+    applicative-1.0.hl
 	perl utils/build_extlibs.prl $<
hunk ./library_deps.make 74
-bytestring-0.9.2.0.hl: lib/ext/bytestring.yaml jhc-prim-1.0.hl haskell-extras-0.8.0.hl jhc-1.0.hl lib/ext/bytestring.patch
+bytestring-0.9.2.0.hl: lib/ext/bytestring.yaml haskell-extras-0.8.1.hl jhc-prim-1.0.hl jhc-1.0.hl lib/ext/bytestring.patch
 	perl utils/build_extlibs.prl $<
 JHC_EXT_LIBS = containers-0.3.0.0.hl Diff-0.1.2.hl html-1.0.1.2.hl HUnit-1.2.2.1.hl parsec-2.1.0.1.hl \
     pretty-1.0.1.1.hl QuickCheck-1.2.0.0.hl safe-0.2.hl smallcheck-0.4.hl xhtml-3000.2.0.1.hl \
hunk ./library_deps.make 78
-    transformers-0.2.1.0.hl filepath-1.2.0.0.hl deepseq-1.1.0.2.hl
+    transformers-0.2.1.0.hl filepath-1.2.0.0.hl deepseq-1.1.0.2.hl 
hunk ./src/data/targets.ini.in 23
 cflags_debug=-g
 cflags_nodebug=-DNDEBUG -O3
 profile=false
-autoload=base,haskell98
+autoload=haskell2010,haskell-extras,haskell98
 
 
 ; cross compilation entries

Context:

[add auto-generated make rules for all libraries.
John Meacham <[email protected]>**20120307055016
 Ignore-this: a6febbaf42d19ca29b0541809182b93c
] 
[begin adding haskell2010 package
John Meacham <[email protected]>**20120307035605
 Ignore-this: eaae9201d70dece4f2e7bb115d295e07
] 
[start using Jhc.ForeignPtr
John Meacham <[email protected]>**20120307035523
 Ignore-this: 4947965ba3de583014a924e498ba5367
] 
[remove some files from drift_processed that no longer have DrIFT annotations
John Meacham <[email protected]>**20120307020552
 Ignore-this: 12c00145035104fbbf869072f3be3569
] 
[make Info type ids not depend on the exact format of TypeRep, reduce size of type ids from 32 to 8 bits.
John Meacham <[email protected]>**20120307014613
 Ignore-this: c2243c0c28122f03a4b869c28a449d8d
] 
[build_extlibs.prl: correctly check the return status of getstore
Roman Cheplyaka <[email protected]>**20120218071732
 Ignore-this: 20165069fc8aaa1528969216f7c51435
] 
[ghc 7.4 compatibility changes
John Meacham <[email protected]>**20120306035643
 Ignore-this: c15e182e5a05efb7a623f6386fbb9884
] 
[implement finalizers in the RTS, add foreignptr rts routines, properly set saved_gc on safe ffi calls
John Meacham <[email protected]>**20120221132313
 Ignore-this: 1a27919674abc4a6955c245eec88aaf9
] 
[add support for monolithic blocks that are plain malloced memory and can be big.
John Meacham <[email protected]>**20120221032043
 Ignore-this: 201ba4e67027f3336cfa5e984aefa89
] 
[introduce dedicated array allocation routine. clean up jgc garbage collector
John Meacham <[email protected]>**20120221011655
 Ignore-this: b8e153205aeaf94af76a97b0ee9aa895
] 
[make 'div' and 'mod' round to -Infinity properly
John Meacham <[email protected]>**20120220094634
 Ignore-this: c46b383b9a2a6a63ff44e30a8a63f376
] 
[add prototype for gc_alloc
John Meacham <[email protected]>**20120220050616
 Ignore-this: 444b34148332459dc0e3d32b7c55d3e0
] 
[fix deriving rules for read/show when it comes to labels
John Meacham <[email protected]>**20120220044322
 Ignore-this: 20c9c89ae066716fe3ec8eb4d37c6034
] 
[disabled buggy unused transformation in type analysis pass
John Meacham <[email protected]>**20120220031442
 Ignore-this: 8ad84739daff7f4faff0ba251898ea1a
] 
[move debugging routines to rts/profile.c
John Meacham <[email protected]>**20120217052015
 Ignore-this: d2e087faf6e3408dc135fd905d85244b
] 
[fix rts unit tests
John Meacham <[email protected]>**20120217035045
 Ignore-this: 460d7eadde056908b668ea27d5a69aa5
] 
[export gc_alloc
John Meacham <[email protected]>**20120217002235
 Ignore-this: dcb70b3ad303f0343147b4e1d6d413b9
] 
[Makes the class deriving mechanism more robust:
[email protected]**20120216214017
 Ignore-this: 6d93691849d255c310b2af7098572ea8
  - the names of the classes to be derived may be given qualified. 
  - the functions from the Prelude internally used need not be in scope
    and won't clash with other bindings.
] 
[Moved Jhc.List.drop to module Jhc.Basics (since it is used in instance deriving)
[email protected]**20120214222939
 Ignore-this: f95d4818bad6d79d8fc7566ee0912714
] 
[The typechecker now verifies that the main function has a type that can be unified with IO a. This is required by the Haskell 98 Report.
[email protected]**20120211050446
 Ignore-this: 8a1d8ca36929c0de0fb4357538ea6c5b
 
 Failing to do so allows both to accept invalid programs like:
 
 > main :: [()]
 > main = return ()
 
 and to reject valid programs like:
 
 > main = return ()
 
] 
[Improves the error message shown when a monomorphic pattern has a polymorphic type that cannot be defaulted. 
[email protected]**20120211045931
 Ignore-this: efd70b7535eb0444148aabdbe96ed0b9
 
 The previous error message seemed more like an internal error ("withDefaults.ambiguity: ...")
] 
[fix for building rts in different modes, profile,debug,windows
John Meacham <[email protected]>**20120216201402
 Ignore-this: 39b08c82b7239beaeaa6e77a3b986cd4
] 
[move rest of rts into seperate c files rather than including it directly.
John Meacham <[email protected]>**20120216090215
 Ignore-this: d0bf719a38e306f78e182a5c0107573d
] 
[add pragmaExp to the lexer/parser
John Meacham <[email protected]>**20120216044837
 Ignore-this: 77393cb5bdd28fba526d57d26ac099b8
] 
[update documentation with new extensions
John Meacham <[email protected]>**20120214172359
 Ignore-this: 2f412f29f20127ce3f97f200674ed8b6
] 
[fixes for android
John Meacham <[email protected]>**20120213150333
 Ignore-this: cf6df59b212e3402ec21507410485270
] 
[make += work with '-m' command line options
John Meacham <[email protected]>**20120213102300
 Ignore-this: 36cb4039cd34ba73d2cc973b7c00798b
] 
[move jhc_rts_alloc to gc_none
John Meacham <[email protected]>**20120213100906
 Ignore-this: 1c2e9028d72127acd5a448971266f627
] 
[added rts/rts_support, cleaned up rts code.
John Meacham <[email protected]>**20120213070644
 Ignore-this: 79533860331fbd02057748e3d1b81666
] 
[make 'Requires' a simple set, include the calling convention with the requirements.
John Meacham <[email protected]>**20120212053838
 Ignore-this: b7fa6f8ece79c96073d8638a876456de
] 
[move slub.c and jhc_jgc.* to rts directory
John Meacham <[email protected]>**20120212040246
 Ignore-this: a40354544b8908732c733bf8a38e7e68
] 
[add unit tests for stableptr
John Meacham <[email protected]>**20120212031148
 Ignore-this: 17b41baeec806fb53ca2c10c6489097
] 
[reorganize rts/ directory, add README for it
John Meacham <[email protected]>**20120212022718
 Ignore-this: c8a9f067696233958757830b62a7264b
] 
[add rts/test directory
John Meacham <[email protected]>**20120212004706
 Ignore-this: 1e6d0cb4ba809a1d6089d04704d5a60f
] 
[allow being explicit in export/import lists by specifying 'kind', 'class', 'type', or 'data'. add PTS rule to allow proper typing of Complex_
John Meacham <[email protected]>**20120211052157
 Ignore-this: 12155286186022f896d3474a2bb5d23a
] 
[fix Options.hs makefile dependency
John Meacham <[email protected]>**20120211024909
 Ignore-this: a0742d7ce4eba41314741b6ca2d6498d
] 
[added user defined kind extension
John Meacham <[email protected]>**20120211042248
 Ignore-this: ded329985c5c81aa8c4612f7aa19559b
] 
[Add missing src/Options.hs to jhc tarball
Sergei Trofimovich <[email protected]>**20120209065334
 Ignore-this: dfc50115ee26986ab2d303a462cd29b9
] 
[added mingw32-gcc to MINGW search
Sergei Trofimovich <[email protected]>**20110414073938
 Ignore-this: 87fa46f0e4532663a9d92930c9c38152
] 
[add c-- types for complex and vector values
John Meacham <[email protected]>**20120210051026
 Ignore-this: 4a1e4c8cec01f73b75913622c22fa55
] 
[add documentation for the multi-return ccall extension, clean up code.
John Meacham <[email protected]>**20120209201351
 Ignore-this: 47504b653ee9f71bde40e91959238292
] 
[add extension to allow multiple return values from c functions
John Meacham <[email protected]>**20120209142228
 Ignore-this: 51e4a3f9ca80ff2eae7f21376f0a0992
] 
[fix obscure error message for invalid instance reported by roman
John Meacham <[email protected]>**20120209114221
 Ignore-this: 98d60e20cb63caaebbe1269887160b9f
] 
[remove APrim type, use Prim directly, clean up corresponding cruft.
John Meacham <[email protected]>**20120209104920
 Ignore-this: 8a3fbeea72e7f52809a3468df2b8b228
] 
[turn ExtType into a real abstract type
John Meacham <[email protected]>**20120209100704
 Ignore-this: c802a07fee0f2461cca19aa28f99ff61
] 
[add 'capi' foreign function call type, simplify type of E.FromHs monad, check for more FFI related errors
John Meacham <[email protected]>**20120209091611
 Ignore-this: 1945b5336e6001d6da6cd63a77bd1efd
] 
[add md5lazyIO, check for bad paths in createTempFile
John Meacham <[email protected]>**20120209091527
 Ignore-this: f9e5f0dafc9615d5c5c50cb49829c5a5
] 
[add foreign types, interpret Ptr when creating external C types
John Meacham <[email protected]>**20120209090647
 Ignore-this: c49bea3938e2edabda9d7528cfb1121a
] 
[Add some more exotic primitive ops, ffs,clz,ctz,byteswap,popcount,parity.
John Meacham <[email protected]>**20120209070848
 Ignore-this: b61b1c08db35ccad33f24536b99913df
] 
[jhc.spec fixes
John Meacham <[email protected]>**20120209015329
 Ignore-this: 64488edc34893a734f81b1c01c0b1ff4
] 
[TAG 0.8.0
John Meacham <[email protected]>**20120208020026
 Ignore-this: 2d0d963331a43650879ae72d81ff62e8
] 
Patch bundle hash:
f7e4e199ecbc418ab051f8ea4817dc393dabe059
_______________________________________________
jhc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/jhc

Reply via email to