Analysis of new packages breakages with ghc-6.10
OK, so we have *56* packages total that no longer compile with GHC 6.10, but did with 6.8.3. We can now see exactly what broke and why. I think these potential breakage issues, and how to solve them canonically , should be documented on the wiki. Most should have standard solutions, some might be GHC bugs (which I've reported for the obvious ones, but Ian, better have a look at the 'unknown' ones). The following events broke the following packages, * 7 Changes to Arrow class definition TypeCompose, Yampa, arrows, chp, hxt, quantum-arrow, streamproc * 6 Changes to Map monadic types EdisonCore, HPDF, WebBits, libgeni, regex-tdfa, stringtable-atom * 5 Cabal changes cabal-setup, hask-home, hinstaller, hslackbuilder, plugins * 5 Changes to ghc-api HTF, Hashell, hint, typalyze, xmonad-utils * 5 GHC panics/bugs, reported xmonad-contrib, stream-fusion, harpy, OpenAFP, Vec * 4 Unknown error, needs investigation. ArrayRef, YamlReference, parameterized-data, unicode-prelude * 3 Changes to when 'forall' is parsed MemoTrie, heap, hexpat * 3 GHC.Prim was moved, PArrow, logfloat, utf8-light * 3 Changes to -fvia-C and headers? cmath, hetris, mage * 2 GADT changes, CLASE, hasim * 2 pragma warnings tightened numeric-prelude, yhccore * 2 Integer constructors have moved NewBinary, bytestring-show * 2 New warnings and used -Werror fixpoint, list-extras * 1 Addition of permutations to List library HaLeX * 1 Illegal type synonym family application hsx * 1 Exception's moved around? iException Below are the precise warnings: ** ArrayRef, ?? Data/ArrayBZ/Internals/Unboxed.hs:60:0: Duplicate type signature: Data/ArrayBZ/Internals/Unboxed.hs:60:0-18: stUArrayTc :: TyCon Data/ArrayBZ/Internals/Unboxed.hs:59:0-18: stUArrayTc :: TyCon CLASE, Data/Cursor/CLASE/Persistence.hs:124:11: GADT pattern match with non-rigid result type `GenParser Char st a' Solution: add a type signature EdisonCore, src/Data/Edison/Assoc/StandardMap.hs:204:21: Couldn't match expected type `m' against inferred type `Maybe' `m' is a rigid type variable bound by HPDF, Graphics/PDF/Data/Trie.hs:39:34: Couldn't match expected type `[a]' against inferred type `Maybe (MapString v)' HTF, Test/Framework.hs:40:21: Not in scope: `currentModule' HaLeX, HaLeX_lib/Language/HaLex/Util.hs:48:13: Ambiguous occurrence `permutations' It could refer to either `Language.HaLex.Util.permutations', defined at HaLeX_lib/Language/HaLex/Util.hs:46:0 or `Data.List.permutations', imported from Data.List at HaLeX_lib/Language/HaLex/Util.hs:24:0-15 Hashell, Hashell/Eval.hs:45:19: Not in scope: `GHC.newSession' Hipmunk, Physics/Hipmunk/Space.hsc:531:2: Couldn't match expected type `Maybe (Either (ForeignPtr ()) Shape)' against inferred type `IO (Either (ForeignPtr ()) Shape)' MemoTrie, src/Data/MemoTrie.hs:36:16: Not in scope: `forall' NewBinary, NewBinary/Binary.hs:693:13: Not in scope: data constructor `S#' PArrow, src/Text/ParserCombinators/PArrow/MD.hs:7:0: Failed to load interface for `GHC.Prim': it is a member of package ghc-prim, which is hidden TypeCompose, src/Data/Bijection.hs:52:11: `' is not a (visible) method of class `Arrow' Vec, timeout WebBits, src/WebBits/JavaScript/Environment.hs:216:2: Couldn't match expected type `Maybe Int' against inferred type `StateT (Z.Location Env) (State Int) Int' YamlReference, Text/Yaml/Reference.hs:1482:19: No instance for (Match a14 ()) arising from a use of `pat' at Text/Yaml/Reference.hs:1482:19-59 yampa, src/FRP/Yampa.hs:650:4: `' is not a (visible) method of class `Arrow' arrows, Control/Arrow/Transformer/CoState.hs:24:29: Module `Control.Arrow' does not export `pure' bytestring-show Text/Show/ByteString/Integer.hs:31:14: Not in scope: data constructor `S#' cabal-setup, CabalSetup.hs:14:7: Could not find module `Distribution.Simple.SetupWrapper': Use -v to see a list of the files searched for. chp, Control/Concurrent/CHP/Arrow.hs:107:22: `' is not a (visible) method of class `Arrow' fixpoint, Data/Fixpoint/Instances.hs:24:9: Warning: orphan instance: instance Foldable (Pre [a]) no location info: Failing due to -Werror. hasim, src/Control/Hasim/SimRun.hs:291:13: GADT pattern match with non-rigid result type `t' Solution: add a type signature hask-home, hask-home.hs:101:15: Not in scope: `showPackageId' heap, Data/Heap.hs:297:18: Not in
Re: base-3 vs base-4 (Was: Breakage with 6.10)
Hello, On Sat, Oct 11, 2008 at 03:52, Niklas Broberg [EMAIL PROTECTED]wrote: Though obviously this would only work if the module Data.Generics.Instances was preserved under that name somewhere else. If it was renamed or changed (which I suspect), then the hassle of keeping up to date with older versions will probably be too much, and I will want to update to the new agenda as soon as 6.10 is released for real. So what happened to this module? (Is there a migration quicksheet somewhere?) The new syb package has basically all the Data.Generics.* modules. In base4, no Data.Generics.* modules were kept. Instead, a new module, Data.Data, contains all that was in Data.Generics.Basics and most of Data.Generics.Instances. Therefore, in the syb package, Data.Generics.Basics only re-exports module Data.Data from base4, and Data.Generics.Instances defines the instances missing from Data.Data and re-exports the instances from Data.Data. Thanks, Pedro ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: More detail on breakage with ghc-6.10
We've been using the cabal-install build reporting stuff to get more detailed info on build failures with ghc-6.10 vs 6.8. cabal-install generates these build-reports.log files and individual log files for each build. Since you do have the infrastructure set up: haddock is also changing with ghc-6.10. Are the no (visible) issues resulting from that (which would be great!), or didn't your tests include haddocking? Claus ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: syb changes (Re: base-3 vs base-4 (Was: Breakage with 6.10))
So there is a compatibility module in the new syb. Unfortunately, that won't tell you about the moves and rationale. Most of the time, you'll want Data.Data (check ghc -e ':browse Data.Data' or the Haddock pages, or google for syb in the libraries@ archives): $ ghc-pkg find-module Data.Data c:/ghc/ghc-6.11.20081004\package.conf: base-4.0.0.0 Thanks a lot Claus and José for the info. Since all I use is the Data and Typeable classes (presumably like so many others, which I guess was the reason to keep these in base), it would obviously be better for me to avoid linking to the new syb package when I don't have to. $ ghc -ignore-dot-ghci -e ':info Data.Data.Data' Somehow I find this name hilarious. :-) .. I would prefer to use the new base-4 when possible. The cabal file already includes a conditional if flag(splitBase) to handle really old versions, I guess what I'm asking for is something similar for this case. Is there a splitSyb flag or some such? I was wondering whether there is a way to set user-defined flags depending on whether some package is available. Then I recalled that flags don't work the way I expected - instead Cabal will try all flag settings to find a buildable configuration (a fact I only became aware of when a different kind of flag was added recently that does behave the way I expected;-). Which might be what you want in this case. Duncan: is this correct, and are these subtleties documented somewhere? While these things would be good to know in general, it seems this is not what I want in this case, since I don't want to use the syb package after all. It seems instead what I want is to simply make a conditional import of either Data.Generics or Data.Data based on which version of base is available. I guess that means more CPP heresy, sigh. Thanks, /Niklas ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: has anyone built pandoc with MacPorts ?
Hi Denis, I haven't built pandoc yet --- I didn't do the port --- but I'll have a go at it tonight and let you know what I find. BTW, did you run $ sudo port selfupdate before starting to make sure you had the latest Portfiles for everything? Best Wishes, Greg On Oct 10, 2008, at 4:45 PM, denis wrote: Greg, folks, port install ghc worked after 7 hours or so, but then sudo port -v install hs-ghc-paths (on which pandoc apparently depends) = # from: sudo port -v install hs-ghc-paths # run: 10 Oct 2008 22:35 in /opt/local Denis.local mac 10.4.11 ppc --- Configuring hs-ghc-paths Setup.hs:7:7: Could not find module `Distribution.Simple.PackageIndex': Use -v to see a list of the files searched for. Error: Target org.macports.configure returned: shell command cd / opt/local/var/macports/build/ _opt_local_var_macports_sources_rsync .macports.org_release_ports_devel_hs-ghc-paths/work/ghc- paths-0.1.0.5 runhaskell Setup configure --ghc --prefix=/opt/ local returned error 1 Command output: Setup.hs:7:7: Could not find module `Distribution.Simple.PackageIndex': Use -v to see a list of the files searched for. Warning: the following items did not execute (for hs-ghc-paths): org.macports.activate org.macports.configure org.macports.build org.macports.destroot org.macports.install Error: Status 1 encountered during processing. Has anyone ever built pandoc with MacPorts ? Would appreciate your help. cheers -- denis ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: Breakage with 6.10
On Fri, Oct 10, 2008 at 03:54:07PM -0700, Duncan Coutts wrote: On Fri, 2008-10-10 at 15:34 -0700, Don Stewart wrote: arrows fails due to: [ 3 of 12] Compiling Control.Arrow.Transformer.CoState ( Control/Arrow/Transformer/CoState.hs, dist/build/Control/Arrow/Transformer/CoState.o ) Control/Arrow/Transformer/CoState.hs:24:29: Module `Control.Arrow' does not export `pure' Even though cabal-install decided to use base-3.0.3.0 So that means base-3 is *not* exporting quite the same interface as last time. Were we aware of this? Note that this means that base-3 should have the version number 3.1.x.y because there is at least one incompatible api change. We're promoting the versioning policy so we need to follow it ourselves in our base libs. I don't think that that really helps. If you're going to depend on base 3.1, you might as well just depend on base 4 and be more future-proof. The base-compat package needs to claim to have the same API as the old base, because the point is that things just keep on working (except in the few cases, like the Arrow split, where that isn't possible). Thanks Ian ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: syb changes (Re: base-3 vs base-4 (Was: Breakage with 6.10))
Hello, On Sat, Oct 11, 2008 at 12:16, Claus Reinke [EMAIL PROTECTED] wrote: Pedro: it might be helpful if the haddock pages for the old and new syb modules were to point to a syb wiki page (which could then link to the relevant threads on libraries@)? Or is that information already in the documentation patch for the latest builds? That's a good idea. I will set that up and push patches to the haddock documentation of both base and syb to link there. Thanks, Pedro ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: readEither in ghc-6.10. ?
Hi Christian, On Fri, Oct 10, 2008 at 05:40:24PM +0200, Christian Maeder wrote: Not in scope: `readEither' import GHC.Read (readEither) and used to work with ghc-6.8. What should I use as replacement? P.S. It is also not mentioned in the changes: We don't guarantee anything about functions in GHC.* modules (with the half-exceptions of GHC.Exts and GHC.Prim). I'd recommend wrapping reads instead. Thanks Ian ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: base-3 vs base-4 (Was: Breakage with 6.10)
2008/10/11 José Pedro Magalhães [EMAIL PROTECTED]: In base4, no Data.Generics.* modules were kept. Instead, a new module, Data.Data, contains all that was in Data.Generics.Basics and most of Data.Generics.Instances. Data.Data? Surely we can come up with something better than that. -- Dave Menendez [EMAIL PROTECTED] http://www.eyrie.org/~zednenem/ ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: More detail on breakage with ghc-6.10
claus.reinke: We've been using the cabal-install build reporting stuff to get more detailed info on build failures with ghc-6.10 vs 6.8. cabal-install generates these build-reports.log files and individual log files for each build. Since you do have the infrastructure set up: haddock is also changing with ghc-6.10. Are the no (visible) issues resulting from that (which would be great!), or didn't your tests include haddocking? No haddock tests yet, but we can start doing that. Good idea. ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
A wiki page for managing the 6.10 handover
http://haskell.org/haskellwiki/Upgrading_packages#Typical_breakages_with_GHC_6.10 It collects the 7 or so known issues that break code with GHC 6.10. Please feel free to clean up, and especially *add techniques for handling each change*. If we do this right, with cabal-install being smart, clear summaries of what is broken and how to fix it, this might be the smoothest major release yet. -- Don ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: syb changes (Re: base-3 vs base-4 (Was: Breakage with 6.10))
niklas.broberg: So there is a compatibility module in the new syb. Unfortunately, that won't tell you about the moves and rationale. Most of the time, you'll want Data.Data (check ghc -e ':browse Data.Data' or the Haddock pages, or google for syb in the libraries@ archives): $ ghc-pkg find-module Data.Data c:/ghc/ghc-6.11.20081004\package.conf: base-4.0.0.0 Thanks a lot Claus and José for the info. Since all I use is the Data and Typeable classes (presumably like so many others, which I guess was the reason to keep these in base), it would obviously be better for me to avoid linking to the new syb package when I don't have to. Perhaps people could add details about managing the syb handover to the 'upgrading' wiki page, http://haskell.org/haskellwiki/Upgrading_packages#Typical_breakages_with_GHC_6.10 ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: A wiki page for managing the 6.10 handover
Hello Don, Saturday, October 11, 2008, 9:21:47 PM, you wrote: It collects the 7 or so known issues that break code with GHC 6.10. i've quickly tried to compile my app with 6.10 (using base4). all the problems i got was due to exception handling. catch, finally, throwIO doesn't work added to wiki -- Best regards, Bulatmailto:[EMAIL PROTECTED] ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: A wiki page for managing the 6.10 handover
bulat.ziganshin: Hello Don, Saturday, October 11, 2008, 9:21:47 PM, you wrote: It collects the 7 or so known issues that break code with GHC 6.10. i've quickly tried to compile my app with 6.10 (using base4). all the problems i got was due to exception handling. catch, finally, throwIO doesn't work added to wiki The fix for exception handling and friends is to add a dependency on base-3, http://haskell.org/haskellwiki/Upgrading_packages#Adding_base-3_constraints If you build your app with cabal-install, it will work this out for you, otherwise, you need to add something like --constraint=base4 if you use runhaskell, or --package base-3.0.3.0 if you use ghc --make. -- Don ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: A wiki page for managing the 6.10 handover
bulat.ziganshin: Hello Don, Saturday, October 11, 2008, 9:54:10 PM, you wrote: seems that i misunderstood it: i thought it's a list of base4 vs base3 changes, but actually it seems like a base30 vs base31? base3 - base4 upgrade hints are not documented anywhere? It's a list of how to upgrade your code to GHC 6.10 and keep it working. If you want to describe how to migrate from base3 to base4, that is also useful, but not criical yet, since it won't break things. -- Don ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: breakage with Cabal-1.6
On Fri, 2008-10-10 at 16:13 +0100, Simon Marlow wrote: As far as I can see, you could export a compatibility shim called buildVerbose without any difficulty, Done. all I have to do is remove the explicit import list. Or is there a better fix you had in mind? Patches for alex and happy attached. Their Setup.lhs now works with 1.2, 1.4 and 1.6 (1.6.0.1). Duncan New patches: [Fix to make Setup.lhs compile with Cabal-1.2, 1.4 and 1.6 Duncan Coutts [EMAIL PROTECTED]**20081011181133] { hunk ./Setup.lhs 7 -import Distribution.Simple.Setup ( BuildFlags(..) ) +import Distribution.Simple.Setup ( BuildFlags(..), buildVerbose ) } Context: [monadUserState [EMAIL PROTECTED] add the monadUserState wrapper, and its variant monadUserState-bytestring, allowing to define a custom state monad in the lex specification ] [Add support for efficient lexing of strict bytestrings Don Stewart [EMAIL PROTECTED]**20080718224320] [Untabify Don Stewart [EMAIL PROTECTED]**20080718224243] [doc fix Simon Marlow [EMAIL PROTECTED]**20080218092857] [fix small doc bug, pointed out by Ben Challenor [EMAIL PROTECTED] Simon Marlow [EMAIL PROTECTED]**20071219085223] [add release instructions Simon Marlow [EMAIL PROTECTED]**20071114150257] [TAG 2.2 release Simon Marlow [EMAIL PROTECTED]**20071101141613] Patch bundle hash: 24ca734b06b45071f760f601001ac1e5587d90f6 happy-cabal-compat.dpatch Description: Binary data ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: Illegal type synonym family application in instance (Was: Breakage with 6.10)
On 10/11/08, Niklas Broberg [EMAIL PROTECTED] wrote: dons: A breakdown of the remaing causes for DependencyFailed, [...] 4 hsx-0.4.4 New version uploaded that works with both 6.8.3 and 6.10 rc1 (through dark cpp magic). I doubt I need to show this trick to anyone else since I seem to have been the only one brave/foolish enough to depend on this quirk of type families in 6.8. I'm proud to say I'm off the list now anyway. :-) Cheers, /Niklas ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: has anyone built pandoc with MacPorts ?
Hi, On Oct 10, 2008, at 4:45 PM, denis wrote: Greg, folks, port install ghc worked after 7 hours or so, but then sudo port -v install hs-ghc-paths (on which pandoc apparently depends) = # from: sudo port -v install hs-ghc-paths # run: 10 Oct 2008 22:35 in /opt/local Denis.local mac 10.4.11 ppc --- Configuring hs-ghc-paths Setup.hs:7:7: Could not find module `Distribution.Simple.PackageIndex': Use -v to see a list of the files searched for. Error: Target org.macports.configure returned: shell command cd / opt/local/var/macports/build/ _opt_local_var_macports_sources_rsync .macports.org_release_ports_devel_hs-ghc-paths/work/ghc- paths-0.1.0.5 runhaskell Setup configure --ghc --prefix=/opt/ local returned error 1 Command output: Setup.hs:7:7: Could not find module `Distribution.Simple.PackageIndex': Use -v to see a list of the files searched for. Warning: the following items did not execute (for hs-ghc-paths): org.macports.activate org.macports.configure org.macports.build org.macports.destroot org.macports.install Error: Status 1 encountered during processing. Has anyone ever built pandoc with MacPorts ? Would appreciate your help. cheers -- denis Pandoc built fine for me on Mac OS X 10.5.5/intel with ghc 6.8.3, hs- ghc-paths 0.1.0.5 and haddock 2.2.2. What version of the ghc port are you using (i.e., the output of $ port info ghc ? Also, do you have more than one version of cabal on your system? Best Wishes, Greg ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Re: ANNOUNCE: GHC 6.10.1 RC 1
On Thu, Oct 09, 2008 at 03:37:32PM +0200, Christian Maeder wrote: Ian Lynagh wrote: Please test as much as possible; bugs are much cheaper if we find them before the release! How about a test-suite? Good point: I've addde one to http://www.haskell.org/ghc/dist/stable/dist/6.10.1-rc-1/rc.html P.S. make binary-dist creates a big unnecessary .tar file together with the final .tar.bz2 file. Also a (disturbing) link ghc-6.10.0.20081007 - . is created. The link is deliberate (we tar things up from the build tree, rather than making a ghc-6.10.0.20081007 directory and copying them there). (make install no longer reports which path to add) Ooops, the logic for whether to print the message was the wrong way round. Now fixed. Thanks Ian ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
2008-10-11 Hackage status with GHC 6.10
Daily update of the state of Hackage wrt. GHC 6.10 release candidates. Lots of packages were updated today, Cabal 1.6 and cabal-install 0.6 were also put out. Things are in a good shape. Note that you'll need a soft dep in your cabal index file, base 4 parsec 3 HaXml == 1.13.* QuickCheck 2 for best results. Using GHC 6.10 RC, Cabal 1.6 and cabal-install 1.16, of 684 libraries and apps tried in total, 1 UnpackFailed 2 DownloadFailed 2 InstallFailed 16 ConfigureFailed 74 DependencyFailed 134 BuildFailed 455 InstallOk Compared to GHC 6.8.x's results, there are now *48* packages that produce different results, or *6%* (down 2% from yesterday). The most common issues are, * Changes to Arrow class definition * Changes to types of Map and Set functions * Cabal changes * Changes to ghc-api * Changes to when 'forall' is parsed (add Rank2Types) * GHC.Prim was moved, * Changes to -fvia-C and headers * GADT changes, * pragma warnings tightened * Integer constructors have moved * New warnings and used -Werror How to address these, as library maintainers, is addressed here, http://haskell.org/haskellwiki/Upgrading_packages Packages that have broken wrt. the new core library APIs are, ArrayRef-0.1.2 CLASE-2008.9.23.2 EdisonCore-1.2.1.2 HPDF-1.4 HaLeX-1.1 Hashell-0.15 Hipmunk-0.2 MemoTrie-0.0 NewBinary-0.1.1 PArrows-0.1 TypeCompose-0.5 WebBits-0.9.2 YamlReference-0.9.2 Yampa-0.9.2.2 arrows-0.4 bytestring-show-0.2 cabal-setup-1.2.1 chp-1.1.0 cmath-0.3 fixpoint-0.1 hasim-0.1 hask-home-2007.12.6 heap-0.4.0 hetris-0.2 hexpat-0.2 hinstaller-2008.2.16 hint-0.2.4.1 hslackbuilder-0.0.1 hxt-8.1.0 iException-0.0.1 libGenI-0.16.1 list-extras-0.2.2 logfloat-0.9.1 mage-1.1.0 numeric-prelude-0.0.4 plugins-1.3 quantum-arrow-0.0.4 regex-tdfa-0.94 streamproc-1.1 stringtable-atom-0.0.4 typalyze-0.1.1 unicode-prelude-0.1 xmonad-utils-0.1 yhccore-0.9 GHC bugs are suspected for, xmonad-contrib, stream-fusion, harpy, OpenAFP Tickets are open for these. Build reports for these packages were posted yesterday, http://article.gmane.org/gmane.comp.lang.haskell.glasgow.user/15430 -- Don ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users