index 8ce4488..bb031c0 100644 (file)
@@ -216,7 +216,7 @@ scanlP     :: (a -> b -> a) -> a -> [:b:] -> [:a:]
scanlP f z  = fst . loop (scanEFL (flip f)) z

scanl1P        :: (a -> a -> a) -> [:a:] -> [:a:]
-acanl1P f [::]  = error "Prelude.scanl1P: empty array"
+scanl1P f [::]  = error "Prelude.scanl1P: empty array"
scanl1P f a     = fst \$ loopFromTo 1 (lengthP a - 1) (scanEFL f) (a!:0) a

foldrP :: (a -> b -> b) -> b -> [:a:] -> b
@@ -297,7 +297,7 @@ sumP :: (Num a) => [:a:] -> a
sumP  = foldP (+) 0

productP :: (Num a) => [:a:] -> a
-productP  = foldP (*) 0
+productP  = foldP (*) 1

maximumP      :: (Ord a) => [:a:] -> a
maximumP [::]  = error "Prelude.maximumP: empty parallel array"
-- Ideally, we would like `enumFromToP' and `enumFromThenToP' to be members of
-- `Enum'.  On the other hand, we really do not want to change `Enum'.  Thus,
-- for the moment, we hope that the compiler is sufficiently clever to
--- properly fuse the following definition.
+-- properly fuse the following definitions.

enumFromToP    :: Enum a => a -> a -> [:a:]
@@ -414,7 +414,7 @@ enumFromThenToP x y z  =
where
efttInt x y z = scanlP (+) x \$
-                     replicateP ((z - x + 1) `div` delta - 1) delta
+                     replicateP (abs (z - x) `div` abs delta + 1) delta
where
delta = y - x

@@ -570,7 +570,7 @@ loopFromTo from to mf start arr = runST (do
-- unlike standard Haskell arrays, this value represents an
-- internal error

--- actually loop body of `loop'
+-- actual loop body of `loop'
--
-- * for this to be really efficient, it has to be translated with the
--   constructor specialisation phase "SpecConstr" switched on; as of GHC 5.03