patch applied (packages/base): Some small optimisations, generalise the type of unfold

Don Stewart dons at cse.unsw.edu.au
Fri May 12 01:47:04 EDT 2006


Tue May  9 21:33:09 PDT 2006  Don Stewart <dons at cse.unsw.edu.au>
  * Some small optimisations, generalise the type of unfold
  
      Tue May  9 22:36:29 EST 2006  Duncan Coutts <duncan.coutts at worc.ox.ac.uk>
        * Surely the error function should not be inlined.
  
      Tue May  9 22:35:53 EST 2006  Duncan Coutts <duncan.coutts at worc.ox.ac.uk>
        * Reorder memory writes for better cache locality.
  
      Tue May  9 23:28:09 EST 2006  Duncan Coutts <duncan.coutts at worc.ox.ac.uk>
        * 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 <dons at cse.unsw.edu.au>
        * 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

    M ./Data/ByteString.hs -8 +38
    M ./Data/ByteString/Char8.hs -6 +12


More information about the Cvs-libraries mailing list