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 +8/−1
- Util/Bits.hs +13/−0
- util.cabal +2/−1
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