From dons at galois.com Sat Jan 5 00:37:41 2008 From: dons at galois.com (Don Stewart) Date: Sat Jan 5 00:31:46 2008 Subject: bytestring 0.9.0.4 Message-ID: <20080105053741.GA15950@scytale.galois.com> 2.5 years after the first release, bytestring 0.9.0.4 is now available on hackage, http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-0.9.0.4 Changes since the 0.9 release include: * support for bytestring literals (use -XOverloadedStrings) * make Data.ByteString.Lazy.Char8.lines lazier * fixes Handle resource leak in getContents/readFile * faster isSpace operations * performance improvements The most notable change is the instance IsString for strict and lazy bytestrings, enabling bytestrings to be written as direct string literals, without needing 'pack'. That is, the following is valid: import Data.ByteString.Char8 main = print ("abcdef" :: ByteString) (and the compile will even turn the pack into a no-op at compile time). Or, using the (soon to be released pcre-light package), bytestring regex literals can be written as: compile "a(.*)b" where compile :: ByteString -> Either String Regex With -XOverloadedStrings, the 'pack'for the regex is inferred. -- Don & Duncan From dave at zednenem.com Sat Jan 5 14:52:52 2008 From: dave at zednenem.com (David Menendez) Date: Sat Jan 5 14:46:41 2008 Subject: bytestring 0.9.0.4 In-Reply-To: <20080105053741.GA15950@scytale.galois.com> References: <20080105053741.GA15950@scytale.galois.com> Message-ID: <49a77b7a0801051152i8c2d869m3b5560d4aaecbe20@mail.gmail.com> On Jan 5, 2008 12:37 AM, Don Stewart wrote: > The most notable change is the instance IsString for strict and > lazy bytestrings, enabling bytestrings to be written as direct string > literals, without needing 'pack'. > > That is, the following is valid: > > import Data.ByteString.Char8 > > main = print ("abcdef" :: ByteString) > What encoding is used? -- Dave Menendez -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.haskell.org/pipermail/libraries/attachments/20080105/129f22bc/attachment.htm From dons at galois.com Sat Jan 5 15:19:33 2008 From: dons at galois.com (Don Stewart) Date: Sat Jan 5 15:13:24 2008 Subject: bytestring 0.9.0.4 In-Reply-To: <49a77b7a0801051152i8c2d869m3b5560d4aaecbe20@mail.gmail.com> References: <20080105053741.GA15950@scytale.galois.com> <49a77b7a0801051152i8c2d869m3b5560d4aaecbe20@mail.gmail.com> Message-ID: <20080105201933.GC17767@scytale.galois.com> dave: > On Jan 5, 2008 12:37 AM, Don Stewart <[1]dons@galois.com> wrote: > > The most notable change is the instance IsString for strict and > lazy bytestrings, enabling bytestrings to be written as direct string > literals, without needing 'pack'. > > That is, the following is valid: > > import Data.ByteString.Char8 > > main = print ("abcdef" :: ByteString) > > What encoding is used? The 'Data.ByteString.Char8' encodin: -- ... these byte strings are taken to be in the -- subset of Unicode covered by code points 0-255. This covers -- Unicode Basic Latin, Latin-1 Supplement and C0+C1 Controls. You'll need to import Data.ByteString.Char8 to get the instance, so the encoding should be clear in this case. -- Don From john at repetae.net Sun Jan 6 12:51:19 2008 From: john at repetae.net (John Meacham) Date: Sun Jan 6 12:45:05 2008 Subject: new language extensions In-Reply-To: <20071108142755.GA10990@matrix.chaos.earth.li> References: <1194300038.26140.205.camel@localhost> <1194471625.26140.332.camel@localhost> <20071108142755.GA10990@matrix.chaos.earth.li> Message-ID: <20080106175119.GB16859@momenergy.repetae.net> On Thu, Nov 08, 2007 at 02:27:55PM +0000, Ian Lynagh wrote: > On Wed, Nov 07, 2007 at 09:40:25PM +0000, Duncan Coutts wrote: > > Last call for objections or comments. > > > > We'd like to get this into Language.Haskell.Extension asap so we can > > include it in the Cabal distributed with ghc-6.8.2. Currently there are > > packages that compiled fine with Cabal and ghc-6.6.x but not with > > ghc-6.8.x because we're missing these new more fine-grained language > > extensions. > > > > See http://hackage.haskell.org/trac/hackage/ticket/160 > > I'd much rather see http://hackage.haskell.org/trac/hackage/ticket/147 > fixed. Then Cabal would work with future GHCs, with new extensions as > yet undreamt of, as well. Yes, I would like to see this too, I have not really done a lot of work integrating jhc with cabal, but this 'baked in' extension type was something of an issue. (jhc itself understands a subset of the cabal file type and can build libraries based on them with jhc --build-hl). There are a couple other places where a 'newtype String' made more sense too if I recall. Perhaps just a simple wiki page where we can "register" extension names is in order as there are a few jhc understands that arn't in the cabal extension type (nor should they be if this fix is completed). John -- John Meacham - ?repetae.net?john? From iavor.diatchki at gmail.com Sun Jan 6 16:35:41 2008 From: iavor.diatchki at gmail.com (Iavor Diatchki) Date: Sun Jan 6 16:29:26 2008 Subject: PROPOSAL: Some more 'Applicative' combinators Message-ID: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> Hello, I propose that we add the following combinators to the 'Control.Applicative' module: skipMany :: (Alternative f) => f a -> f () skipMany p = skipSome p <|> pure () skipSome :: (Alternative f) => f a -> f () skipSome p = p *> skipMany p endBy :: (Alternative f) => f a -> f b -> f [a] endBy p s = many (p <* s) endBy1 :: (Alternative f) => f a -> f b -> f [a] endBy1 p s = some (p <* s) sepBy :: (Alternative f) => f a -> f v -> f [a] sepBy p s = sepBy1 p s <|> pure [] sepBy1 :: (Alternative f) => f a -> f v -> f [a] sepBy1 p s = (:) <$> p <*> many (s *> p) Any objections? Deadline for discussion is 2 weeks from now, which would be the 20th of Jan. -Iavor From seth at cql.com Sun Jan 6 18:34:40 2008 From: seth at cql.com (Seth Kurtzberg) Date: Sun Jan 6 18:29:01 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> Message-ID: <20080106183440.5f02057c.seth@cql.com> Can you show some code fragments demonstrating how the combinators are used? I find it easier to understand the underlying concepts when I have not only the signature and implementation but an example of a typical use. It doesn't have to be working code, and it might even be pseudo code. (I'm not sure whether other Haskell folks feel the same way.) On Sun, 6 Jan 2008 13:35:41 -0800 "Iavor Diatchki" wrote: > Hello, > I propose that we add the following combinators to the > 'Control.Applicative' module: > > skipMany :: (Alternative f) => f a -> f () > skipMany p = skipSome p <|> pure () > > skipSome :: (Alternative f) => f a -> f () > skipSome p = p *> skipMany p > > endBy :: (Alternative f) => f a -> f b -> f [a] > endBy p s = many (p <* s) > > endBy1 :: (Alternative f) => f a -> f b -> f [a] > endBy1 p s = some (p <* s) > > sepBy :: (Alternative f) => f a -> f v -> f [a] > sepBy p s = sepBy1 p s <|> pure [] > > sepBy1 :: (Alternative f) => f a -> f v -> f [a] > sepBy1 p s = (:) <$> p <*> many (s *> p) > > > Any objections? Deadline for discussion is 2 weeks from now, which > would be the 20th of Jan. > > -Iavor > _______________________________________________ > Libraries mailing list > Libraries@haskell.org > http://www.haskell.org/mailman/listinfo/libraries > -- Seth Kurtzberg Hardware/Software/Driver Engineering From iavor.diatchki at gmail.com Sun Jan 6 21:11:39 2008 From: iavor.diatchki at gmail.com (Iavor Diatchki) Date: Sun Jan 6 21:05:24 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <20080106183440.5f02057c.seth@cql.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> <20080106183440.5f02057c.seth@cql.com> Message-ID: <5ab17e790801061811j1621bc85ja3430daae3ab6db4@mail.gmail.com> Hello, Sorry, I should have mentioned the origin of the combinators. These are (generalizations of) standard parser combinators, so think of "f a" in the type as a parser that can construct values of type "a". With this in mind, it should be more obvious what these combinators are used for. For example: > p `sepBy` sep is a parser that will return 0 or more occurances of 'p' separated by 'sep'. Many (all?) parser combinator libraries provide these functions, so having the generic 'Alternative' interface makes it easier to write parser that can work with different libraries. -Iavor On Jan 6, 2008 3:34 PM, Seth Kurtzberg wrote: > Can you show some code fragments demonstrating how the combinators are used? I find it easier to understand the underlying concepts when I have not only the signature and implementation but an example of a typical use. It doesn't have to be working code, and it might even be pseudo code. (I'm not sure whether other Haskell folks feel the same way.) > > > On Sun, 6 Jan 2008 13:35:41 -0800 > "Iavor Diatchki" wrote: > > > Hello, > > I propose that we add the following combinators to the > > 'Control.Applicative' module: > > > > skipMany :: (Alternative f) => f a -> f () > > skipMany p = skipSome p <|> pure () > > > > skipSome :: (Alternative f) => f a -> f () > > skipSome p = p *> skipMany p > > > > endBy :: (Alternative f) => f a -> f b -> f [a] > > endBy p s = many (p <* s) > > > > endBy1 :: (Alternative f) => f a -> f b -> f [a] > > endBy1 p s = some (p <* s) > > > > sepBy :: (Alternative f) => f a -> f v -> f [a] > > sepBy p s = sepBy1 p s <|> pure [] > > > > sepBy1 :: (Alternative f) => f a -> f v -> f [a] > > sepBy1 p s = (:) <$> p <*> many (s *> p) > > > > > > Any objections? Deadline for discussion is 2 weeks from now, which > > would be the 20th of Jan. > > > > -Iavor > > _______________________________________________ > > Libraries mailing list > > Libraries@haskell.org > > http://www.haskell.org/mailman/listinfo/libraries > > > > > -- > Seth Kurtzberg > Hardware/Software/Driver Engineering > From bos at serpentine.com Mon Jan 7 00:20:05 2008 From: bos at serpentine.com (Bryan O'Sullivan) Date: Mon Jan 7 00:13:47 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> Message-ID: <4781B685.7050500@serpentine.com> Iavor Diatchki wrote: > I propose that we add the following combinators to the > 'Control.Applicative' module: While applicative functors are good for this task, it would be a shame if the innocent reader of haddocks were to acquire the impression that parsing was all they were for. Why not make the task specificity clearer, with a separate Control.Applicative.Parsing module? It's been pointed out by a couple of people that the type of forever is overly constrained. We get a few more useful programs for free if we change the type: [generalise type of 'forever' from returning m () to m a Don Stewart **20080107062656] { hunk ./Control/Monad.hs 42 - , forever -- :: (Monad m) => m a -> m () + , forever -- :: (Monad m) => m a -> m a hunk ./Control/Monad.hs 190 -forever :: (Monad m) => m a -> m () +forever :: (Monad m) => m a -> m a } In particular, fail breaks out nicely. > forever Nothing Nothing Deadline: 12th January. -- Don -------------- next part -------------- New patches: [generalise type of 'forever' from returning m () to m a Don Stewart **20080107062656] { hunk ./Control/Monad.hs 42 - , forever -- :: (Monad m) => m a -> m () + , forever -- :: (Monad m) => m a -> m a hunk ./Control/Monad.hs 190 -forever :: (Monad m) => m a -> m () +forever :: (Monad m) => m a -> m a } Context: [Tuple tycons have parens around their names simonpj@microsoft**20071220171812 The name of the pair TyCon, in the Typeable instance, should be "(,)" not ",". Don't merge to 6.8; it's a minor API change. ] [Add groupWith, sortWith, the, to support generalised list comprehensions simonpj@microsoft.com**20071220111929 This the base-library patch to support the main compiler patch Implement generalised list comprehensions It just adds three functions to GHC.Exts. ] [Add GHC.Prim to exposedModules in the Haddock 0.x hook David Waern *-20071209173931 Please merge to the stable branch ] [Add GHC.Prim to exposedModules in the Haddock 0.x hook David Waern **20071209173931 Please merge to the stable branch ] [Simplify the GHC.Prim hack in base.cabal/Setup.hs Ian Lynagh **20071202215758] [Implement 'openTempFile' for nhc98. Malcolm.Wallace@cs.york.ac.uk**20071207133335] [docs: describe the changes to forkIO, and document forkOnIO Simon Marlow **20071205091423] [doc only: use realToFrac instead of fromRational.toRational Simon Marlow **20071205091334] [Add singletonP to GHC.PArr Roman Leshchinskiy **20071205220859] [FIX #1621: bug in Windows code for getCPUTime Simon Marlow **20071205120118 We were reading the components of FILETIME as CLong, when they should be unsigned. Word32 seems to be the correct type here. ] [protect console handler against concurrent access (#1922) Simon Marlow **20071204153940] [protect against concurrent access to the signal handlers (#1922) Simon Marlow **20071204110817] [restore fdToHandle' to avoid breaking clients (#1109) Simon Marlow **20071130135122 ] [note about how to convert CTime (aka EpochTime) to UTCTime Simon Marlow **20071130101648] [Fix some URLs Ian Lynagh **20071126214213] [Fix some links in haddock docs Ian Lynagh **20071126184428] [Don't try to make haddock links to the mtl package as we don't depend on it Ian Lynagh **20071126170631] [Escape some special characters in haddock docs Ian Lynagh **20071126163443] [FIX BUILD: maybeUpdateFile: ignore failures when removing the target Simon Marlow **20071123092219] [FIX #1753 Simon Marlow **20071122094207 hClose should close the Handle and unlock the file even if calling close() fails for some reason. ] [remove lockFile.h from install-includes Simon Marlow **20071121102248] [oops, we forgot to export traceShow Simon Marlow **20071121094300] [Fix compilation with GHC 6.2.x Simon Marlow **20071121084341] [Move file locking into the RTS, fixing #629, #1109 Simon Marlow **20071120121053 File locking (of the Haskell 98 variety) was previously done using a static table with linear search, which had two problems: the array had a fixed size and was sometimes too small (#1109), and performance of lockFile/unlockFile was suboptimal due to the linear search. Also the algorithm failed to count readers as required by Haskell 98 (#629). Now it's done using a hash table (provided by the RTS). Furthermore I avoided the extra fstat() for every open file by passing the dev_t and ino_t into lockFile. This and the improvements to the locking algorithm result in a healthy 20% or so performance increase for opening/closing files (see openFile008 test). ] [Only overwrite GHC/Prim.hs and GHC/Primopwrappers.hs if they change Simon Marlow **20071120102042 This avoids make doing unnecessary work after 'setup makefile'. ] [fix comment Simon Marlow **20071116091227] [Fix ` characters in elem's haddock docs Ian Lynagh **20071110173052] [Filter out GHC.Prim also for the Haddock step David Waern **20071109000806 Please merge to the GHC 6.8.2 branch ] [Add module of special magic GHC desugaring helper functions Simon Marlow **20071102160054 Currently containing only one such helper: (>>>) for arrow desugaring ] [add Control.Category to the nhc98 build Malcolm.Wallace@cs.york.ac.uk**20071030120459] [fix nhc98 build: need a qualified Prelude import Malcolm.Wallace@cs.york.ac.uk**20071030120410] [Fix performance regression: re-instate -funbox-strict-fields Simon Marlow **20071029150730 Yikes! While investigating the increase in code size with GHC 6.8 relative to 6.6, I noticed that in the transition to Cabal for the libraries we lost -funbox-strict-fields, which is more or less depended on by the IO library for performance. I'm astonished that we didn't notice this earlier! To reduce the chances of this happening again, I put -funbox-strict-fields in the OPTIONS_GHC pragma of the modules that need it. {-# UNPACK #-} pragmas would be better, though. ] [FIX BUILD: Haddock 1.x fails to parse (Prelude..) Simon Marlow **20071029131921] [new Control.Category, ghc ticket #1773 Ashley Yakeley **20071029022526] [new Control.Compositor module Ashley Yakeley **20071013074851 The Compositor class is a superclass of Arrow. ] [Fix doc building with Haddock 0.9 Simon Marlow **20071024090947 I was using a recent build here, which is more tolerant. ] [FIX #1258: document that openTempFile is secure(ish) Simon Marlow **20071023130928 Also change the mode from 0666 to 0600, which seems like a more sensible value and matches what C's mkstemp() does. ] [Clean up .cabal file a bit Duncan Coutts **20071022132708 specify build-type and cabal-version >= 1.2 put extra-tmp-files in the right place use os(windows) rather than os(mingw32) ] [FIX #1652: openTempFile should accept an empty string for the directory Simon Marlow **20071018122345] [clean up duplicate code Simon Marlow **20071017141311] [expose the value of +RTS -N as GHC.Conc.numCapabilities (see #1733) Simon Marlow **20071009132042] [base in 6.8 and head branch should be version 3.0 Don Stewart **20071007150408] [typo Simon Marlow **20070917130703] [put extra-tmp-files field in the right place Simon Marlow **20070914140812] [Add more entries to boring file Ian Lynagh **20070913210500] [Add a boring file Ian Lynagh **20070913204641] [TAG 2007-09-13 Ian Lynagh **20070913215720] [FIX #1689 (openTempFile returns wrong filename) Tim Chevalier **20070913052025] [TAG ghc-6.8 branched 2007-09-03 Ian Lynagh **20070903155541] [Remove some incorrect rules; fixes #1658: CSE [of Doubles] changes semantics Ian Lynagh **20070904134140] [make hWaitForInput/hReady not fail with "invalid argument" on Windows Simon Marlow **20070830131115 See #1198. This doesn't fully fix it, because hReady still always returns False on file handles. I'm not really sure how to fix that. ] [Fix haddock docs in Hashtable Ian Lynagh **20070830154131] [Fix building HashTable: Use ord rather than fromEnum Ian Lynagh **20070830150214] [Better hash functions for Data.HashTable, from Jan-Willem Maessen Ian Lynagh **20070830142844] [Remove redundant include/Makefile Ian Lynagh **20070828205659] [Make arrays safer (e.g. trac #1046) Ian Lynagh **20070810163405] [delete configure droppings in setup clean Simon Marlow **20070824104100] [FIX #1282: 64-bit unchecked shifts are not exported from base Simon Marlow **20070823135033 I've exported these functions from GHC.Exts. They are still implemented using the FFI underneath, though. To avoid conditional exports, on a 64-bit build: uncheckedShiftL64# = uncheckShiftL# (etc.) which has a different type than the 32-bit version of uncheckedShiftL64#, but at least GHC.Exts exports the same names. ] [Fix hashInt Ian Lynagh **20070821140706 As pointed out in http://www.haskell.org/pipermail/glasgow-haskell-bugs/2007-August/009545.html the old behaviour was Prelude Data.HashTable> map hashInt [0..10] [0,-1,-1,-2,-2,-2,-3,-3,-4,-4,-4] Fixed according to the "Fibonacci Hashing" algorithm described in http://www.brpreiss.com/books/opus4/html/page213.html http://www.brpreiss.com/books/opus4/html/page214.html ] [test impl(ghc) instead of IsGHC Ross Paterson **20070819233500] [fpstring.h has moved to bytestring Ross Paterson **20070819233815] [remove now-unused SIG constants Ross Paterson **20070819233745] [include Win32 extra-libraries for non-GHC's too Ross Paterson **20070819233611] [Don't import Distribution.Setup in Setup.hs as we no longer need it Ian Lynagh **20070816151643] [Correct the swapMVar haddock doc Ian Lynagh **20070814145028] [install Typeable.h for use by other packages Malcolm.Wallace@cs.york.ac.uk**20070813112855] [Don't try to build modules no longer living in base. Malcolm.Wallace@cs.york.ac.uk**20070813112803] [Move Data.{Foldable,Traversable} back to base Ian Lynagh **20070812165654 The Array instances are now in Data.Array. ] [Remove bits left over from the old build system Ian Lynagh **20070811135019] [Move the datamap001 (our only test) to the containers package Ian Lynagh **20070803180932] [Data.Array* and Data.PackedString have now moved to their own packages Ian Lynagh **20070801235542] [Remove a number of modules now in a "containers" package Ian Lynagh **20070801223858] [Remove System.Posix.Signals (moving to unix) Ian Lynagh **20070729215213] [bytestring is now in its own package Ian Lynagh **20070729132215] [Export throwErrnoPath* functions Ian Lynagh **20070722002923] [Add simple haddock docs for throwErrnoPath* functions Ian Lynagh **20070722002817] [Move throwErrnoPath* functions from unix:System.Posix.Error Ian Lynagh **20070722002746] [Clarify the swapMVar haddock doc Ian Lynagh **20070807185557] [fix Haddock markup Simon Marlow **20070802081717] [Temporarily fix breakage for nhc98. Malcolm.Wallace@cs.york.ac.uk**20070801163750 A recent patch to System.IO introduced a cyclic dependency on Foreign.C.Error, and also inadvertently dragged along System.Posix.Internals which has non-H'98 layout, causing many build problems. The solution for now is to #ifndef __NHC__ all of the recent the openTempFile additions, and mark them non-portable once again. (I also took the opportunity to note a number of other non-portable functions in their Haddock comments.) ] [Generalise the type of synthesize, as suggested by Trac #1571 simonpj@microsoft**20070801125208 I have not looked at the details, but the type checker is happy with the more general type, and more general types are usually a Good Thing. ] [Fix fdToHandle on Windows Ian Lynagh **20070730133139 The old setmode code was throwing an exception, and I'm not sure it is meant to do what we need anyway. For now we assume that all FDs are both readable and writable. ] [Correct Windows OS name in cabal configuration Ian Lynagh **20070729161739] [Use cabal configurations rather than Setup hacks Ian Lynagh **20070729132157] [Handle buffers should be allocated with newPinnedByteArray# always Simon Marlow **20070725095550 Not just on Windows. This change is required because we now use safe foreign calls for I/O on blocking file descriptors with the threaded RTS. Exposed by concio001.thr on MacOS X: MacOS apparently uses smaller buffers by default, so they weren't being allocated as large objects. ] [fix Hugs implementation of openTempFile Ross Paterson **20070724114003] [Hugs only: avoid dependency cycle Ross Paterson **20070724113852] [open(Binary)TempFile is now portable Ian Lynagh **20070722152752] [Tweak temporary file filename chooser Ian Lynagh **20070722105445] [Move open(Binary)TempFile to System.IO Ian Lynagh **20070722010205] [Rename openFd to fdToHandle' Ian Lynagh **20070721235538 The name collision with System.Posix.IO.openFd made my brain hurt. ] [Add a test for Data.Map, for a bug on the libraries@ list Ian Lynagh **20070721002119] [fix Data.Map.updateAt Bertram Felgenhauer **20070718150340 See http://haskell.org/pipermail/libraries/2007-July/007785.html for a piece of code triggering the bug. updateAt threw away parts of the tree making up the map. ] [in hClose, free the handle buffer by replacing it with an empty one Simon Marlow **20070719161419 This helps reduce the memory requirements for a closed but unfinalised Handle. ] [Implement GHC.Environment.getFullArgs Ian Lynagh **20070717141918 This returns all the arguments, including those normally eaten by the RTS (+RTS ... -RTS). This is mainly for ghc-inplace, where we need to pass /all/ the arguments on to the real ghc. e.g. ioref001(ghci) was failing because the +RTS -K32m -RTS wasn't getting passed on. ] [Define stripPrefix; fixes trac #1464 Ian Lynagh **20070714235204] [no need to hide Maybe Malcolm.Wallace@cs.york.ac.uk**20070710154058] [Add a more efficient Data.List.foldl' for GHC (from GHC's utils/Util.lhs) Ian Lynagh **20070706205526] [Remove include-dirs ../../includes and ../../rts Ian Lynagh **20070705205356 We get these by virtue of depending on the rts package. ] [FIX #1131 (newArray_ allocates an array full of garbage) Simon Marlow **20070704102020 Now newArray_ returns a deterministic result in the ST monad, and behaves as before in other contexts. The current newArray_ is renamed to unsafeNewArray_; the MArray class therefore has one more method than before. ] [change nhc98 option from -prelude to --prelude Malcolm.Wallace@cs.york.ac.uk**20070702150355] [Word is a type synonym in nhc98 - so class instance not permitted. Malcolm.Wallace@cs.york.ac.uk**20070629122035] [fix bug in writes to blocking FDs in the non-threaded RTS Simon Marlow **20070628134320] [Modernize printf. lennart.augustsson@credit-suisse.com**20070628083852 Add instances for Int8, Int16, Int32, Int64, Word, Word8, Word16, Word32, and Word64. Handle + flag. Handle X, E, and G formatting characters. Rewrite internals to make it simpler. ] [Speed up number printing and remove the need for Array by using the standard 'intToDigit' routine John Meacham **20070608182353] [Use "-- //" (2 spaces) rather than "-- //" (1) to avoid tripping haddock up Ian Lynagh **20070627010930 Are we nearly there yet? ] [Use a combination of Haskell/C comments to ensure robustness. Malcolm.Wallace@cs.york.ac.uk**20070626095222 e.g. -- // ensures that _no_ preprocessor will try to tokenise the rest of the line. ] [Change C-style comments to Haskell-style. Malcolm.Wallace@cs.york.ac.uk**20070625094515 These two headers are only ever used for pre-processing Haskell code, and are never seen by any C tools except cpp. Using the Haskell comment convention means that cpphs no longer needs to be given the --strip option to remove C comments from open code. This is a Good Thing, because all of /* */ and // are valid Haskell operator names, and there is no compelling reason to forbid using them in files which also happen to have C-preprocessor directives. ] [makefileHook needs to generate PrimopWrappers.hs too Simon Marlow **20070622073424] [Hugs now gets MonadFix(mfix) from its prelude Ross Paterson **20070620000343] [Typo (consUtils.hs -> consUtils.h) Ian Lynagh **20070619124140] [install dependent include files and Typeable.h Bertram Felgenhauer **20070613041734] [update prototype following inputReady->fdReady change Simon Marlow **20070614095309] [FIX hGetBuf001: cut-and-pasto in readRawBufferNoBlock Simon Marlow **20070614094222] [fix description of CWStringLen Ross Paterson **20070605223345] [Remove unsafeCoerce-importing kludgery in favor of Unsafe.Coerce Isaac Dupree **20070601203625] [--configure-option and --ghc-option are now provided by Cabal Ross Paterson **20070604115233] [Data.PackedString: Data.Generics is GHC-only Ross Paterson **20070529232427] [Add Data instance for PackedString; patch from greenrd in trac #1263 Ian Lynagh **20070529205420] [Control.Concurrent documentation fix shae@ScannedInAvian.com**20070524163325] [add nhc98-options: field to .cabal file Malcolm.Wallace@cs.york.ac.uk**20070528122626] [add a dummy implementation of System.Timeout.timeout for nhc98 Malcolm.Wallace@cs.york.ac.uk**20070528110309] [Add System.Timeout to base.cabal Ian Lynagh **20070527123314 Filtered out for non-GHC by Setup.hs. ] [add module Data.Fixed to nhc98 build Malcolm.Wallace@cs.york.ac.uk**20070525141021] [DIRS now lives in package Makefile, not script/pkgdirlist Malcolm.Wallace@cs.york.ac.uk**20070525111749] [delete unused constants Ross Paterson **20070525001741] [remove System.Cmd and System.Time too Malcolm.Wallace@cs.york.ac.uk**20070524163200] [remove locale as well Malcolm.Wallace@cs.york.ac.uk**20070524161943] [nhc98 version of instance Show (a->b) copied from Prelude Malcolm.Wallace@cs.york.ac.uk**20070524160615] [remove directory, pretty, and random bits from base for nhc98 Malcolm.Wallace@cs.york.ac.uk**20070524160608] [Remove Makefile and package.conf.in (used in the old build system) Ian Lynagh **20070524142545] [Split off process package Ian Lynagh **20070523210523] [Fix comment: maperrno is in Win32Utils.c, not runProcess.c Ian Lynagh **20070523181331] [System.Locale is now split out Ian Lynagh **20070519132638] [Split off directory, random and old-time packages Ian Lynagh **20070519120642] [Remove Control.Parallel*, now in package parallel Ian Lynagh **20070518165431] [Remove the pretty-printing modules (now in package pretty( Ian Lynagh **20070518162521] [add install-includes: field Simon Marlow **20070517094948] [correct the documentation for newForeignPtr Simon Marlow **20070516082019] [When doing safe writes, handle EAGAIN rather than raising an exception Simon Marlow **20070515114615 It might be that stdin was set to O_NONBLOCK by someone else, and we should handle this case. (this happens with GHCi, I'm not quite sure why) ] [Use FilePath to make paths when building GHC/Prim.hs and GHC/PrimopWrappers.hs Ian Lynagh **20070514110409] [Build GHC/Prim.hs and GHC/PrimopWrappers.hs from Cabal Ian Lynagh **20070509142655] [fix imports for non-GHC Ross Paterson **20070513001138] [Give an example of how intersection takes elements from the first set Ian Lynagh **20070512160253] [further clarify the docs for 'evaluate' Malcolm.Wallace@cs.york.ac.uk**20070508101124] [improve documentation for evaluate Simon Marlow **20070508081712] [FIX: #724 (tee complains if used in a process started by ghc) Simon Marlow **20070507123537 Now, we only set O_NONBLOCK on file descriptors that we create ourselves. File descriptors that we inherit (stdin, stdout, stderr) are kept in blocking mode. The way we deal with this differs between the threaded and non-threaded runtimes: - with -threaded, we just make a safe foreign call to read(), which may block, but this is ok. - without -threaded, we test the descriptor with select() before attempting any I/O. This isn't completely safe - someone else might read the data between the select() and the read() - but it's a reasonable compromise and doesn't seem to measurably affect performance. ] [the "unknown" types are no longer required Simon Marlow **20070426135931] [Make Control.Exception buildable by nhc98. Malcolm.Wallace@cs.york.ac.uk**20070504105548 The nhc98 does not have true exceptions, but these additions should be enough infrastructure to pretend that it does. Only IO exceptions will actually work. ] [Trim imports, remove a cycle simonpj@microsoft**20070503123010 A first attempt at removing gratuitous cycles in the base package. I've removed the useless module GHC.Dynamic, which gets rid of a cycle; and trimmed off various unnecesary imports. This also fixes the IsString import problem. ] [Be less quiet about building the base package simonpj@microsoft**20070503093707] [Remove Splittable class (a vestige of linear implicit parameters) simonpj@microsoft**20070221104329] [Add IsString to exports of GHC.Exts simonpj@microsoft**20070221104249] [tweak documentation as per suggestion from Marc Weber on libraries@haskell.org Simon Marlow **20070426075921] [Add extra libraries when compiling with GHC on Windows Ian Lynagh **20070424213127] [Follow Cabal changes in Setup.hs Ian Lynagh **20070418114345] [inclusion of libc.h is conditional on __APPLE__ Malcolm.Wallace@cs.york.ac.uk**20070417085556] [MERGE: fix ugly uses of memcpy foreign import inside ST Simon Marlow **20070416101530 fixes cg026 ] [Fix configure with no --with-cc Ian Lynagh **20070415165143] [MacOS 10.3 needs #include as well Malcolm.Wallace@cs.york.ac.uk**20070414155507] [For nhc98 only, use hsc2hs to determine System.Posix.Types. Malcolm.Wallace@cs.york.ac.uk**20070413155831 Avoids the existing autoconf stuff, by introducing an auxiliary module called NHC.PosixTypes that uses hsc2hs, which is then simply re-exported from System.Posix.Types. ] [we need a makefileHook too Simon Marlow **20070413151307] [Remove unnecesary SOURCE import of GHC.Err in GHC.Pack Ian Lynagh **20070412235908] [add System.Posix.Types to default nhc98 build Malcolm.Wallace@cs.york.ac.uk**20070412195026] [mark System.IO.openTempFile as non-portable in haddocks Malcolm.Wallace@cs.york.ac.uk**20070412135359] [Don't turn on -Werror in Data.Fixed Ian Lynagh **20070411155721 This may be responsible for the x86_64/Linux nightly build failing. ] [Fix -Wall warnings Ian Lynagh **20070411004929] [Add missing case in removePrefix Ian Lynagh **20070411002537] [Allow additional options to pass on to ./configure to be given Ian Lynagh **20070406151856] [Hugs only: fix location of unsafeCoerce Ross Paterson **20070406113731] [fix isPortableBuild test Ross Paterson **20070406111304] [Unsafe.Coerce doesn't need Prelude Ian Lynagh **20070405175930] [make Setup and base.cabal suitable for building the libraries with GHC Ian Lynagh **20070308163824] [HsByteArray doesn't exist Ian Lynagh **20070404163051] [Don't use Fd/FD in foreign decls Ian Lynagh **20070404155822 Using CInt makes it much easier to verify that it is right, and we won't get caught out by possible newtype switches between CInt/Int. ] [HsByteArray doesn't exist Ian Lynagh **20070404155732] [Fix braino Ian Lynagh **20070404144508] [Fix incorrect changes to C types in a foreign import for nhc98. Malcolm.Wallace@cs.york.ac.uk**20070404120954 If we use type CTime, it needs to be imported. Also, CTime is not an instance of Integral, so use some other mechanism to convert it. ] [Fix C/Haskell type mismatches Ian Lynagh **20070403194943] [add new module Unsafe.Coerce to build system Malcolm.Wallace@cs.york.ac.uk**20070403131333] [Fix type mismatches between foreign imports and HsBase.h Ian Lynagh **20070403001611 Merge to stable, checking for interface changes. ] [put 'unsafeCoerce' in a standard location Malcolm.Wallace@cs.york.ac.uk**20061113114103] [fix for nhc98 build Malcolm.Wallace@cs.york.ac.uk**20070402141712] [Function crossMapP for fixing desugaring of comprehensions Manuel M T Chakravarty **20070402082906 Merge into 6.6 branch. ] [Add min/max handling operations for IntSet/IntMap jeanphilippe.bernardy@gmail.com**20070315072352] [Monoid instance for Maybe and two wrappers: First and Last. trac proposal #1189 Jeffrey Yasskin **20070309062550] [Fix the type of wgencat Ian Lynagh **20070329164223] [fix strictness of foldr/build rule for take, see #1219 Simon Marlow **20070327103941] [remove Makefile.inc (only affects nhc98) Malcolm.Wallace@cs.york.ac.uk**20070320120057] [copyBytes copies bytes, not elements; fixes trac #1203 Ian Lynagh **20070312113555] [Add ioeGetLocation, ioeSetLocation to System/IO/Error.hs; trac #1191 Ian Lynagh **20070304130315] [fix race condition in prodServiceThread Simon Marlow **20070307134330 See #1187 ] [Prevent duplication of unsafePerformIO on a multiprocessor Simon Marlow **20070306145424 Fixes #986. The idea is to add a new operation noDuplicate :: IO () it is guaranteed that if two threads have executed noDuplicate, then they are not duplicating any computation. We now provide two new unsafe operations: unsafeDupablePerformIO :: IO a -> a unsafeDupableInterleaveIO :: IO a -> IO a which are equivalent to the old unsafePerformIO and unsafeInterleaveIO respectively. The new versions of these functions are defined as: unsafePerformIO m = unsafeDupablePerformIO (noDuplicate >> m) unsafeInterleaveIO m = unsafeDupableInterleaveIO (noDuplicate >> m) ] [expand docs for forkOS Simon Marlow **20070305160921] [document timeout limitations Peter Simons **20070228223540] [So many people were involved in the writing of this module that Peter Simons **20070228223415 it feels unfair to single anyone out as the lone copyright holder. ] [This patch adds a timeout function to the base libraries. Trac #980 is Peter Simons **20070126222615 concerned with this issue. The design guideline for this implementation is that 'timeout N E' should behave exactly the same as E as long as E doesn't time out. In our implementation, this means that E has the same myThreadId it would have without the timeout wrapper. Any exception E might throw cancels the timeout and propagates further up. It also possible for E to receive exceptions thrown to it by another thread. ] [PArr: fixed permutations Manuel M T Chakravarty **20070305055807] [Add Data.String, containing IsString(fromString); trac proposal #1126 Ian Lynagh **20070130134841 This is used by the overloaded strings extension (-foverloaded-strings in GHC). ] [GHC.PArr: add bounds checking Manuel M T Chakravarty **20070302053224] [Bump nhc98 stack size for System/Time.hsc sven.panne@aedion.de**20070301153009] [FDs are CInts now, fixing non-GHC builds sven.panne@aedion.de**20070225105620] [Fixed PArr.dropP Manuel M T Chakravarty **20070222032405 - Thanks to Audrey Tang for the bug report ] [Keep the same FD in both halves of a duplex handle when dup'ing Ian Lynagh **20070220141039 Otherwise we only close one of the FDs when closing the handle. Fixes trac #1149. ] [Remove more redundant FD conversions Ian Lynagh **20070220092520] [Fix FD changes on Windows Ian Lynagh **20070220091516] [Consistently use CInt rather than Int for FDs Ian Lynagh **20070219233854] [Fix the types of minView/maxView (ticket #1134) jeanphilippe.bernardy@gmail.com**20070210065115] [fix for hashString, from Jan-Willem Maessen (see #1137) Simon Marlow **20070215094304 ] [fix to getUSecOfDay(): arithmetic was overflowing Simon Marlow **20070214161719] [The Windows counterpart to 'wrapround of thread delays' Ian Lynagh **20070209173510] [wrapround of thread delays Neil Davies **20070129160519 * made the wrapround of the underlying O/S occur before the wrapround of the delayed threads by making threads delay in microseconds since O/S epoch (1970 - Unix, 1601 - Windows) stored in Word64. * removed redundant calls reading O/S realtime clock * removed rounding to 1/50th of sec for timers * Only for Unix version of scheduler. ] [Whitespace changes only Ian Lynagh **20070206232722] [Add some type sigs Ian Lynagh **20070206232439] [Use static inline rather than extern inline/inline Ian Lynagh **20070205203628 I understand this is more portable, and it also fixes warnings when C things we are wrapping are themselves static inlines (which FD_ISSET is on ppc OS X). ] [add derived instances for Dual monoid Ross Paterson **20070202190847] [add doc pointers to Foldable Ross Paterson **20070202110931 Could be applied to STABLE. ] [Eliminate some warnings Ian Lynagh **20060729220854 Eliminate warnings in the libraries caused by mixing pattern matching with numeric literal matching. ] [Remove IsString(fromString) from the Prelude Ian Lynagh **20070130124136] [Add Kleisli composition Don Stewart **20061113015442] [IsString is GHC-only (so why is it in the Prelude?) Ross Paterson **20070123183007] [Applicative and Monad instances for Tree Ross Paterson **20070115174510] [Add IsString class for overloaded string literals. lennart@augustsson.net**20061221210532] [Added examples, more detailed documentation to Data.List Extracting sublists functions Andriy Palamarchuk **20061204164710] [fix threadDelay Simon Marlow **20070117091702 In "Add support for the IO manager thread" I accidentally spammed part of "Make sure the threaded threadDelay sleeps at least as long as it is asked", which is why the ThreadDelay001 test has been failing. ] [update section on "blocking" Simon Marlow **20070116124328] [Fix crash with (minBound :: Int*) `div (-1) as result is maxBound + 1. Ian Lynagh **20070115142005] [version of example using Tomasz Zielonka's technique Ross Paterson **20070105175907] [Added Unknowns for higher kinds Pepe Iborra **20061108155938] [Improved the Show instance for Unknown Pepe Iborra **20060813111816] [Show instance for GHC.Base.Unknown mnislaih@gmail.com**20060801233530] [Introduce Unknowns for the closure viewer. Add breakpointCond which was missing mnislaih@gmail.com**20060725174537] [Fix missing comma in Fractional documentation Alec Berryman **20061201173237] [Mention that throwTo does not guarantee promptness of delivery simonpj@microsoft**20061211123215] [Add note about synhronous delivery of throwTo simonpj@microsoft**20061211122257] [documentation for installHandler Simon Marlow **20061205154927 merge to 6.6 ] [dos2unix Simon Marlow **20061204095439] [don't try to compile this on Unix Simon Marlow **20061204095427] [TAG 6.6 release Ian Lynagh **20061011124740] [TAG Version 2.1 Ian Lynagh **20061009114014] [Bump version number Ian Lynagh **20061009114009] [Add support for the IO manager thread on Windows Simon Marlow **20061201152042 Fixes #637. The test program in that report now works for me with -threaded, but it doesn't work without -threaded (I don't know if that's new behaviour or not, though). ] [deriving (Eq, Ord, Enum, Show, Read, Typeab) for ConsoleEvent Simon Marlow **20061201144032] [Make sure the threaded threadDelay sleeps at least as long as it is asked to Ian Lynagh **20061128204807] [Add comments about argument order to the definitions of gmapQ and constrFields simonpj@microsoft**20061124164505] [Hugs: add Control.Parallel.Strategies Ross Paterson **20061124161039] [Move instance of Show Ptr to Ptr.hs (fewer orphans) simonpj@microsoft.com**20061124100639] [Add type signatures simonpj@microsoft.com**20061124100621] [Add an example of the use of unfoldr, following doc feedback from dozer Don Stewart **20061124011249] [trim imports Ross Paterson **20061123190352] [Data.Graph is now portable (enable for nhc98) Malcolm.Wallace@cs.york.ac.uk**20061123174913] [remove Data.FunctorM and Data.Queue Ross Paterson **20061112001046 These were deprecated in 6.6, and can thus be removed in 6.8. ] [make Data.Graph portable (no change to the interface) Ross Paterson **20061122010040 The algorithm now uses STArrays on GHC and IntSets elsewhere. (Hugs has STArrays, but avoiding them saves a -98, and boxed arrays aren't fast under Hugs anyway.) ] [One less unsafeCoerce# in the tree Don Stewart **20061120120242] [typo in comment Ross Paterson **20061120115106] [fix shift docs to match ffi spec Ross Paterson **20061117003144] [(nhc98) use new primitive implementations of h{Put,Get}Buf. Malcolm.Wallace@cs.york.ac.uk**20061116173104] [The wrong 'cycle' was exported from Data.ByteString.Lazy.Char8, spotted by sjanssen Don Stewart **20061110021311] [LPS chunk sizes should be 16 bytes, not 17. Don Stewart **20061110021254] [Update comments on Prelude organisation in GHC/Base.lhs Ian Lynagh **20061115001926] [Control.Parallel.Strategies clean-up: Added export list to avoid exporting seq, fixed import list strangeness that haddock choked on, and moved the deprecated functions to a separate section. bringert@cs.chalmers.se**20061113224202] [Control.Parallel.Strategies: added NFData instances for Data.Int.*, Data.Word.*, Maybe, Either, Map, Set, Tree, IntMap, IntSet. bringert@cs.chalmers.se**20061113221843] [Control.Parallel.Strategies: deprecate sPar, sSeq, Assoc, fstPairFstList, force and sforce. bringert@cs.chalmers.se**20061113215219 Code comments indicated that sPar and sSeq have been superceded by sparking and demanding, and that Assoc, fstPairFstList, force and sforce are examples and hacks needed by the Lolita system. ] [add Control.Monad.Instances to nhc98 build Malcolm.Wallace@cs.york.ac.uk**20061113113221] [Control.Parallel.Strategies: clarified documentation of parListChunk. bringert@cs.chalmers.se**20061112232904] [Added and cleaned up Haddock comments in Control.Parallel.Strategies. bringert@cs.chalmers.se**20061112220445 Many of the definitions in Control.Parallel.Strategies had missing or unclear Haddock comments. I converted most of the existing plain code comments to haddock comments, added some missing documentation and cleaned up the existing Haddock mark-up. ] [Fix broken pragmas; spotted by Bulat Ziganshin Ian Lynagh **20061111205916] [add doc link to bound threads section Ross Paterson **20060929103252] [hide Data.Array.IO.Internals Ross Paterson **20061111113248 It's hidden from haddock, and everything it exports is re-exported by Data.Array.IO. ] [add Data.Function Malcolm.Wallace@cs.york.ac.uk**20061110142710] [add Data.Function Ross Paterson **20061110141354] [whitespace only Ross Paterson **20061110141326] [move fix to Data.Function Ross Paterson **20061110141120] [import Prelude Ross Paterson **20061110140445] [Added Data.Function (Trac ticket #979). Nils Anders Danielsson **20061110122503 + A module with simple combinators working solely on and with functions. + The only new function is "on". + Some functions from the Prelude are re-exported. ] [__hscore_long_path_size is not portable beyond GHC Malcolm.Wallace@cs.york.ac.uk**20061110113222] [redefine writeFile and appendFile using withFile Ross Paterson **20061107140359] [add withFile and withBinaryFile (#966) Ross Paterson **20061107134510] [remove conflicting import for nhc98 Malcolm.Wallace@cs.york.ac.uk**20061108111215] [Add intercalate to Data.List (ticket #971) Josef Svenningsson **20061102122052] [non-GHC: fix canonicalizeFilePath Ross Paterson **20061107133902 I've also removed the #ifdef __GLASGOW_HASKELL__ from the proper Windows versions of a few functions. These will need testing with Hugs on Windows. ] [enable canonicalizePath for non-GHC platforms Simon Marlow **20061107121141] [Update documentation for hWaitForInput Simon Marlow **20061107111430 See #972 Merge to 6.6 branch. ] [Use unchecked shifts to implement Data.Bits.rotate Samuel Bronson **20061012125553 This should get rid of those cases, maybe lower the size enough that the inliner will like it? ] [fix Haddock module headers Ross Paterson **20061106124140] [fix example in docs Ross Paterson **20061106115628] [Add intercalate and split to Data.List Josef Svenningsson *-20061024172357] [Data.Generics.Basics is GHC-only Ross Paterson **20061102111736] [#ifdef around non-portable Data.Generics.Basics Malcolm.Wallace@cs.york.ac.uk**20061102103445] [Add deriving Data to Complex simonpj@microsoft**20061101102059] [minor clarification of RandomGen doc Ross Paterson **20061030230842] [rearrange docs a bit Ross Paterson **20061030161223] [Add intercalate and split to Data.List Josef Svenningsson **20061024172357] [Export pseq from Control.Parallel, and use it in Control.Parallel.Strategies Simon Marlow **20061027150141] [`par` should be infixr 0 Simon Marlow **20061027130800 Alas, I didn't spot this due to lack of testing, and the symptom is that an expression like x `par` y `seq z will have exactly the wrong parallelism properties. The workaround is to add parantheses. I think we could push this to the 6.6 branch. ] [fix example in comment Ross Paterson **20061023163925] [Use the new Any type for dynamics (GHC only) simonpj@microsoft**20061019160408] [add Data.Sequence to nhc98 build Malcolm.Wallace@cs.york.ac.uk**20061012135200] [Remove Data.FiniteMap, add Control.Applicative, Data.Traversable, and Malcolm.Wallace@cs.york.ac.uk**20061012095605 Data.Foldable to the nhc98 build. ] [STM invariants tharris@microsoft.com**20061007123253] [Inline shift in GHC's Bits instances for {Int,Word}{,8,16,32,64} Samuel Bronson **20061009020906] [Don't create GHC.Prim when bootstrapping; we can't, and we don't need it Ian Lynagh **20061004165355] [Data.ByteString: fix lazyness of take, drop & splitAt Don Stewart **20061005011703 ByteString.Lazy's take, drop and splitAt were too strict when demanding a byte string. Spotted by Einar Karttunen. Thanks to him and to Bertram Felgenhauer for explaining the problem and the fix. ] [Fix syntax error that prevents building Haddock documentation on Windows brianlsmith@gmail.com**20060917013530] [Hugs only: unbreak typeRepKey Ross Paterson **20060929102743] [make hGetBufNonBlocking do something on Windows w/ -threaded Simon Marlow **20060927145811 hGetBufNonBlocking will behave the same as hGetBuf on Windows now, which is better than just crashing (which it did previously). ] [add typeRepKey :: TypeRep -> IO Int Simon Marlow **20060927100342 See feature request #880 ] [fix header comment Ross Paterson **20060926135843] [Add strict versions of insertWith and insertWithKey (Data.Map) jeanphilippe.bernardy@gmail.com**20060910162443] [doc tweaks, including more precise equations for evaluate Ross Paterson **20060910115259] [Sync Data.ByteString with stable branch Don Stewart **20060909050111 This patch: * hides the LPS constructor (its in .Base if you need it) * adds functions to convert between strict and lazy bytestrings * and adds readInteger ] [Typeable1 instances for STM and TVar Ross Paterson **20060904231425] [remove obsolete Hugs stuff Ross Paterson **20060904223944] [Cleaner isInfixOf suggestion from Ross Paterson John Goerzen **20060901143654] [New function isInfixOf that searches a list for a given sublist John Goerzen **20060831151556 Example: isInfixOf "Haskell" "I really like Haskell." -> True isInfixOf "Ial" "I really like Haskell." -> False This function was first implemented in MissingH as MissingH.List.contains ] [Better doc on Data.Map.lookup: explain what the monad is for jeanphilippe.bernardy@gmail.com**20060903133440] [fix hDuplicateTo on Windows Simon Marlow **20060901150016 deja vu - I'm sure I remember fixing this before... ] [Improve documentation of atomically simonpj@microsoft**20060714120207] [Add missing method genRange for StdGen (fixes #794) simonpj@microsoft**20060707151901 MERGE TO STABLE Trac #794 reports (correctly) that the implementation of StdGen only returns numbers in the range (0..something) rather than (minBound, maxBound), which is what StdGen's genRange claims. This commit fixes the problem, by implementing genRange for StdGen (previously it just used the default method). ] [mark nhc98 import hack Ross Paterson **20060831125219] [remove some outdated comments Simon Marlow **20060831104200] [import Control.Arrow.ArrowZero to help nhc98's type checker Malcolm.Wallace@cs.york.ac.uk**20060831101105] [remove Text.Regex(.Posix) from nhc98 build Malcolm.Wallace@cs.york.ac.uk**20060831101016] [add Data.Foldable.{msum,asum}, plus tweaks to comments Ross Paterson **20060830163521] [fix doc typo Ross Paterson **20060830134123] [add Data.Foldable.{for_,forM_} and Data.Traversable.{for,forM} Ross Paterson **20060830133805 generalizing Control.Monad.{forM_,forM} ] [Make length a good consumer simonpj@microsoft*-20060508142726 Make length into a good consumer. Fixes Trac bug #707. (Before length simply didn't use foldr.) ] [Add Control.Monad.forM and forM_ Don Stewart **20060824081118 flip mapM_ is more and more common, I find. Several suggestions have been made to add this, as foreach or something similar. This patch does just that: forM :: (Monad m) => [a] -> (a -> m b) -> m [b] forM_ :: (Monad m) => [a] -> (a -> m b) -> m () So we can write: Prelude Control.Monad> forM_ [1..4] $ \x -> print x 1 2 3 4 ] [Hide internal module from haddock in Data.ByteString Don Stewart **20060828011515] [add advice on avoiding import ambiguities Ross Paterson **20060827170407] [expand advice on importing these modules Ross Paterson **20060827164044] [add Haddock marker Ross Paterson **20060827115140] [Clarify how one hides Prelude.catch Don Stewart **20060826124346 User feedback indicated that an example was required, of how to hide Prelude.catch, so add such an example to the docs ] [Workaround for OSes that don't have intmax_t and uintmax_t Ian Lynagh **20060825134936 OpenBSD (and possibly others) do not have intmax_t and uintmax_t types: http://www.mail-archive.com/haskell-prime@haskell.org/msg01548.html so substitute (unsigned) long long if we have them, otherwise (unsigned) long. ] [add docs for par Simon Marlow **20060825110610] [document minimal complete definition for Bits Ross Paterson **20060824140504] [C regex library bits have moved to the regex-posix package Simon Marlow **20060824132311] [Add shared Typeable support (ghc only) Esa Ilari Vuokko **20060823003126] [this should have been removed with the previous patch Simon Marlow **20060824121223] [remove Text.Regx & Text.Regex.Posix Simon Marlow **20060824094615 These are subsumed by the new regex-base, regex-posix and regex-compat packages. ] [explicitly tag Data.ByteString rules with the FPS prefix. Don Stewart **20060824041326] [Add spec rules for sections in Data.ByteString Don Stewart **20060824012611] [Sync Data.ByteString with current stable branch, 0.7 Don Stewart **20060823143338] [add notes about why copyFile doesn't remove the target Simon Marlow **20060823095059] [copyFile: try removing the target file before opening it for writing Simon Marlow *-20060822121909] [copyFile: try removing the target file before opening it for writing Simon Marlow **20060822121909] [add alternative functors and extra instances Ross Paterson **20060821152151 * Alternative class, for functors with a monoid * instances for Const * instances for arrows ] [generate Haddock docs on all platforms Simon Marlow **20060821131612] [remove extra comma from import Ross Paterson **20060819173954] [fix docs for withC(A)StringLen Ross Paterson **20060818170328] [use Haskell'98 compliant indentation in do blocks Malcolm.Wallace@cs.york.ac.uk**20060818130810] [use correct names of IOArray operations for nhc98 Malcolm.Wallace@cs.york.ac.uk**20060818130714] [add mapMaybe and mapEither, plus WithKey variants Ross Paterson **20060817235041] [remove Text.Html from nhc98 build Malcolm.Wallace@cs.york.ac.uk**20060817135502] [eliminate more HOST_OS tests Ross Paterson **20060815190609] [Hugs only: disable unused process primitives Ross Paterson **20060813184435 These were the cause of Hugs bug #30, I think, and weren't used by Hugs anyway. ] [markup fix to Data.HashTable Ross Paterson **20060812103835] [revert removal of ghcconfig.h from package.conf.in Ross Paterson **20060812082702 as it's preprocessed with -undef (pointed out by Esa Ilari Vuokko) ] [fix Data.HashTable for non-GHC Ross Paterson **20060811231521] [remove deprecated 'withObject' Simon Marlow **20060811152350] [Jan-Willem Maessen's improved implementation of Data.HashTable Simon Marlow **20060811151024 Rather than incrementally enlarging the hash table, this version just does it in one go when the table gets too full. ] [Warning police: Make some prototypes from the RTS known sven.panne@aedion.de**20060811144629] [Warning police: Removed useless catch-all clause sven.panne@aedion.de**20060811142208] [reduce dependency on ghcconfig.h Ross Paterson **20060811124030 The only remaining use is in cbits/dirUtils.h, which tests solaris2_HOST_OS (Also System.Info uses ghcplatform.h and several modules import MachDeps.h to get SIZEOF_* and ALIGNMENT_* from ghcautoconf.h) ] [(non-GHC only) track MArray interface change Ross Paterson **20060810182902] [move Text.Html to a separate package Simon Marlow **20060810113017] [bump version to 2.0 Simon Marlow **20060810112833] [Remove deprecated Data.FiniteMap and Data.Set interfaces Simon Marlow **20060809153810] [move altzone test from ghc to base package Ross Paterson **20060809124259] [remove unnecessary #include "ghcconfig.h" Ross Paterson **20060809123812] [Change the API of MArray to allow resizable arrays Simon Marlow **20060809100548 See #704 The MArray class doesn't currently allow a mutable array to change its size, because of the pure function bounds :: (HasBounds a, Ix i) => a i e -> (i,i) This patch removes the HasBounds class, and adds getBounds :: (MArray a e m, Ix i) => a i e -> m (i,i) to the MArray class, and bounds :: (IArray a e, Ix i) => a i e -> (i,i) to the IArray class. The reason that bounds had to be incorporated into the IArray class is because I couldn't make DiffArray work without doing this. DiffArray acts as a layer converting an MArray into an IArray, and there was no way (that I could find) to define an instance of HasBounds for DiffArray. ] [deprecate this module. Simon Marlow **20060808100708] [add traceShow (see #474) Simon Marlow **20060807155545] [remove spurious 'extern "C" {' Simon Marlow **20060724160258] [Fix unsafeIndex for large ranges Simon Marlow **20060721100225] [disambiguate uses of foldr for nhc98 to compile without errors Malcolm.Wallace@cs.york.ac.uk**20060711161614] [make Control.Monad.Instances compilable by nhc98 Malcolm.Wallace@cs.york.ac.uk**20060711160941] [breakpointCond Lemmih **20060708055528] [UNDO: Merge "unrecognized long opt" fix from 6.4.2 Simon Marlow **20060705142537 This patch undid the previous patch, "RequireOrder: do not collect unrecognised options after a non-opt". I asked Sven to revert it, but didn't get an answer. See bug #473. ] [Avoid strictness in accumulator for unpackFoldr Don Stewart **20060703091806 The seq on the accumulator for unpackFoldr will break in the presence of head/build rewrite rules. The empty list case will be forced, producing an exception. This is a known issue with seq and rewrite rules that we just stumbled on to. ] [Disable unpack/build fusion Don Stewart **20060702083913 unpack/build on bytestrings seems to trigger a bug when interacting with head/build fusion in GHC.List. The bytestring001 testcase catches it. I'll investigate further, but best to disable this for now (its not often used anyway). Note that with -frules-off or ghc 6.4.2 things are fine. It seems to have emerged with the recent rules changes. ] [Import Data.ByteString.Lazy, improve ByteString Fusion, and resync with FPS head Don Stewart **20060701084345 This patch imports the Data.ByteString.Lazy module, and its helpers, providing a ByteString implemented as a lazy list of strict cache-sized chunks. This type allows the usual lazy operations to be written on bytestrings, including lazy IO, with much improved space and time over the [Char] equivalents. ] [Wibble in docs for new ForeignPtr functionsn Don Stewart **20060609075924] [comments for Applicative and Traversable Ross Paterson **20060622170436] [default to NoBuffering on Windows for a read/write text file Simon Marlow **20060622144446 Fixes (works around) #679 ] [remove dead code Simon Marlow **20060622144433] [clarify and expand docs Simon Marlow **20060622112911] [Add minView and maxView to Map and Set jeanphilippe.bernardy@gmail.com**20060616180121] [add signature for registerDelay Ross Paterson **20060614114456] [a few doc comments Ross Paterson **20060613142704] [Optimised foreign pointer representation, for heap-allocated objects Don Stewart **20060608015011] [Add the inline function, and many comments simonpj@microsoft.com**20060605115814 This commit adds the 'inline' function described in the related patch in the compiler. I've also added comments about the 'lazy' function. ] [small intro to exceptions Ross Paterson **20060525111604] [export breakpoint Simon Marlow **20060525090456] [Merge in changes from fps head. Highlights: Don Stewart **20060525065012 Wed May 24 15:49:38 EST 2006 sjanssen@cse.unl.edu * instance Monoid ByteString Wed May 24 15:04:04 EST 2006 Duncan Coutts * Rearange export lists for the .Char8 modules Wed May 24 14:59:56 EST 2006 Duncan Coutts * Implement mapAccumL and reimplement mapIndexed using loopU Wed May 24 14:47:32 EST 2006 Duncan Coutts * Change the implementation of the unfoldr(N) functions. Use a more compact implementation for unfoldrN and change it's behaviour to only return Just in the case that it actually 'overflowed' the N, so the boundary case of unfolding exactly N gives Nothing. Implement unfoldr and Lazy.unfoldr in terms of unfoldrN. Use fibonacci growth for the chunk size in unfoldr Wed May 24 08:32:29 EST 2006 sjanssen@cse.unl.edu * Add unfoldr to ByteString and .Char8 A preliminary implementation of unfoldr. Wed May 24 01:39:41 EST 2006 Duncan Coutts * Reorder the export lists to better match the Data.List api Tue May 23 14:04:32 EST 2006 Don Stewart * pack{Byte,Char} -> singleton. As per fptools convention Tue May 23 14:00:51 EST 2006 Don Stewart * elemIndexLast -> elemIndexEnd Tue May 23 13:57:34 EST 2006 Don Stewart * In the search for a more orthogonal api, we kill breakFirst/breakLast, which were of dubious value Tue May 23 12:24:09 EST 2006 Don Stewart * Abolish elems. It's name implied it was unpack, but its type didn't. it made no sense Tue May 23 10:42:09 EST 2006 Duncan Coutts * Minor doc tidyup. Use haddock markup better. Tue May 23 11:00:31 EST 2006 Don Stewart * Simplify the join() implementation. Spotted by Duncan. ] [add a way to ask the IO manager thread to exit Simon Marlow **20060524121823] [Sync with FPS head, including the following patches: Don Stewart **20060520030436 Thu May 18 15:45:46 EST 2006 sjanssen@cse.unl.edu * Export unsafeTake and unsafeDrop Fri May 19 11:53:08 EST 2006 Don Stewart * Add foldl1' Fri May 19 13:41:24 EST 2006 Don Stewart * Add fuseable scanl, scanl1 + properties Fri May 19 18:20:40 EST 2006 Don Stewart * Spotted another chance to use unsafeTake,Drop (in groupBy) Thu May 18 09:24:25 EST 2006 Duncan Coutts * More effecient findIndexOrEnd based on the impl of findIndex Thu May 18 09:22:49 EST 2006 Duncan Coutts * Eliminate special case in findIndex since it's handled anyway. Thu May 18 09:19:08 EST 2006 Duncan Coutts * Add unsafeTake and unsafeDrop These versions assume the n is in the bounds of the bytestring, saving two comparison tests. Then use them in varous places where we think this holds. These cases need double checking (and there are a few remaining internal uses of take / drop that might be possible to convert). Not exported for the moment. Tue May 16 23:15:11 EST 2006 Don Stewart * Handle n < 0 in drop and splitAt. Spotted by QC. Tue May 16 22:46:22 EST 2006 Don Stewart * Handle n <= 0 cases for unfoldr and replicate. Spotted by QC Tue May 16 21:34:11 EST 2006 Don Stewart * mapF -> map', filterF -> filter' ] [haddock fix Ross Paterson **20060518154723] [simplify indexing in Data.Sequence Ross Paterson **20060518154316] [Move Eq, Ord, Show instances for ThreadId to GHC.Conc Simon Marlow **20060518113339 Eliminates orphans. ] [Better error handling in the IO manager thread Simon Marlow **20060518113303 In particular, handle EBADF just like rts/posix/Select.c, by waking up all the waiting threads. Other errors are thrown, instead of just being ignored. ] [#define _REENTRANT 1 (needed to get the right errno on some OSs) Simon Marlow **20060518104151 Part 2 of the fix for threaded RTS problems on Solaris and possibly *BSD (Part 1 was the same change in ghc/includes/Rts.h). ] [copyCString* should be in IO. Spotted by Tomasz Zielonka Don Stewart **20060518012154] [add import Prelude to get dependencies right for Data/Fixed.hs Duncan Coutts **20060517222044 Hopefully this fixes parallel builds. ] [Fix negative index handling in splitAt, replicate and unfoldrN. Move mapF, filterF -> map', filter' while we're here Don Stewart **20060517020150] [Use our own realloc. Thus reduction functions (like filter) allocate on the Haskell heap. Makes around 10% difference. Don Stewart **20060513051736] [Last two CInt fixes for 64 bit, and bracket writeFile while we're here Don Stewart **20060512050750] [Some small optimisations, generalise the type of unfold Don Stewart **20060510043309 Tue May 9 22:36:29 EST 2006 Duncan Coutts * Surely the error function should not be inlined. Tue May 9 22:35:53 EST 2006 Duncan Coutts * Reorder memory writes for better cache locality. Tue May 9 23:28:09 EST 2006 Duncan Coutts * Generalise the type of unfoldrN The type of unfoldrN was overly constrained: unfoldrN :: Int -> (Word8 -> Maybe (Word8, Word8)) -> Word8 -> ByteString if we compare that to unfoldr: unfoldr :: (b -> Maybe (a, b)) -> b -> [a] So we can generalise unfoldrN to this type: unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> ByteString and something similar for the .Char8 version. If people really do want to use it a lot with Word8/Char then perhaps we should add a specialise pragma. Wed May 10 13:26:40 EST 2006 Don Stewart * Add foldl', and thus a fusion rule for length . {map,filter,fold}, that avoids creating an array at all if the end of the pipeline is a 'length' reduction **END OF DESCRIPTION*** Place the long patch description above the ***END OF DESCRIPTION*** marker. The first line of this file will be the patch name. This patch contains the following changes: M ./Data/ByteString.hs -8 +38 M ./Data/ByteString/Char8.hs -6 +12 ] [portable implementation of WordPtr/IntPtr for non-GHC Ross Paterson **20060510001826 plus much tweaking of imports to avoid cycles ] [add WordPtr and IntPtr types to Foreign.Ptr, with associated conversions Simon Marlow **20060509092606 As suggested by John Meacham. I had to move the Show instance for Ptr into GHC.ForeignPtr to avoid recursive dependencies. ] [add CIntPtr, CUIntPtr, CIntMax, CUIntMax types Simon Marlow **20060509092427] [add GHC.Dynamic Simon Marlow **20060509082739] [Two things. #if defined(__GLASGOW_HASKELL__) on INLINE [n] pragmas (for jhc). And careful use of INLINE on words/unwords halves runtime for those functions Don Stewart **20060509023425] [Make length a good consumer simonpj@microsoft**20060508142726 Make length into a good consumer. Fixes Trac bug #707. (Before length simply didn't use foldr.) ] [Trim imports simonpj@microsoft**20060508142557] [Make unsafePerformIO lazy simonpj@microsoft**20060508142507 The stricteness analyser used to have a HACK which ensured that NOINLNE things were not strictness-analysed. The reason was unsafePerformIO. Left to itself, the strictness analyser would discover this strictness for unsafePerformIO: unsafePerformIO: C(U(AV)) But then consider this sub-expression unsafePerformIO (\s -> let r = f x in case writeIORef v r s of (# s1, _ #) -> (# s1, r #) The strictness analyser will now find that r is sure to be eval'd, and may then hoist it out. This makes tests/lib/should_run/memo002 deadlock. Solving this by making all NOINLINE things have no strictness info is overkill. In particular, it's overkill for runST, which is perfectly respectable. Consider f x = runST (return x) This should be strict in x. So the new plan is to define unsafePerformIO using the 'lazy' combinator: unsafePerformIO (IO m) = lazy (case m realWorld# of (# _, r #) -> r) Remember, 'lazy' is a wired-in identity-function Id, of type a->a, which is magically NON-STRICT, and is inlined after strictness analysis. So unsafePerformIO will look non-strict, and that's what we want. ] [Sync with FPS head. Don Stewart **20060508122322 Mon May 8 10:40:14 EST 2006 Don Stewart * Fix all uses for Int that should be CInt or CSize in ffi imports. Spotted by Igloo, dcoutts Mon May 8 16:09:41 EST 2006 Don Stewart * Import nicer loop/loop fusion rule from ghc-ndp Mon May 8 17:36:07 EST 2006 Don Stewart * Fix stack leak in split on > 60M strings Mon May 8 17:50:13 EST 2006 Don Stewart * Try same fix for stack overflow in elemIndices ] [Fix all uses for Int that should be CInt or CSize in ffi imports. Spotted by Duncan and Ian Don Stewart **20060508010311] [Fixed import list syntax Sven Panne **20060507155008] [Faster filterF, filterNotByte dons@cse.unsw.edu.au**20060507042301] [Much faster find, findIndex. Hint from sjanssen dons@cse.unsw.edu.au**20060507033048] [Merge "unrecognized long opt" fix from 6.4.2 Sven Panne **20060506110519] [ dons@cse.unsw.edu.au**20060506061029 Sat May 6 13:01:34 EST 2006 Don Stewart * Do loopU realloc on the Haskell heap. And add a really tough stress test Sat May 6 12:28:58 EST 2006 Don Stewart * Use simple, 3x faster concat. Plus QC properties. Suggested by sjanssen and dcoutts Sat May 6 15:59:31 EST 2006 Don Stewart * dcoutt's packByte bug squashed With inlinePerformIO, ghc head was compiling: packByte 255 `compare` packByte 127 into roughly case mallocByteString 2 of ForeignPtr f internals -> case writeWord8OffAddr# f 0 255 of _ -> case writeWord8OffAddr# f 0 127 of _ -> case eqAddr# f f of False -> case compare (GHC.Prim.plusAddr# f 0) (GHC.Prim.plusAddr# f 0) which is rather stunning. unsafePerformIO seems to prevent whatever magic inlining was leading to this. Only affected the head. ] [Add array fusion versions of map, filter and foldl dons@cse.unsw.edu.au**20060505060858 This patch adds fusable map, filter and foldl, using the array fusion code for unlifted, flat arrays, from the Data Parallel Haskell branch, after kind help from Roman Leshchinskiy, Pipelines of maps, filters and folds should now need to walk the bytestring once only, and intermediate bytestrings won't be constructed. ] [fix for non-GHC Ross Paterson **20060504093044] [use bracket in appendFile (like writeFile) Ross Paterson **20060504091528] [writeFile: close the file on error Simon Marlow **20060504084505 Suggested by Ross Paterson, via Neil Mitchell ] [Sync with FPS head dons@cse.unsw.edu.au**20060503105259 This patch brings Data.ByteString into sync with the FPS head. The most significant of which is the new Haskell counting sort. Changes: Sun Apr 30 18:16:29 EST 2006 sjanssen@cse.unl.edu * Fix foldr1 in Data.ByteString and Data.ByteString.Char8 Mon May 1 11:51:16 EST 2006 Don Stewart * Add group and groupBy. Suggested by conversation between sjanssen and petekaz on #haskell Mon May 1 16:42:04 EST 2006 sjanssen@cse.unl.edu * Fix groupBy to match Data.List.groupBy. Wed May 3 15:01:07 EST 2006 sjanssen@cse.unl.edu * Migrate to counting sort. Data.ByteString.sort used C's qsort(), which is O(n log n). The new algorithm is O(n), and is faster for strings larger than approximately thirty bytes. We also reduce our dependency on cbits! ] [improve performance of Integer->String conversion Simon Marlow **20060503113306 See http://www.haskell.org//pipermail/libraries/2006-April/005227.html Submitted by: bertram.felgenhauer@googlemail.com ] [inline withMVar, modifyMVar, modifyMVar_ Simon Marlow **20060503111152] [Fix string truncating in hGetLine -- it was a pasto from Simon's code Simon Marlow **20060503103504 (from Don Stewart) ] [Merge in Data.ByteString head. Fixes ByteString+cbits in hugs Don Stewart **20060429040733] [Import Data.ByteString from fps 0.5. Don Stewart **20060428130718 Fast, packed byte vectors, providing a better PackedString. ] [fix previous patch Ross Paterson **20060501154847] [fixes for non-GHC Ross Paterson **20060501144322] [fix imports for mingw32 && !GHC Ross Paterson **20060427163248] [RequireOrder: do not collect unrecognised options after a non-opt Simon Marlow **20060426121110 The documentation for RequireOrder says "no option processing after first non-option", so it doesn't seem right that we should process the rest of the arguments to collect the unrecognised ones. Presumably the client wants to know about the unrecognised options up to the first non-option, and will be using a different option parser for the rest of the command line. eg. before: Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"] ([],["bar","--foo"],["--foo"],[]) after: Prelude System.Console.GetOpt> getOpt' RequireOrder [] ["bar","--foo"] ([],["bar","--foo"],[],[]) ] [fix for Haddock 0.7 Ashley Yakeley **20060426072521] [add Data.Fixed module Ashley Yakeley **20060425071853] [add instances Ross Paterson **20060424102146] [add superclasses to Applicative and Traversable Ross Paterson **20060411144734 Functor is now a superclass of Applicative, and Functor and Foldable are now superclasses of Traversable. The new hierarchy makes clear the inclusions between the classes, but means more work in defining instances. Default definitions are provided to help. ] [add Functor and Monad instances for Prelude types Ross Paterson **20060410111443] [GHC.Base.breakpoint Lemmih **20060407125827] [Track the GHC source tree reorganisation Simon Marlow **20060407041631] [in the show instance for Exception, print the type of dynamic exceptions Simon Marlow **20060406112444 Unfortunately this requires some recursve module hackery to get at the show instance for Typeable. ] [implement ForeignEnvPtr, newForeignPtrEnv, addForeignPtrEnv for GHC Simon Marlow **20060405155448] [add forkOnIO :: Int -> IO () -> IO ThreadId Simon Marlow **20060327135018] [Rework previous: not a gcc bug after all Simon Marlow **20060323161229 It turns out that we were relying on behaviour that is undefined in C, and undefined behaviour in C means "the compiler can do whatever the hell it likes with your entire program". So avoid that. ] [work around a gcc 4.1.0 codegen bug in -O2 by forcing -O1 for GHC.Show Simon Marlow **20060323134514 See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26824 ] [commit mysteriously missing parts of "runIOFastExit" patch Simon Marlow **20060321101535] [add runIOFastExit :: IO a -> IO a Simon Marlow **20060320124333 Similar to runIO, but calls stg_exit() directly to exit, rather than shutdownHaskellAndExit(). Needed for running GHCi in the test suite. ] [Fix a broken invariant Simon Marlow **20060316134151 Patch from #694, for the problem "empty is an identity for <> and $$" is currently broken by eg. isEmpty (empty<>empty)" ] [Add unsafeSTToIO :: ST s a -> IO a Simon Marlow **20060315160232 Implementation for Hugs is missing, but should be easy. We need this for the forthcoming nested data parallelism implementation. ] [Added 'alter' jeanphilippe.bernardy@gmail.com**20060315143539 Added 'alter :: (Maybe a -> Maybe a) -> k -> Map k a -> Map k a' to IntMap and Map This addresses ticket #665 ] [deprecate FunctorM in favour of Foldable and Traversable Ross Paterson **20060315092942 as discussed on the libraries list. ] [Simplify Eq, Ord, and Show instances for UArray Simon Marlow **20060313142701 The Eq, Ord, and Show instances of UArray were written out longhand with one instance per element type. It is possible to condense these into a single instance for each class, at the expense of using more extensions (non-std context on instance declaration). Suggestion by: Frederik Eaton ] [Oops typo in intSet notMember jeanphilippe.bernardy@gmail.com**20060311224713] [IntMap lookup now returns monad instead of Maybe. jeanphilippe.bernardy@gmail.com**20060311224502] [Added notMember to Data.IntSet and Data.IntMap jeanphilippe.bernardy@gmail.com**20060311085221] [add Data.Set.notMember and Data.Map.notMember John Meacham **20060309191806] [addToClockTime: handle picoseconds properly Simon Marlow **20060310114532 fixes #588 ] [make head/build rule apply to all types, not just Bool. John Meacham **20060303045753] [Avoid overflow when normalising clock times Ian Lynagh **20060210144638] [Years have 365 days, not 30*365 Ian Lynagh **20060210142853] [declare blkcmp() static Simon Marlow **20060223134317] [typo in comment in Foldable class Ross Paterson **20060209004901] [simplify fmap Ross Paterson **20060206095048] [update ref in comment Ross Paterson **20060206095139] [Give -foverlapping-instances to Data.Typeable simonpj@microsoft**20060206133439 For some time, GHC has made -fallow-overlapping-instances "sticky": any instance in a module compiled with -fallow-overlapping-instances can overlap when imported, regardless of whether the importing module allows overlap. (If there is an overlap, both instances must come from modules thus compiled.) Instances in Data.Typeable might well want to be overlapped, so this commit adds the flag to Data.Typeable (with an explanatory comment) ] [Add -fno-bang-patterns to modules using both bang and glasgow-exts simonpj@microsoft.com**20060203175759] [When splitting a bucket, keep the contents in the same order Simon Marlow **20060201130427 To retain the property that multiple inserts shadow each other (see ticket #661, test hash001) ] [add foldr/build optimisation for take and replicate Simon Marlow **20060126164603 This allows take to be deforested, and improves performance of replicate and replicateM/replicateM_. We have a separate problem that means expressions involving [n..m] aren't being completely optimised because eftIntFB isn't being inlined but otherwise the results look good. Sadly this has invalidated a number of the nofib benchmarks which were erroneously using take to duplicate work in a misguided attempt to lengthen their runtimes (ToDo). ] [Generate PrimopWrappers.hs with Haddock docs Simon Marlow **20060124131121 Patch originally from Dinko Tenev , modified to add log message by me. ] [[project @ 2006-01-19 14:47:15 by ross] ross**20060119144715 backport warning avoidance from Haddock ] [[project @ 2006-01-18 11:45:47 by malcolm] malcolm**20060118114547 Fix import of Ix for nhc98. ] [[project @ 2006-01-17 09:38:38 by ross] ross**20060117093838 add Ix instance for GeneralCategory. ] [TAG Initial conversion from CVS complete John Goerzen **20060112154126] Patch bundle hash: 322c786dc6d4a0fe14735794faad3a6a7985b829 From dons at galois.com Mon Jan 7 01:38:41 2008 From: dons at galois.com (Don Stewart) Date: Mon Jan 7 01:32:25 2008 Subject: Generalise type of forever In-Reply-To: <20080107063327.GA6983@scytale.galois.com> References: <20080107063327.GA6983@scytale.galois.com> Message-ID: <20080107063841.GB6983@scytale.galois.com> dons: > It's been pointed out by a couple of people that the type of forever > is overly constrained. We get a few more useful programs for free > if we change the type: > > [generalise type of 'forever' from returning m () to m a > Don Stewart **20080107062656] { > hunk ./Control/Monad.hs 42 > - , forever -- :: (Monad m) => m a -> m () > + , forever -- :: (Monad m) => m a -> m a > hunk ./Control/Monad.hs 190 > -forever :: (Monad m) => m a -> m () > +forever :: (Monad m) => m a -> m a > } And in fact, forever :: (Monad m) => m a -> m b is better still. :) -- Don From stefanor at cox.net Mon Jan 7 01:39:37 2008 From: stefanor at cox.net (Stefan O'Rear) Date: Mon Jan 7 01:33:23 2008 Subject: Generalise type of forever In-Reply-To: <20080107063327.GA6983@scytale.galois.com> References: <20080107063327.GA6983@scytale.galois.com> Message-ID: <20080107063937.GA5440@localhost.localdomain> On Sun, Jan 06, 2008 at 10:33:27PM -0800, Don Stewart wrote: > It's been pointed out by a couple of people that the type of forever > is overly constrained. We get a few more useful programs for free > if we change the type: > > [generalise type of 'forever' from returning m () to m a > Don Stewart **20080107062656] { > hunk ./Control/Monad.hs 42 > - , forever -- :: (Monad m) => m a -> m () > + , forever -- :: (Monad m) => m a -> m a > hunk ./Control/Monad.hs 190 > -forever :: (Monad m) => m a -> m () > +forever :: (Monad m) => m a -> m a > } > > In particular, fail breaks out nicely. > > > forever Nothing > Nothing > > Deadline: 12th January. > > -- Don Your new type is not more general, for it no longer satisfies e.g. "Maybe Int -> Maybe ()". I counter-propose using the principal type, m a -> m b. Stefan -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Digital signature Url : http://www.haskell.org/pipermail/libraries/attachments/20080106/fee50603/attachment.bin From iavor.diatchki at gmail.com Mon Jan 7 01:54:01 2008 From: iavor.diatchki at gmail.com (Iavor Diatchki) Date: Mon Jan 7 01:47:44 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <4781B685.7050500@serpentine.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> <4781B685.7050500@serpentine.com> Message-ID: <5ab17e790801062254x41e52005n78723b5c73fa7b71@mail.gmail.com> Hello, On Jan 6, 2008 9:20 PM, Bryan O'Sullivan wrote: > While applicative functors are good for this task, it would be a shame > if the innocent reader of haddocks were to acquire the impression that > parsing was all they were for. :-) oh, come on! I was just giving an example of what these combinators may be used for. They are not any more related to parsing than say, 'many', 'some', or 'empty' and '(<|>)'---they provide just a few more useful control structures. > Why not make the task specificity clearer, with a separate > Control.Applicative.Parsing module? Now _this_ would definitely suggest that they are only good for parsing which would be misleading. -Iavor From Christian.Maeder at dfki.de Mon Jan 7 04:58:37 2008 From: Christian.Maeder at dfki.de (Christian Maeder) Date: Mon Jan 7 04:52:21 2008 Subject: [Fwd: Re: Maps, was Re: GHC source code improvement ideas] Message-ID: <4781F7CD.3080607@dfki.de> -------- Original Message -------- Subject: Re: Maps, was Re: GHC source code improvement ideas Date: Fri, 04 Jan 2008 14:38:22 -0800 From: Mike Hamburg To: Christian Maeder References: <477D987C.2090806@gmail.com> <477E3D69.5000307@gmail.com> <477E5301.8010700@dfki.de> On Fri, 2008-01-04 at 16:38 +0100, Christian Maeder wrote: > Simon Marlow wrote: > > Regarding Data.Map, I'd be interested in trying out AVL trees instead, > > to see if they have better performance, but then we'd have to import the > > code of course. > > Surely, we want the best maps possible for ghc and as public library > (and minimize maintenance). > > The problem is to agree on a suitable interface. I would suggest to take > (or only slightly change) Daan's interface (the current Data.Map) and > improve the underlying implementation possibly using (i.e. Adrian Hey's) > AVL trees. If anyone is off tweaking the Data.Map library, I have a simple request (which I sometimes end up implementing in hacked up versions of Data.Map). There should be some way to extract an implicitly defined interval from the map, i.e. interval :: (k -> v -> Ordering) -> Map k v -> Map k v or partitionMonotoneWithKey :: (k -> v -> Bool) -> Map k v -> (Map k v, Map k v) or similar. The important thing about these operations is that they can be made to run in O(log n) time if you have the tree structure of the map, and (so far as I know) can't if you don't. An example of when this is useful is if you have a Map (a,b) c, and wish to extract the submap for a particular a-value, or a range of a-values. Mike From valery.vv at gmail.com Mon Jan 7 04:59:57 2008 From: valery.vv at gmail.com (Valery V. Vorotyntsev) Date: Mon Jan 7 04:53:42 2008 Subject: can't build plugins-1.0 with ghc-6.9 Message-ID: Hi, (The message below contains bunch of "preformatted" sections. I hope it's still readable, otherwise, please, let me know.) My quest is to install lambdabot (for the sake of offline `@hoogle' and `@pl' commands), and the one depends on `plugins'. 1) plugins.cabal should be updated ---------------------------------- A patch to .cabal file[1] is needed to get rid of config-time warning[2] and resolve build-time errors[3]. [1] vvv:~/src/plugins-1.0$ diff -u plugins.cabal{.orig,} --- plugins.cabal.orig 2008-01-06 22:23:44.657177486 +0200 +++ plugins.cabal 2008-01-06 22:25:45.160728537 +0200 @@ -33,6 +33,6 @@ src/Language/Hi/hschooks.c includes: Linker.h extensions: CPP, ForeignFunctionInterface -Build-Depends: base, Cabal, haskell-src +Build-Depends: base, Cabal, haskell-src, array, containers, directory, random, process ghc-options: -Wall -O -fasm -funbox-strict-fields -fno-warn-missing-signatures -hs-source-dir: src +hs-source-dirs: src [2] vvv:~/src/plugins-1.0$ runhaskell Setup configure --prefix=$HOME --user Warning: The field "hs-source-dir" is deprecated, please use "hs-source-dirs" Configuring plugins-1.0... [...] [3] vvv:~/src/plugins-1.0$ runhaskell Setup build Preprocessing library plugins-1.0... Building plugins-1.0... src/Language/Hi/Binary.hs:90:7: Could not find module `Data.Array.Base': it is a member of package array-0.1, which is hidden 2) it doesn't build with Cabal-1.3.2 ------------------------------------ `InstalledPackageInfo' is a type alias in GHC's Cabal[4], not a data constructor; `plugins' library[5] gets confused[6]. [4] vvv:~/src$ diff -u cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs --- cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs 2007-11-01 17:02:35.000000000 +0200 +++ ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs 2007-12-17 17:53:21.691532864 +0200 @@ -46,7 +46,7 @@ -- This module is meant to be local-only to Distribution... module Distribution.InstalledPackageInfo ( - InstalledPackageInfo(..), + InstalledPackageInfo_(..), InstalledPackageInfo, ParseResult(..), PError(..), PWarning, emptyInstalledPackageInfo, parseInstalledPackageInfo, @@ -72,8 +72,8 @@ -- ----------------------------------------------------------------------------- -- The InstalledPackageInfo type -data InstalledPackageInfo - = InstalledPackageInfo { +data InstalledPackageInfo_ m + = InstalledPackageInfo_ { -- these parts are exactly the same as PackageDescription package :: PackageIdentifier, license :: License, @@ -87,8 +87,8 @@ category :: String, -- these parts are required by an installed package only: exposed :: Bool, - exposedModules :: [String], - hiddenModules :: [String], + exposedModules :: [m], + hiddenModules :: [m], importDirs :: [FilePath], -- contain sources in case of Hugs libraryDirs :: [FilePath], hsLibraries :: [String], @@ -107,9 +107,11 @@ } deriving (Read, Show) -emptyInstalledPackageInfo :: InstalledPackageInfo +type InstalledPackageInfo = InstalledPackageInfo_ String + +emptyInstalledPackageInfo :: InstalledPackageInfo_ m emptyInstalledPackageInfo - = InstalledPackageInfo { + = InstalledPackageInfo_ { package = PackageIdentifier "" noVersion, license = AllRightsReserved, copyright = "", [5] vvv:~/src/plugins-1.0$ sed -n 64,66p src/System/Plugins/PackageAPI.hs updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) = pk { importDirs = f idirs } updLibraryDirs f pk@(InstalledPackageInfo { libraryDirs = ldirs }) = [6] vvv:~/src/plugins-1.0$ runhaskell Setup build Preprocessing library plugins-1.0... Building plugins-1.0... [ 1 of 24] Compiling System.Plugins.Process ( src/System/Plugins/Process.hs, dist/build/System/Plugins/Process.o ) [ 2 of 24] Compiling System.Plugins.Parser ( src/System/Plugins/Parser.hs, dist/build/System/Plugins/Parser.o ) [ 3 of 24] Compiling System.Plugins.ParsePkgConfCabal ( src/System/Plugins/ParsePkgConfCabal.hs, dist/build/System/Plugins/ParsePkgConfCabal.o ) [ 4 of 24] Compiling System.Plugins.PackageAPI ( src/System/Plugins/PackageAPI.hs, dist/build/System/Plugins/PackageAPI.o ) src/System/Plugins/PackageAPI.hs:64:20: Not in scope: data constructor `InstalledPackageInfo' src/System/Plugins/PackageAPI.hs:66:21: Not in scope: data constructor `InstalledPackageInfo' I would like to hear your suggestions. Should I try harder[7] installing Cabal-1.2.2.0? Or is this a bug of GHC's Cabal? In this case I've just reported it. :) [7] vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME --user Configuring Cabal-1.2.2.0... Setup: At least the following dependencies are missing: base <3, filepath -any vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME --user -f small_base Configuring Cabal-1.2.2.0... Setup: At least the following dependencies are missing: base >=3, pretty -any, directory -any, old-time -any, process -any, containers -any, filepath -any vvv:~/src/cabal-1.2.2.0$ ghc-pkg list /home/vvv/lib/ghc-6.9.20080104/package.conf: Cabal-1.3.2, array-0.1, base-3.0, bytestring-0.9, containers-0.1, directory-1.0, filepath-1.1, (ghc-6.9.20080104), haskell98-1.0.1, hpc-0.5, old-locale-1.0, old-time-1.0, packedstring-0.1, pretty-1.0, process-1.0, random-1.0, readline-1.0.1, rts-1.0, template-haskell-2.2, unix-2.2 /home/vvv/.ghc/i386-linux-6.9.20080104/package.conf: X11-1.4.1, binary-0.4.1, haskell-src-1.0.1.1, mtl-1.1.0.0, network-2.1.0.0, parsec-2.1.0.0, xmonad-0.5, xmonad-contrib-0.5 Thanks a lot. Happy hacking! -- vvv From moonlite at dtek.chalmers.se Mon Jan 7 09:57:21 2008 From: moonlite at dtek.chalmers.se (Mattias Bengtsson) Date: Mon Jan 7 09:51:07 2008 Subject: Announcement: Typeful [x]html combinators -- pre-release 0 In-Reply-To: References: <2608b8a80712190031m61d29600tbea7eb6d0d51fd6@mail.gmail.com> Message-ID: <1199717841.6547.8.camel@mben-desktop> On Wed, 2007-12-19 at 15:06 +0000, Jon Fairbairn wrote: > "Yitzchak Gale" writes: > > What you are doing here is enforcing a DTD using > > the Haskell type system. Apart from your plans for > > HTML 4.01, perhaps a better generalization would > > be to generate typeful combinators that could > > validate at compile time for any given XML DTD. > > I think that would be the job of something like HaXml or > HXT, and there are plenty of good people working on them. > To clarify, what these types enforce is something stronger > than an XML DTD, more like the SGML DTD of html (and as I > write this I am inclining myself further towards making the > document tree types fit the common subset); it enforces the > restrictions that are only expressed in prose in the > xhtml1.0 standard. You could think of it as enforcing a > schema (that the w3c didn't provide). It seems that they did actually[1]. Making a program for generating ADT's and combinators from XML schemas to provide type safe XML is something i'd very much like to do someday. One thing i'm uncertain of is whether supporting namespaces would be a problem or not. It would be a shame to have a bunch of generated XML-standards in Haskell that can't be used together (ie. embedding MathML or SVG in XHTML). Mattias 1: http://www.w3.org/TR/xhtml1-schema/ From dons at galois.com Mon Jan 7 11:46:52 2008 From: dons at galois.com (Don Stewart) Date: Mon Jan 7 11:40:47 2008 Subject: can't build plugins-1.0 with ghc-6.9 In-Reply-To: References: Message-ID: <20080107164652.GB16760@scytale.galois.com> Please start with the hs-plugins repo on code.haskell.org, since it's already updated for ghc 6.8, http://code.haskell.org/~dons/code/hs-plugins/ valery.vv: > Hi, > > (The message below contains bunch of "preformatted" sections. > I hope it's still readable, otherwise, please, let me know.) > > My quest is to install lambdabot (for the sake of offline `@hoogle' > and `@pl' commands), and the one depends on `plugins'. > > 1) plugins.cabal should be updated > ---------------------------------- > > A patch to .cabal file[1] is needed to get rid of config-time > warning[2] and resolve build-time errors[3]. > > [1] > vvv:~/src/plugins-1.0$ diff -u plugins.cabal{.orig,} > --- plugins.cabal.orig 2008-01-06 22:23:44.657177486 +0200 > +++ plugins.cabal 2008-01-06 22:25:45.160728537 +0200 > @@ -33,6 +33,6 @@ > src/Language/Hi/hschooks.c > includes: Linker.h > extensions: CPP, ForeignFunctionInterface > -Build-Depends: base, Cabal, haskell-src > +Build-Depends: base, Cabal, haskell-src, array, containers, > directory, random, process > ghc-options: -Wall -O -fasm -funbox-strict-fields > -fno-warn-missing-signatures > -hs-source-dir: src > +hs-source-dirs: src > > [2] > vvv:~/src/plugins-1.0$ runhaskell Setup configure --prefix=$HOME --user > Warning: The field "hs-source-dir" is deprecated, please use "hs-source-dirs" > Configuring plugins-1.0... > [...] > > [3] > vvv:~/src/plugins-1.0$ runhaskell Setup build > Preprocessing library plugins-1.0... > Building plugins-1.0... > > src/Language/Hi/Binary.hs:90:7: > Could not find module `Data.Array.Base': > it is a member of package array-0.1, which is hidden > > 2) it doesn't build with Cabal-1.3.2 > ------------------------------------ > > `InstalledPackageInfo' is a type alias in GHC's Cabal[4], not a data > constructor; `plugins' library[5] gets confused[6]. > > [4] > vvv:~/src$ diff -u > cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs > ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs > --- cabal-1.2.2.0/Distribution/InstalledPackageInfo.hs 2007-11-01 > 17:02:35.000000000 +0200 > +++ ghc/libraries/Cabal/Distribution/InstalledPackageInfo.hs > 2007-12-17 17:53:21.691532864 +0200 > @@ -46,7 +46,7 @@ > -- This module is meant to be local-only to Distribution... > > module Distribution.InstalledPackageInfo ( > - InstalledPackageInfo(..), > + InstalledPackageInfo_(..), InstalledPackageInfo, > ParseResult(..), PError(..), PWarning, > emptyInstalledPackageInfo, > parseInstalledPackageInfo, > @@ -72,8 +72,8 @@ > -- ----------------------------------------------------------------------------- > -- The InstalledPackageInfo type > > -data InstalledPackageInfo > - = InstalledPackageInfo { > +data InstalledPackageInfo_ m > + = InstalledPackageInfo_ { > -- these parts are exactly the same as PackageDescription > package :: PackageIdentifier, > license :: License, > @@ -87,8 +87,8 @@ > category :: String, > -- these parts are required by an installed package only: > exposed :: Bool, > - exposedModules :: [String], > - hiddenModules :: [String], > + exposedModules :: [m], > + hiddenModules :: [m], > importDirs :: [FilePath], -- contain sources in case of Hugs > libraryDirs :: [FilePath], > hsLibraries :: [String], > @@ -107,9 +107,11 @@ > } > deriving (Read, Show) > > -emptyInstalledPackageInfo :: InstalledPackageInfo > +type InstalledPackageInfo = InstalledPackageInfo_ String > + > +emptyInstalledPackageInfo :: InstalledPackageInfo_ m > emptyInstalledPackageInfo > - = InstalledPackageInfo { > + = InstalledPackageInfo_ { > package = PackageIdentifier "" noVersion, > license = AllRightsReserved, > copyright = "", > > [5] > vvv:~/src/plugins-1.0$ sed -n 64,66p src/System/Plugins/PackageAPI.hs > updImportDirs f pk@(InstalledPackageInfo { importDirs = idirs }) = > pk { importDirs = f idirs } > updLibraryDirs f pk@(InstalledPackageInfo { libraryDirs = ldirs }) = > > [6] > vvv:~/src/plugins-1.0$ runhaskell Setup build > Preprocessing library plugins-1.0... > Building plugins-1.0... > [ 1 of 24] Compiling System.Plugins.Process ( > src/System/Plugins/Process.hs, dist/build/System/Plugins/Process.o ) > [ 2 of 24] Compiling System.Plugins.Parser ( > src/System/Plugins/Parser.hs, dist/build/System/Plugins/Parser.o ) > [ 3 of 24] Compiling System.Plugins.ParsePkgConfCabal ( > src/System/Plugins/ParsePkgConfCabal.hs, > dist/build/System/Plugins/ParsePkgConfCabal.o ) > [ 4 of 24] Compiling System.Plugins.PackageAPI ( > src/System/Plugins/PackageAPI.hs, > dist/build/System/Plugins/PackageAPI.o ) > > src/System/Plugins/PackageAPI.hs:64:20: > Not in scope: data constructor `InstalledPackageInfo' > > src/System/Plugins/PackageAPI.hs:66:21: > Not in scope: data constructor `InstalledPackageInfo' > > I would like to hear your suggestions. > > Should I try harder[7] installing Cabal-1.2.2.0? > Or is this a bug of GHC's Cabal? In this case I've just reported it. :) > > [7] > vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME --user > Configuring Cabal-1.2.2.0... > Setup: At least the following dependencies are missing: > base <3, filepath -any > vvv:~/src/cabal-1.2.2.0$ runhaskell Setup configure --prefix=$HOME > --user -f small_base > Configuring Cabal-1.2.2.0... > Setup: At least the following dependencies are missing: > base >=3, > pretty -any, > directory -any, > old-time -any, > process -any, > containers -any, > filepath -any > vvv:~/src/cabal-1.2.2.0$ ghc-pkg list > /home/vvv/lib/ghc-6.9.20080104/package.conf: > Cabal-1.3.2, array-0.1, base-3.0, bytestring-0.9, containers-0.1, > directory-1.0, filepath-1.1, (ghc-6.9.20080104), haskell98-1.0.1, > hpc-0.5, old-locale-1.0, old-time-1.0, packedstring-0.1, > pretty-1.0, process-1.0, random-1.0, readline-1.0.1, rts-1.0, > template-haskell-2.2, unix-2.2 > /home/vvv/.ghc/i386-linux-6.9.20080104/package.conf: > X11-1.4.1, binary-0.4.1, haskell-src-1.0.1.1, mtl-1.1.0.0, > network-2.1.0.0, parsec-2.1.0.0, xmonad-0.5, xmonad-contrib-0.5 > > Thanks a lot. > > Happy hacking! > > -- > vvv > _______________________________________________ > Libraries mailing list > Libraries@haskell.org > http://www.haskell.org/mailman/listinfo/libraries From duncan.coutts at worc.ox.ac.uk Mon Jan 7 13:00:27 2008 From: duncan.coutts at worc.ox.ac.uk (Duncan Coutts) Date: Mon Jan 7 12:54:09 2008 Subject: new language extensions In-Reply-To: <20080106175119.GB16859@momenergy.repetae.net> References: <1194300038.26140.205.camel@localhost> <1194471625.26140.332.camel@localhost> <20071108142755.GA10990@matrix.chaos.earth.li> <20080106175119.GB16859@momenergy.repetae.net> Message-ID: <20080107180027.8F4F69E048@webmail222.herald.ox.ac.uk> In message <20080106175119.GB16859@momenergy.repetae.net> Haskell Libraries , Duncan Coutts writes: > On Thu, Nov 08, 2007 at 02:27:55PM +0000, Ian Lynagh wrote: > > On Wed, Nov 07, 2007 at 09:40:25PM +0000, Duncan Coutts wrote: > > > Last call for objections or comments. > > > > > > We'd like to get this into Language.Haskell.Extension asap so we can > > > include it in the Cabal distributed with ghc-6.8.2. Currently there are > > > packages that compiled fine with Cabal and ghc-6.6.x but not with > > > ghc-6.8.x because we're missing these new more fine-grained language > > > extensions. > > > > > > See http://hackage.haskell.org/trac/hackage/ticket/160 > > > > I'd much rather see http://hackage.haskell.org/trac/hackage/ticket/147 > > fixed. Then Cabal would work with future GHCs, with new extensions as > > yet undreamt of, as well. > > Yes, I would like to see this too, I have not really done a lot of work > integrating jhc with cabal, but this 'baked in' extension type was > something of an issue. How so? It's easy to extend it, just send us a patch with the extras. > (jhc itself understands a subset of the cabal > file type and can build libraries based on them with jhc --build-hl). Honestly, I'd prefer to see better support in Cabal for jhc than have each Haskell implementation do a half-complete .cabal file processor. nhc98 has been doing this too and it'll only ever half work. As a Cabal patch reviewer I'm very happy to see patches to improve support for nhc98, jhc etc, and if the code is in Cabal then we can stop it from suffering bit rot so quickly. > There are a couple other places where a 'newtype String' made more sense > too if I recall. I don't mind so much if it's a string or an enum, but keeping a central register seems like a good thing to me and an enum enforces that. We could certainly make the parsing a bit more sensible so it doesn't fall over when it encounters an unknown extension. > Perhaps just a simple wiki page where we can "register" extension names > is in order as there are a few jhc understands that arn't in the cabal > extension type (nor should they be if this fix is completed). Or using the existing mechanism, you can darcs send a patch to Language.Haskell.Extension to "register" your extension names. I fail to see how a wiki page is better. Duncan From paul at cogito.org.uk Mon Jan 7 13:35:34 2008 From: paul at cogito.org.uk (Paul Johnson) Date: Mon Jan 7 13:29:19 2008 Subject: [Fwd: Re: Maps, was Re: GHC source code improvement ideas] In-Reply-To: <4781F7CD.3080607@dfki.de> References: <4781F7CD.3080607@dfki.de> Message-ID: <478270F6.70302@cogito.org.uk> Christian Maeder wrote: > If anyone is off tweaking the Data.Map library, I have a simple request > (which I sometimes end up implementing in hacked up versions of > Data.Map). There should be some way to extract an implicitly defined > interval from the map, i.e. > > interval :: (k -> v -> Ordering) -> Map k v -> Map k v > I'm not quite sure what you are asking for here. Why does the first argument take both a key and a value, and what is the Ordering saying? From your description I was expecting something more like: interval :: k -> k -> Map k v -> Map k v Are you saying that if the Ordering is "EQ" then the key is within the range? Take a look at my Ranged Sets library (on Hackage) for a complete treatment of the concept of ranges within an ordered type. I can imagine something like rangedSetMap :: RSet k -> Map k v -> Map k v where the resulting Map only contains the keys that are in the RSet. At present you would have to do that by iterating through the Map, but I can imagine a more efficient method. Alternatively the Boundary type defined in that library might be used: it splits an ordered type into values above and below a boundary. (Two Boundary values make a Range, and an ordered list of non-overlapping Ranges is an RSet). Paul. From valery.vv at gmail.com Mon Jan 7 15:51:28 2008 From: valery.vv at gmail.com (Valery V. Vorotyntsev) Date: Mon Jan 7 15:45:11 2008 Subject: can't build plugins-1.0 with ghc-6.9 In-Reply-To: <20080107164652.GB16760@scytale.galois.com> References: <20080107164652.GB16760@scytale.galois.com> Message-ID: On 1/7/08, Don Stewart wrote: > Please start with the hs-plugins repo on code.haskell.org, since it's > already updated for ghc 6.8, > > http://code.haskell.org/~dons/code/hs-plugins/ Missed shot. :) vvv:~/src/hs-plugins$ runhaskell Setup build Preprocessing library plugins-1.1... Building plugins-1.1... [ 1 of 16] Compiling System.Plugins.Process ( src/System/Plugins/Process.hs, dist/build/System/Plugins/Process.o ) [ 2 of 16] Compiling System.Plugins.Parser ( src/System/Plugins/Parser.hs, dist/build/System/Plugins/Parser.o ) [ 3 of 16] Compiling System.Plugins.ParsePkgConfCabal ( src/System/Plugins/ParsePkgConfCabal.hs, dist/build/System/Plugins/ParsePkgConfCabal.o ) [ 4 of 16] Compiling System.Plugins.PackageAPI ( src/System/Plugins/PackageAPI.hs, dist/build/System/Plugins/PackageAPI.o ) src/System/Plugins/PackageAPI.hs:64:20: Not in scope: data constructor `InstalledPackageInfo' src/System/Plugins/PackageAPI.hs:66:21: Not in scope: data constructor `InstalledPackageInfo' No problems with the .cabal file, though. -- vvv From haskell at list.mightyreason.com Mon Jan 7 16:24:52 2008 From: haskell at list.mightyreason.com (ChrisK) Date: Mon Jan 7 16:18:35 2008 Subject: ANN: Build fixed for regex-base,posix,compat,pcre Message-ID: <478298A4.2030507@list.mightyreason.com> ANNOUNCEMENT: Build fixed for regex-base, regex-posix, regex-compat, regex-pcre The changes are mainly to the Cabal build files to support ghc-6.8 and ghc-6.6 simultaneously. They definitely work with cabal version 1.2.3.0 (required for regex-pcre). The regex-base, regex-posix, and regex-compat packages also seem to work with cabal-1.2.2.0 (but not regex-pcre). The darcs repositories under http://darcs.haskell.org/packages/regex-unstable/ hold the new code. I have uploaded new versions of the most popular regex-* packages to hackage: Mon Jan 7 13:18:00 PST 2008 ChrisKuklewicz regex-pcre-0.94.1 Mon Jan 7 13:05:57 PST 2008 ChrisKuklewicz regex-posix-0.93.1 Mon Jan 7 13:04:49 PST 2008 ChrisKuklewicz regex-base-0.93.1 Mon Jan 7 06:50:54 PST 2008 ChrisKuklewicz regex-compat-0.91 I would like to thank everyone who sent me updated, and particularly Olivier Boudry who sent patches. These build fixes have only been tested with ghc-6.6.1 on Mac OS X 10.5.1 (powerpc) and with ghc-6.8.2 on Linux (x86). Happy New Year, Chris Kuklewicz From chad.scherrer at gmail.com Mon Jan 7 18:10:40 2008 From: chad.scherrer at gmail.com (Chad Scherrer) Date: Mon Jan 7 18:13:51 2008 Subject: typo in Data.Binary documentation Message-ID: The latest Data.Binary documentation says instance of Binary should have get . put == id But this doesn't typecheck! I'm guessing it's probably supposed to say decode . encode == id -Chad From dons at galois.com Mon Jan 7 18:26:55 2008 From: dons at galois.com (Don Stewart) Date: Mon Jan 7 18:20:38 2008 Subject: typo in Data.Binary documentation In-Reply-To: References: Message-ID: <20080107232655.GI17534@scytale.galois.com> chad.scherrer: > The latest Data.Binary documentation says instance of Binary should have > > get . put == id > > But this doesn't typecheck! I'm guessing it's probably supposed to say > > decode . encode == id Well spotted. Fixed in darcs. From dons at galois.com Mon Jan 7 19:53:14 2008 From: dons at galois.com (Don Stewart) Date: Mon Jan 7 19:47:00 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <5ab17e790801062254x41e52005n78723b5c73fa7b71@mail.gmail.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> <4781B685.7050500@serpentine.com> <5ab17e790801062254x41e52005n78723b5c73fa7b71@mail.gmail.com> Message-ID: <20080108005314.GP17534@scytale.galois.com> iavor.diatchki: > Hello, > > On Jan 6, 2008 9:20 PM, Bryan O'Sullivan wrote: > > While applicative functors are good for this task, it would be a shame > > if the innocent reader of haddocks were to acquire the impression that > > parsing was all they were for. > > :-) oh, come on! I was just giving an example of what these > combinators may be used for. They are not any more related to > parsing than say, 'many', 'some', or 'empty' and '(<|>)'---they > provide just a few more useful control structures. > > > Why not make the task specificity clearer, with a separate > > Control.Applicative.Parsing module? > > Now _this_ would definitely suggest that they are only good for > parsing which would be misleading. +1 for this proposal. Glue for combining parsers seems like a missing piece. Perhaps toss in an example in the docs? From stefan at cs.uu.nl Mon Jan 7 20:32:17 2008 From: stefan at cs.uu.nl (Stefan Holdermans) Date: Mon Jan 7 20:26:05 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> Message-ID: <8E555BE0-A198-44C7-9684-93D4DA6A953A@cs.uu.nl> Iavor wrote: > I propose that we add the following combinators to the > 'Control.Applicative' module: Here's a bunch, I've been using for quite some time now: infixl 5 , , <, > infixl 4 <$$>, <^>, <^, <^^>, , , <+> infixl 3 <||> infixl 2 `opt` (<$$>) :: (Applicative f) => f a -> (a -> b) -> f b v <$$> f = v <**> pure f (<^>) :: (Applicative f) => f (a -> b -> c) -> f b -> f (a -> c) l <^> r = flip <$> l <*> r (<^) :: (Applicative f) => f (a -> b -> c) -> f d -> f (b -> a -> c) l <^ r = flip <$> l <* r (<^^>) :: (Applicative f) => f b -> f (a -> b -> c) -> f (a -> c) l <^^> r = l <**> (flip <$> r) () :: (Applicative f) => (a -> b -> c) -> f b -> f (a -> c) f v = flip f <$> v ( (a -> b -> c) -> f d -> f (b -> a -> c) f ) :: (Applicative f) => f b -> (a -> b -> c) -> f (a -> c) v f = v <$$> flip f (<+>) :: (Applicative f) => f a -> f b -> f (a, b) l <+> r = (,) <$> l <*> r (<||>) :: (Alternative f) => f a -> f b -> f (Either a b) l <||> r = Left <$> l <|> Right <$> r () :: (Alternative f) => a -> f a -> f a x v = v <|> pure x (), opt :: (Alternative f) => f a -> a -> f a v x = v <|> pure x opt = () (<) :: (Alternative f) => f (a -> a) -> f a -> f a l < r = id l <*> r (>) :: (Alternative f) => f a -> f (a -> a) -> f a l > r = l <**> r id packed :: (Applicative f) => f a -> f b -> f c -> f c packed l r v = l *> v <* r choice :: (Alternative f) => [f a] -> f a choice = foldr (<|>) empty foldrMany :: (Alternative f) => (a -> b -> b) -> b -> f a -> f b foldrMany op e v = go where go = op <$> v <*> go `opt` e foldrSome :: (Alternative f) => (a -> b -> b) -> b -> f a -> f b foldrSome op e v = op <$> v <*> go where go = op <$> v <*> go `opt` e foldlMany :: (Alternative f) => (b -> a -> b) -> b -> f a -> f b foldlMany op e v = go <*> pure e where go = op v (.) <*> go `opt` id foldlSome :: (Alternative f) => (b -> a -> b) -> b -> f a -> f b foldlSome op e v = op e <$> v <**> go where go = op v (.) <*> go `opt` id foldrSepMany :: (Alternative f) => (a -> b -> b) -> b -> f c -> f a -> f b foldrSepMany op e u v = op <$> v <*> go `opt` e where go = op <$ u <*> v <*> go `opt` e foldrSepSome :: (Alternative f) => (a -> b -> b) -> b -> f c -> f a -> f b foldrSepSome op e u v = op <$> v <*> go where go = op <$ u <*> v <*> go `opt` e foldlSepMany :: (Alternative f) => (b -> a -> b) -> b -> f c -> f a -> f b foldlSepMany op e u v = op e <$> v <**> go `opt` e where go = op v (.) <*> go `opt` id foldlSepSome :: (Alternative f) => (b -> a -> b) -> b -> f c -> f a -> f b foldlSepSome op e u v = op e <$> v <**> go where go = op v (.) <*> go `opt` id sepMany, sepSome :: (Alternative f) => f b -> f a -> f [a] sepMany = foldrSepMany (:) [] sepSome = foldrSepSome (:) [] chainr :: (Alternative f) => f (a -> a -> a) -> f a -> f a chainr u v = v > go where go = u <^> v > go chainl :: (Alternative f) => f (a -> a -> a) -> f a -> f a chainl u v = v <**> go where go = (.) (u <^> v) <*> go `opt` id Cheers, Stefan -------------- next part -------------- A non-text attachment was scrubbed... Name: Idiom.hs Type: application/octet-stream Size: 4459 bytes Desc: not available Url : http://www.haskell.org/pipermail/libraries/attachments/20080107/73f4b929/Idiom-0001.obj -------------- next part -------------- From apfelmus at quantentunnel.de Tue Jan 8 04:43:49 2008 From: apfelmus at quantentunnel.de (apfelmus) Date: Tue Jan 8 04:37:44 2008 Subject: PROPOSAL: Some more 'Applicative' combinators In-Reply-To: <5ab17e790801062254x41e52005n78723b5c73fa7b71@mail.gmail.com> References: <5ab17e790801061335t59d53588s2c935067457bde0e@mail.gmail.com> <4781B685.7050500@serpentine.com> <5ab17e790801062254x41e52005n78723b5c73fa7b71@mail.gmail.com> Message-ID: Iavor Diatchki wrote: > Bryan O'Sullivan wrote: >> Why not make the task specificity clearer, with a separate >> Control.Applicative.Parsing module? +1 > Now _this_ would definitely suggest that they are only good for > parsing which would be misleading. Would it? I mean, I currently don't know a second use case for them. Preferably, the names like skipMany , endBy , sepBy etc. should still make sense in the new context. Regards, apfelmus From jon.fairbairn at cl.cam.ac.uk Tue Jan 8 05:31:28 2008 From: jon.fairbairn at cl.cam.ac.uk (Jon Fairbairn) Date: Tue Jan 8 05:25:17 2008 Subject: Announcement: Typeful [x]html combinators -- pre-release 0 References: <2608b8a80712190031m61d29600tbea7eb6d0d51fd6@mail.gmail.com> <1199717841.6547.8.camel@mben-desktop> Message-ID: Mattias Bengtsson writes: > On Wed, 2007-12-19 at 15:06 +0000, Jon Fairbairn wrote: >> I think that would be the job of something like HaXml or >> HXT, and there are plenty of good people working on them. >> To clarify, what these types enforce is something stronger >> than an XML DTD, more like the SGML DTD of html (and as I >> write this I am inclining myself further towards making the >> document tree types fit the common subset); it enforces the >> restrictions that are only expressed in prose in the >> xhtml1.0 standard. You could think of it as enforcing a >> schema (that the w3c didn't provide). > > It seems that they did actually[1]. Thanks for finding that (I do hate the way that the W3C issues proper formal definitions of things but makes the informal one the normative one); I can use it to check attribute types and so on. Does it enforce the nesting restrictions (described in app. B of the xhtml1 dtd)? Looking through it with little knowledge of schemas, I can't see that it does. > Making a program for generating ADT's and combinators from XML schemas > to provide type safe XML is something i'd very much like to do someday. It would be a good thing to do, though not something I'm thinking of just now (a bit too much for me at the moment). > One thing i'm uncertain of is whether supporting namespaces would be a > problem or not. It would be a shame to have a bunch of generated > XML-standards in Haskell that can't be used together (ie. embedding > MathML or SVG in XHTML). Yes. I'd like the document tree in the typeful HTMLs library to be compatible with such things, but again, I'm not up to doing the big concept stuff. -- J?n Fairbairn Jon.Fairbairn@cl.cam.ac.uk From moonlite at dtek.chalmers.se Tue Jan 8 06:14:36 2008 From: moonlite at dtek.chalmers.se (Mattias Bengtsson) Date: Tue Jan 8 06:08:20 2008 Subject: Announcement: Typeful [x]html combinators -- pre-release 0 In-Reply-To: References: <2608b8a80712190031m61d29600tbea7eb6d0d51fd6@mail.gmail.com> <1199717841.6547.8.camel@mben-desktop> Message-ID: <1199790876.6707.18.camel@mben-desktop> On Tue, 2008-01-08 at 10:31 +0000, Jon Fairbairn wrote: > Thanks for finding that (I do hate the way that the W3C > issues proper formal definitions of things but makes the > informal one the normative one); I can use it to check > attribute types and so on. Does it enforce the nesting > restrictions (described in app. B of the xhtml1 dtd)? > Looking through it with little knowledge of schemas, I can't > see that it does. Yes this is really frustrating. I think the schema is supposed to enforce nesting restrictions. At least that's how i interpret paragraph 1.3[1] in the Note. It doesn't seem to be able to enforce everything though (eg. the legend example in 1.3). > > Making a program for generating ADT's and combinators from XML schemas > > to provide type safe XML is something i'd very much like to do someday. > > It would be a good thing to do, though not something I'm > thinking of just now (a bit too much for me at the moment). Same here i think. It's on my TODO though. :) Mattias 1: http://www.w3.org/TR/xhtml1-schema/#why From Christian.Maeder at dfki.de Tue Jan 8 06:30:30 2008 From: Christian.Maeder at dfki.de (Christian Maeder) Date: Tue Jan 8 06:24:11 2008 Subject: [Fwd: Re: Maps] Message-ID: <47835ED6.3080709@dfki.de> -------- Original Message -------- Subject: Re: Maps Date: Tue, 08 Jan 2008 05:35:07 -0800 From: Mike Hamburg To: Christian Maeder CC: paul@cogito.org.uk References: <47832E64.3090008@dfki.de> So here's an approximation of my problem. I have a map of objects, possibly aggregated from different sources. They have (in a case of medium complexity) type (t,u) where the t represents the source and u represents the position within that source. They're derived from something like a Map t (Map u v), but it is convenient for other reasons to represent this as an actual Map (t,u) v. (It's possible that I'll end up hacking around this with some type class or another, but let's ignore that possibility for now.) I need to efficiently represent ranges of objects to be viewed or deleted from this map, in such a way that the map library can extract or delete them quickly. But I might have, say, only a t value, and no values of u available. On Tue, 2008-01-08 at 09:03 +0100, Christian Maeder wrote: > I'm not quite sure what you are asking for here. Why does the first > argument take both a key and a value, and what is the Ordering saying? > >From your description I was expecting something more like: > > interval :: k -> k -> Map k v -> Map k v > > Are you saying that if the Ordering is "EQ" then the key is within the > range? Yes. The "ordering" produced is a sort of disjunctive ordering: it's either LT all, or GT all, or EQ at least one element in the interval. I suppose my version should really have type (k -> Ordering) -> Map k v -> Map k v because the values shouldn't come into play unless they're monotonically dependent on the keys. > Take a look at my Ranged Sets library (on Hackage) for a complete > treatment of the concept of ranges within an ordered type. I can > imagine something like > > rangedSetMap :: RSet k -> Map k v -> Map k v Something like an RSet, with the following operations: union, singleton, Range -> RangeSet, ... upcast :: RangeSet t -> RangeSet (t,u) -- and similar for other product types intersection, difference :: Map k v -> RangeSet k -> Map k v > where the resulting Map only contains the keys that are in the RSet. At > present you would have to do that by iterating through the Map, but I > can imagine a more efficient method. Alternatively the Boundary type > defined in that library might be used: it splits an ordered type into > values above and below a boundary. (Two Boundary values make a Range, > and an ordered list of non-overlapping Ranges is an RSet). Yes. But I think what you need to efficiently implement this is some sort of implicit cut, of the form (k -> Something) -> Map k v -> (Map k v, Map k v). > P