Ticket #2962: Rules-to-make-genericLength-strict-for-Int_Integer-lengths_-see-_2962.dpatch

File Rules-to-make-genericLength-strict-for-Int_Integer-lengths_-see-_2962.dpatch, 23.0 KB (added by thorkilnaur, 9 years ago)

Patch to add rules to make genericLength strict for Int/Integer lengths

1Sat Feb  7 19:14:27 CET 2009  naur@post11.tele.dk
2  * Rules to make genericLength strict for Int/Integer lengths, see #2962
4New patches:
6[Rules to make genericLength strict for Int/Integer lengths, see #2962
7naur@post11.tele.dk**20090207181427] hunk ./Data/List.hs 571
8 genericLength []        =  0
9 genericLength (_:l)     =  1 + genericLength l
11+{-# RULES
12+  "genericLengthInt"     genericLength = (strictGenericLength :: [a] -> Int);
13+  "genericLengthInteger" genericLength = (strictGenericLength :: [a] -> Integer);
14+ #-}
16+strictGenericLength     :: (Num i) => [b] -> i
17+strictGenericLength l   =  gl l 0
18+                        where
19+                           gl [] a     = a
20+                           gl (_:xs) a = let a' = a + 1 in a' `seq` gl xs a'
22 -- | The 'genericTake' function is an overloaded version of 'take', which
23 -- accepts any 'Integral' value as the number of elements to take.
24 genericTake             :: (Integral i) => i -> [a] -> [a]
28[Restore the Haskell 98 behaviour of Show Ratio (#1920)
29Simon Marlow <simonmarhaskell@gmail.com>**20080923134949]
30[Pad version number to
31Ian Lynagh <igloo@earth.li>**20080920155801]
32[TAG 6.10 branch has been forked
33Ian Lynagh <igloo@earth.li>**20080919123437]
34[In nhc98, Word is a type synonym, so class instance is not possible.
36[Fix bugs in Text.Printf (#1548)
37Simon Marlow <marlowsd@gmail.com>**20080916133505]
38[We should be including Rts.h here, not Stg.h
39Simon Marlow <marlowsd@gmail.com>**20080912134901
40 Stg.h is for .hc files only, and it sets up various global register
41 variables.
43[Generic functions that take integral arguments should work the same way as their prelude counterparts
46 The Prelude functions drop, take, and splitAt are unfailing (never call error). This patch changes the Data.List generic versions to behave the same way. At present, they call error on negative arguments.
49[Don't define __hscore_s_issock on Windows
50Ian Lynagh <igloo@earth.li>**20080904202845]
51[Unbreak the GHC build with older versions of gcc
52Ian Lynagh <igloo@earth.li>**20080904185122
53 Patch from kili@outback.escape.de, who says:
54   Stg.h must be included before HsBase.h, because the latter contains
55   function definitions causing older versions of gcc (3.3.5 in my
56   case) to bail out with "error: global register variable follows a
57   function definition" on Regs.h, which is included by Stg.h.
59[Don't make S_ISSOCK use conditional
60Ian Lynagh <igloo@earth.li>**20080904164234
61 We were conditionally defining the C wrapper, but unconditionally using
62 it. So if it didn't exist then things would have broken anyway.
64[Add missing files
65Ian Lynagh <igloo@earth.li>**20080904100951]
66[Remerge concurrent,unique,timeout,st,getopt into base
67Ian Lynagh <igloo@earth.li>**20080903201908]
68[remove 'pure' method from Arrow class (#2517)
69Ross Paterson <ross@soi.city.ac.uk>**20080903144436]
70[make Typeable instances for larger tuples available to non-GHC
71Ross Paterson <ross@soi.city.ac.uk>**20080903113543]
72[Don't look for actual OldException.Exception exceptions
73Ian Lynagh <igloo@earth.li>**20080902224730
74 We don't actually throw them (we throw the new Exception equivalents
75 instead), and looking for them was causing an infinite loop
77[add include/CTypes.h to extra-source-files
78Ross Paterson <ross@soi.city.ac.uk>**20080902153029]
79[avoid relying on the implementation of SomeException
80Ross Paterson <ross@soi.city.ac.uk>**20080902080113
82 This is because Hugs uses a different implementation.
83 No semantic change.
85[non-GHC: leave out Belch functions
86Ross Paterson <ross@soi.city.ac.uk>**20080831180227]
87[non-GHC: add Typeable instance for ForeignPtr
88Ross Paterson <ross@soi.city.ac.uk>**20080831180048]
89[docs: mention that killThread on a completed thread is a no-op
90Simon Marlow <marlowsd@gmail.com>**20080902093126]
91[#2528: reverse the order of args to (==) in nubBy to match nub
92Simon Marlow <marlowsd@gmail.com>**20080902092950
93 This only makes a difference when the (==) definition is not
94 reflexive, but strictly speaking it does violate the report definition
95 of nubBy, so we should fix it.
97[System.Timeout is no longer part of base
99[getopt is no longer part of base
101[Split syb off into its own package
102Ian Lynagh <igloo@earth.li>**20080825214144
103 I've also moved the Data (Complex a) instance into it, and made it
104 portable rather than GHC-only in the process.
106[add extra-source-files field
107Ross Paterson <ross@soi.city.ac.uk>**20080825231317]
108[Fix warnings in PrelIOUtils.c
109Ian Lynagh <igloo@earth.li>**20080825141841]
110[Windows-only fixes for moving concurrent out of base
111Ian Lynagh <igloo@earth.li>**20080824164146]
112[Split off the concurrent hierarchy (concurrent, unique, timeout)
113Ian Lynagh <igloo@earth.li>**20080824123956]
114[Split getopt off into its own package
115Ian Lynagh <igloo@earth.li>**20080824020213]
116[Remove ST stuff that is now in the new st package
117Ian Lynagh <igloo@earth.li>**20080823223014]
118[Fix Windows-only warnings
119Ian Lynagh <igloo@earth.li>**20080823002249]
120[Fix Windows-only warnings in GHC.Conc
121Ian Lynagh <igloo@earth.li>**20080822234837]
122[Suppress some warnings that are hard to fix because of ifdefs
123Ian Lynagh <igloo@earth.li>**20080822233951]
124[Provide blockedOnDeadMVar, blockedIndefinitely for the RTS
125Ian Lynagh <igloo@earth.li>**20080821110723]
126[Fix more warnings
127Ian Lynagh <igloo@earth.li>**20080820233958]
128[Suppress a couple of warnings in GHC.PArr
129Ian Lynagh <igloo@earth.li>**20080820232018
130 The fix isn't immediately obvious to me
132[Fix more warnings
133Ian Lynagh <igloo@earth.li>**20080820231937]
134[Fix warnings in Data.Generics.*
135Ian Lynagh <igloo@earth.li>**20080820230437]
136[Fix some more warnings
137Ian Lynagh <igloo@earth.li>**20080820223252]
138[Ignore some orphan warnings
139Ian Lynagh <igloo@earth.li>**20080820211901]
140[remove some functions that aren't used in base
141Simon Marlow <marlowsd@gmail.com>**20080821142339]
142[remove __hscore_renameFile, it is no longer uesd
143Simon Marlow <marlowsd@gmail.com>**20080818155950
144 System.Directory implements renameFile using unix/Win32 now.
146[Rewrite the documentation for forkOS again
147Simon Marlow <marlowsd@gmail.com>**20080818132856
148 Try to make it clearer that forkOS is only necessary when calling
149 foreing libraries that use thread-local state, and it has nothing to
150 do with scheduling behaviour between Haskell threads.  I also added
151 something about the performance impact of forkOS, and mentioned that
152 the main thread is a bound thread.
154[nhc only: expose Foldable and Traversable instances of Array
155Ross Paterson <ross@soi.city.ac.uk>**20080817002719
157 These were turned off as a side-effect of a previous nhc-only fix for
158 #2176 that is no longer needed.  They should be fine for nhc now.
160[Fix hReady (trac #1063)
161Ian Lynagh <igloo@earth.li>**20080816182715
162 We now throw an EOF exception when appropriate
164[Fix oversight in Control.OldException
165Bertram Felgenhauer <int-e@gmx.de>**20080816132631
166 The NonTermination constructor slipped through in the Exception instance.
168[Eliminate orphan rules and instances in the array package
169Ian Lynagh <igloo@earth.li>**20080816122253]
170[Control.OldException: Map exceptions to old exceptions and back properly.
171Ian Lynagh <igloo@earth.li>**20080814210219
172   * Control.OldException: Map exceptions to old exceptions and back properly.
174 It's really necessary to map them back as well, or the RTS and base library
175 will not recognize exceptions that got caught and rethrown. (See #2508)
177 Patch from Bertram Felgenhauer <int-e@gmx.de>
179[add Traversable generalizations of mapAccumL and mapAccumR (#2461)
180Ross Paterson <ross@soi.city.ac.uk>**20080814162617]
181[simplify definition of Prelude.catch
182Ross Paterson <ross@soi.city.ac.uk>**20080814143650]
183[remove returns from void functions
184Ross Paterson <ross@soi.city.ac.uk>**20080814110841]
185[No reason for Handler and catches to exclude nhc98.
187[Must import ExitCode for its instance to be re-exported.
189 The Cabal library depends on "instance Exception ExitCode", and expects
190 to import it from Control.Exception, not Control.Exception.Base.
192[use New.catch instead of catchException in OldException
193Ross Paterson <ross@soi.city.ac.uk>**20080813071307]
194[use the Haskell 98 module Control.Exception.Base in the Concurrent modules
195Ross Paterson <ross@soi.city.ac.uk>**20080813000219]
196[export Control.Exception.Base
197Ross Paterson <ross@soi.city.ac.uk>**20080812233640]
198[use dummy implementation of timeout for all non-GHCs
199Ross Paterson <ross@soi.city.ac.uk>**20080812151602]
200[Hugs only: fix imports
201Ross Paterson <ross@soi.city.ac.uk>**20080812145654]
202[non-GHC: hide Prelude.catch
203Ross Paterson <ross@soi.city.ac.uk>**20080812145622]
204[add Control.Exception.Base to nhc98 build
206[bump to version 4.0
207Simon Marlow <marlowsd@gmail.com>**20080805153354]
208[Hugs only: don't import exception types -- their instances are now in Control.Exception.Base
209Ross Paterson <ross@soi.city.ac.uk>**20080812140433]
210[split most of Control.Exception into new Control.Exception.Base
211Ross Paterson <ross@soi.city.ac.uk>**20080812124912
213 Move everything but catches/Handler into a new internal module.
214 This was needed to get the new exceptions working with Hugs, because Hugs
215 has the constraint that all Haskell 98 library modules, and everything
216 they include, must be Haskell 98.  This also involves a different
217 representation of SomeException for Hugs, so that type is exported
218 opaquely for Hugs.  Then Control.Exception.Base is Haskell 98 as far as
219 Hugs is concerned, but Control.Exception needs the extensions turned on.
221 Control.Exception re-exports everything from Control.Exception.Base
222 except the functions used by the GHC runtime.
224[remove kludges, now that Control.Exception is imported
225Ross Paterson <ross@soi.city.ac.uk>**20080811180328]
226[threadDelay and friends are GHC-only
227Ross Paterson <ross@soi.city.ac.uk>**20080811175039]
228[fix imports for non-GHC
230[Eq and Ord have moved into GHC.Classes
231Ian Lynagh <igloo@earth.li>**20080807095352]
232[Use the proper CInt type in GHC.Unicode
233Ian Lynagh <igloo@earth.li>**20080806232948]
234[Import wibbles
235Ian Lynagh <igloo@earth.li>**20080806232055]
236[Remove unnecessary Data/Dynamic.hs-boot
237Ian Lynagh <igloo@earth.li>**20080806230623]
238[Remove more redundant GHC.Float imports
239Ian Lynagh <igloo@earth.li>**20080806225411]
240[Remove an unnecessary import
241Ian Lynagh <igloo@earth.li>**20080806224742]
242[Move Int, Float and Double into ghc-prim:GHC.Types
243Ian Lynagh <igloo@earth.li>**20080806191554]
244[Put some explicit import lists in Data.Typeable
245Ian Lynagh <igloo@earth.li>**20080806190353]
246[Fix a couple of imports
247Ian Lynagh <igloo@earth.li>**20080806165549]
248[Remove unused conditional import
249Ian Lynagh <igloo@earth.li>**20080806124930]
250[Swap imports around to get GHC.ForeignPtr out of the base knot
251Ian Lynagh <igloo@earth.li>**20080806121313]
252[Move some bits around to stop Data.Either being in the base import knot
253Ian Lynagh <igloo@earth.li>**20080806120504]
254[Tweak an import
255Ian Lynagh <igloo@earth.li>**20080806000440]
256[Remove the DynIOError constructor of IOErrorType
257Ian Lynagh <igloo@earth.li>**20080805234720
258 As far as I can see it is never used or exported
260[Move some internals around to simplify the import graph a bit
261Ian Lynagh <igloo@earth.li>**20080805221341]
262[Move the Char datatype into ghc-prim
263Ian Lynagh <igloo@earth.li>**20080805204009]
264[Remove an unnecessary import
265Ian Lynagh <igloo@earth.li>**20080805182336]
266[The [] definition has moved to ghc-prim
267Ian Lynagh <igloo@earth.li>**20080805182332]
268[Fix warnings
269Ian Lynagh <igloo@earth.li>**20080805150250]
270[Add a missing case to Show AsyncException
271Ian Lynagh <igloo@earth.li>**20080805142811]
272[Remove GHC.Dotnet
273Ian Lynagh <igloo@earth.li>**20080804215840]
274[Hide standalone deriving clauses from haddock
275Ian Lynagh <igloo@earth.li>**20080804211617]
276[Control.Exception doesn't need to export assertError
277Ian Lynagh <igloo@earth.li>**20080804161838]
278[Generalise the type of mapException; pointed out by Isaac Dupree
279Ian Lynagh <igloo@earth.li>**20080804160941]
280[Remove some unnecessary Data.Tuple imports
281Ian Lynagh <igloo@earth.li>**20080804155956]
282[The tuple datatype definitions have moved to ghc-prim
283Ian Lynagh <igloo@earth.li>**20080804155420]
284[make ExitCode an instance of Exception for nhc98
286[poke and peek come from Foreign.Storable
288[zipWithM_ comes from Control.Monad
290[Fix nhc98 code variations to use the extensible exception API.
292 There is still only one real exception type in nhc98, so it is not truly
293 extensible.  But this is enough to get the base package building again.
295[nhc98 needs the Prelude for this module
297[Change some imports and derive Show (Either a b)
298Ian Lynagh <igloo@earth.li>**20080804004147
299 rather than writing it by hand in GHC.Show
301[Windows fixes
302Ian Lynagh <igloo@earth.li>**20080803180345]
303[Remove the duplicate definition of throwTo in Control.Exception
304Ian Lynagh <igloo@earth.li>**20080803141703
305 It now imports GHC.Conc, so it is no longer necessary
307[Remove the only import of GHC.Exts
308Ian Lynagh <igloo@earth.li>**20080803141944]
309[Move assertError into GHC.IOBase
310Ian Lynagh <igloo@earth.li>**20080803141040]
311[Use onException rather than catchAny
312Ian Lynagh <igloo@earth.li>**20080803114104]
313[Generalise the type of onException
314Ian Lynagh <igloo@earth.li>**20080803003001
315 The type of the thing to do on an exception is now
316     IO b
317 rather than
318     IO ()
319 which better matches functions like bracket.
321[Remove the dangerous Exception functions
322Ian Lynagh <igloo@earth.li>**20080802231358
323 Removed: catchAny, handleAny, ignoreExceptions
324 These make it easy to eat /any/ exception, which is rarely what you want.
325 Normally you either want to:
326 * only catch exceptions in a certain part of the hierarchy, e.g.
327   "file not found", in which case you should only catch exceptions
328   of the appropriate type,
329 or
330 * you want to do some cleanup when an exception happens, and then rethrow
331   the exception, in which case you should use onException, or one of the
332   bracketing functions.
334[Remove an unused import
335Ian Lynagh <igloo@earth.li>**20080801230343]
336[Remove unused imports
337Ian Lynagh <igloo@earth.li>**20080801230059]
338[Remove unused imports in Control.Exception
339Ian Lynagh <igloo@earth.li>**20080801225847]
340[Get rid of some duplicate imports
341Ian Lynagh <igloo@earth.li>**20080801214933]
342[Remove the now-unused GHC/Conc.lhs-boot
343Ian Lynagh <igloo@earth.li>**20080801214707]
344[Make some more imports non-recursive
345Ian Lynagh <igloo@earth.li>**20080801214546]
346[Rejig some code so Control.Exception and GHC.Conc don't need recursive imports
347Ian Lynagh <igloo@earth.li>**20080801214208]
348[Remove the now-unused GHC/TopHandler.lhs-boot
349Ian Lynagh <igloo@earth.li>**20080801212105]
350[Reshuffle GHC.Conc/GHC.TopHandler a bit to remove a recursive import
351Ian Lynagh <igloo@earth.li>**20080801211801]
352[Don't import Control.Concurrent.MVar in GHC.TopHandler
353Ian Lynagh <igloo@earth.li>**20080801200123]
354[Export assertError from Control.Exception to make GHC happy
355Ian Lynagh <igloo@earth.li>**20080801111716
356 It's a wired-in name in GHC. We should possibly move it to another module.
358[TopHandler now uses the new extensible exceptions
359Ian Lynagh <igloo@earth.li>**20080731153553]
360[Comment wibble
361Ian Lynagh <igloo@earth.li>**20080730202127]
362[Make numericEnumFrom more efficient
363Ian Lynagh <igloo@earth.li>**20080730202049]
364[Put in some parens to clarify how things parse
365Ian Lynagh <igloo@earth.li>**20080730201934]
366[applied patches to make enumFrom and friends strict in arguments as per the Report; closes ticket #1997
367Bart Massey <bart@cs.pdx.edu>**20080726080444]
368[Don't use "deriving Typeable" (for portability reasons)
369Ian Lynagh <igloo@earth.li>**20080730194434]
370[Add onException
371Ian Lynagh <igloo@earth.li>**20080730172014]
372[Fix whitespace
373Ian Lynagh <igloo@earth.li>**20080730171951
374 The space after "\begin{code}" was confusing haddock
376[Re-add blocked; it got lost in the extensible exceptions patches
377Ian Lynagh <igloo@earth.li>**20080730145614]
378[Start to actually use extensible exceptions
379Ian Lynagh <igloo@earth.li>**20080730145115]
380[Rejig the extensible exceptions so there is less circular importing
381Ian Lynagh <igloo@earth.li>**20080730122539]
382[Define nonTermination for the RTS to use
383Ian Lynagh <igloo@earth.li>**20080621144420
384 We'll probably need to do the same for some other exceptions too
386[Use extensible exceptions at the lowest level
387Ian Lynagh <igloo@earth.li>**20080621121501
388 Everything above is largely unchanged; just the type of catch and throw.
390[add comment
391Simon Marlow <marlowsd@gmail.com>**20080730114559]
392[add some big warnings to the docs for unsafeIOToSTM (#2401)
393Simon Marlow <marlowsd@gmail.com>**20080730114554]
394[FIX #2376: inline shiftR
395Simon Marlow <marlowsd@gmail.com>**20080730103539
396 Duplicating the default definition for shiftR doesn't seem quite right
397 to me, but it gets the right results when compiling the example
398 program, and I couldn't find a better way to do it.
400[Add instance Show Control.Exception.Exception for nhc98.
402[Extend nhc98's Exception type to resemble ghc's more closely
404[fix dummy async implementations for non-GHC
405Ross Paterson <ross@soi.city.ac.uk>**20080715125521]
406[Fix haddocking with older haddocks
407Ian Lynagh <igloo@earth.li>**20080710190855]
408[Add threadStatus :: ThreadId -> IO ThreadStatus
409Simon Marlow <marlowsd@gmail.com>**20080710151711
411 -- | The current status of a thread
412 data ThreadStatus
413   = ThreadRunning
414         -- ^the thread is currently runnable or running
415   | ThreadFinished
416         -- ^the thread has finished
417   | ThreadBlocked  BlockReason
418         -- ^the thread is blocked on some resource
419   | ThreadDied
420         -- ^the thread received an uncaught exception
421   deriving (Eq,Ord,Show)
423 data BlockReason
424   = BlockedOnMVar
425         -- ^blocked on on 'MVar'
426   | BlockedOnBlackHole
427         -- ^blocked on a computation in progress by another thread
428   | BlockedOnException
429         -- ^blocked in 'throwTo'
430   | BlockedOnSTM
431         -- ^blocked in 'retry' in an STM transaction
432   | BlockedOnForeignCall
433         -- ^currently in a foreign call
434   | BlockedOnOther
435         -- ^blocked on some other resource.  Without @-threaded@,
436         -- I/O and 'threadDelay' show up as 'BlockedOnOther', with @-threaded@
437         -- they show up as 'BlockedOnMVar'.
438   deriving (Eq,Ord,Show)
440 This is useful for concurrency debugging.  I've left threadStatus in
441 GHC.Conc for now, since the ThreadStatus type is somewhat GHC-specific.
443[forkOS: start the new thread in blocked mode iff the parent was (#1048)
444Simon Marlow <marlowsd@gmail.com>**20080709135558
445 This matches the behaviour of forkIO
447[Add Control.Exception.blocked :: IO Bool
448Simon Marlow <marlowsd@gmail.com>**20080709133139
449 Tells you whether async exceptions are currently blocked or not.
451[FIX BUILD (on Windows)
452Simon Marlow <marlowsd@gmail.com>**20080709123110]
453[check CONST_SIGINT
454Simon Marlow <marlowsd@gmail.com>**20080709122527]
455[Make threadWaitRead/threadWaitWrite partially useable on Windows
456Simon Marlow <marlowsd@gmail.com>**20080709111008
458 They work with -threaded by calling fdReady() in a separate thread.
460 "threadWaitRead 0" also works without -threaded (because we happen to
461 know it's virtually equivalent to "hWaitForInput stdin (-1)").
463[FIX #1198: hWaitForInput on Windows
464Simon Marlow <marlowsd@gmail.com>**20080708134254
465 Now we do the appropriate magic in fdReady() to detect when there is
466 real input available, as opposed to uninteresting console events.
468[FIX part of #2301
469Simon Marlow <marlowsd@gmail.com>**20080709094437
471 Control-C now causes the new exception (AsyncException UserInterrupt)
472 to be raised in the main thread.  The signal handler is set up by
473 GHC.TopHandler.runMainIO, and can be overriden in the usual way by
474 installing a new signal handler.  The advantage is that now all
475 programs will get a chance to clean up on ^C.
477 When UserInterrupt is caught by the topmost handler, we now exit the
478 program via kill(getpid(),SIGINT), which tells the parent process that
479 we exited as a result of ^C, so the parent can take appropriate action
480 (it might want to exit too, for example).
482 One subtlety is that we have to use a weak reference to the ThreadId
483 for the main thread, so that the signal handler doesn't prevent the
484 main thread from being subject to deadlock detection.
486[() has moved to ghc-prim:GHC.Unit, and the Eq and Ord instances to Data.Tuple
487Ian Lynagh <igloo@earth.li>**20080624144932]
488[Add GHC.Exts.maxTupleSize :: Int, the size of the largest tuple supported
489Ian Lynagh <igloo@earth.li>**20080622141559]
490[Remove code for older GHC versions
491Ian Lynagh <igloo@earth.li>**20080620194521]
492[Make the macros in Typeable.h add type signatures
493Ian Lynagh <igloo@earth.li>**20080619235808]
494[Fix #2363: getChar cannot be interrupted with -threaded
495Simon Marlow <marlowsd@gmail.com>**20080619141911
496 Now in -threaded mode, instead of just making a blocking call to
497 read(), we call select() first to make sure the read() won't block,
498 and if it would block, then we use threadWaitRead.
500 The idea is that the current thread must be interruptible while it
501 blocks.  This is a little slower than before, but the overhead only
502 applies to blocking Handles (stdin/stdout/stderr, and those created by
503 System.Process).
505[Remove -fglasgow-exts from pragmas and comments
506Ian Lynagh <igloo@earth.li>**20080616230727]
507[Avoid using deprecated flags
508Ian Lynagh <igloo@earth.li>**20080616145207]
509[delete __hscore_{mkstemp,getrlimit,setrlimit} (moved to unix)
510Ross Paterson <ross@soi.city.ac.uk>**20080615224413]
511[Update WCsubst.c for Unicode 5.1.0, and add a README.Unicode
512Ian Lynagh <igloo@earth.li>**20080613201754
513 README.Unicode describes how to do updates in the future.
515[Fix ubconfc
516Ian Lynagh <igloo@earth.li>**20080613201456
517 The current code doesn't seem to be what was used to generate WCsubst.c,
518 so I'm not sure if it never worked, or if my tools work slightly
519 differently to those of the previous user.
521['permutations' is now more lazy and also faster
522Twan van Laarhoven <twanvl@gmail.com>**20080102231712]
523['subsequences' is now more lazy and also faster
524Twan van Laarhoven <twanvl@gmail.com>**20080102231629]
525[Add 'subsequences' and 'permutations' to Data.List
526Twan van Laarhoven <twanvl@gmail.com>**20071218154950]
527[Tweak the definition of (^) again
528Ian Lynagh <igloo@earth.li>**20080601120759
529 This fixes trac #2306 (do the minimum number of (*)s), and also means
530 that we don't use the value of (1 :: a) which causes problems if the
531 Num a definition isn't complete.
533[note about evaluation affecting StableNames
534Simon Marlow <marlowsd@gmail.com>**20080527110549]
535[TAG 2008-05-28
536Ian Lynagh <igloo@earth.li>**20080528003830]
537Patch bundle hash: