packages feed

util 0.1.6.0 → 0.1.7.0

raw patch · 3 files changed

+23/−2 lines, 3 filesdep ~base

Dependency ranges changed: base

Files

Util.hs view
@@ -7,7 +7,7 @@ import Data.Foldable hiding (maximumBy, minimumBy) import Data.Function (flip) import Data.Functor.Classes-import Data.List.NonEmpty (NonEmpty (..))+import Data.List.NonEmpty (NonEmpty (..), (<|)) import qualified Data.List.NonEmpty as NE import Data.Maybe import Data.Semigroup@@ -131,3 +131,10 @@ maximumBy, minimumBy :: Foldable f => (a -> a -> Ordering) -> f a -> Maybe a maximumBy f = foldr (\ a -> Just . fromMaybe a & \ b -> case f a b of GT -> a; _ -> b) Nothing minimumBy f = foldr (\ a -> Just . fromMaybe a & \ b -> case f a b of LT -> a; _ -> b) Nothing++foldMapA :: (Applicative p, Monoid b, Foldable f) => (a -> p b) -> f a -> p b+foldMapA f = foldr (liftA2 (<>) . f) (pure mempty)++iterateM :: Monad m => Natural -> (a -> m a) -> a -> m (NonEmpty a)+iterateM 0 _ x = pure (x:|[])+iterateM k f x = (x <|) <$> (f x >>= iterateM (pred k) f)
+ Util/Bits.hs view
@@ -0,0 +1,13 @@+module Util.Bits where++import Data.Bits+import Data.Bool+import Prelude ((==), (+), fromIntegral, id)+import qualified Prelude++(.&¬) :: Bits a => a -> a -> a+a .&¬ b = a .&. complement b++setBits :: (Bits a, Prelude.Integral n) => a -> [n]+setBits = go 0 where go n a | zeroBits == a `shiftR` fromIntegral n = []+                            | True = bool id (n:) (testBit a (fromIntegral n)) (go (n+1) a)
util.cabal view
@@ -1,5 +1,5 @@ name:                util-version:             0.1.6.0+version:             0.1.7.0 synopsis:            Utilities -- description:          license:             BSD3@@ -13,6 +13,7 @@  library   exposed-modules:     Util+                     , Util.Bits   -- other-modules:          -- other-extensions:       build-depends:       base >=4.9 && <5