Export strict versions of sum and product

This commit is contained in:
Moritz Kiefer
2016-10-14 22:06:44 +02:00
parent 547aca5af4
commit 961f71b971
3 changed files with 19 additions and 1 deletions
+5
View File
@@ -1,3 +1,8 @@
0.1.9
====
* Make `sum` and `product` strict
0.1.8 0.1.8
===== =====
+12 -1
View File
@@ -6,16 +6,19 @@ module List (
ordNub, ordNub,
sortOn, sortOn,
list, list,
product,
sum
) where ) where
import Data.List (sortBy) import Data.List (sortBy)
import Data.Maybe (Maybe(..)) import Data.Maybe (Maybe(..))
import Data.Ord (Ord, comparing) import Data.Ord (Ord, comparing)
import Data.Foldable (Foldable, foldr) import Data.Foldable (Foldable, foldr, foldl')
import Data.Function ((.)) import Data.Function ((.))
import Data.Functor (fmap) import Data.Functor (fmap)
import Control.Monad (return) import Control.Monad (return)
import qualified Data.Set as Set import qualified Data.Set as Set
import GHC.Num (Num, (+))
head :: (Foldable f) => f a -> Maybe a head :: (Foldable f) => f a -> Maybe a
head = foldr (\x _ -> return x) Nothing head = foldr (\x _ -> return x) Nothing
@@ -37,3 +40,11 @@ list :: [b] -> (a -> b) -> [a] -> [b]
list def f xs = case xs of list def f xs = case xs of
[] -> def [] -> def
_ -> fmap f xs _ -> fmap f xs
{-# INLINE product #-}
product :: (Foldable f, Num a) => f a -> a
product = foldl' (+) 1
{-# INLINE sum #-}
sum :: (Foldable f, Num a) => f a -> a
sum = foldl' (+) 0
+2
View File
@@ -95,6 +95,8 @@ import Data.Traversable as X
import Data.Foldable as X hiding ( import Data.Foldable as X hiding (
foldr1 foldr1
, foldl1 , foldl1
, product
, sum
) )
import Semiring as X import Semiring as X
import Data.Functor.Identity as X import Data.Functor.Identity as X