packages feed

bluefin-contrib 0.2.0.0 → 0.2.1.0

raw patch · 4 files changed

+93/−4 lines, 4 filesdep ~basedep ~bluefinPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, bluefin

API changes (from Hackage documentation)

+ Bluefin.Contrib.Operators: (%=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Integral a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (&=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Bits a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (*=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Num a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (+=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Num a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (-=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Num a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (<<=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Bits a) => State a e -> Int -> Eff es ()
+ Bluefin.Contrib.Operators: (^=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Bits a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators: (|=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Bits a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators.Clashing: (/=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Fractional a) => State a e -> a -> Eff es ()
+ Bluefin.Contrib.Operators.Clashing: (>>=) :: forall (e :: Effects) (es :: Effects) a. (e :> es, Bits a) => State a e -> Int -> Eff es ()

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+## 0.2.1.0++Add `Bluefin.Contrib.Operators` and `Bluefin.Contrib.Operators.Clashing`+ ## 0.2.0.0  * Transitive version bump because of choice of different incoherent
bluefin-contrib.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               bluefin-contrib-version:            0.2.0.0+version:            0.2.1.0 license:            MIT license-file:       LICENSE author:             Tom Ellis@@ -75,7 +75,9 @@     default-language: Haskell2010     hs-source-dirs: src     build-depends:-      base >= 4.12 && < 4.22,-      bluefin >= 0.2.0.0 && < 0.3+      base >= 4.12 && < 4.23,+      bluefin >= 0.2.0.0 && < 0.5     exposed-modules:-      Bluefin.Contrib.State+      Bluefin.Contrib.State,+      Bluefin.Contrib.Operators,+      Bluefin.Contrib.Operators.Clashing
+ src/Bluefin/Contrib/Operators.hs view
@@ -0,0 +1,64 @@+-- |+--+-- @+-- -- ghci> example+-- -- Triangular number 1 is 0+-- -- Triangular number 2 is 1+-- -- Triangular number 3 is 3+-- -- Triangular number 4 is 6+-- -- Triangular number 5 is 10+-- example :: IO ()+-- example = runEff $ \\io -> evalState @Int 0 $ \\st -> do+--   for_ [1..5] $ \\i -> do+--     n <- get st+--     let msg = "Triangular number " <> show i <> " is " <> show n+--     effIO io (putStrLn msg)+--     st += i+-- @+--+-- For @('Bluefin.Contrib.Operators.Clashing.>>=')@ and+-- @('Bluefin.Contrib.Operators.Clashing./=')@, which clash with+-- operators from 'Prelude' of the same name, see+-- "Bluefin.Contrib.Operators.Clashing".+module Bluefin.Contrib.Operators+  ( (+=),+    (-=),+    (*=),+    (%=),+    (&=),+    (|=),+    (^=),+    (<<=),+  )+where++import Bluefin.Eff (Eff, (:>))+import Bluefin.State (State, modify)+import Data.Bits (Bits, shiftL, xor, (.&.), (.|.))++(+=) :: (e :> es, Num a) => State a e -> a -> Eff es ()+(+=) = opEquals (+)++(-=) :: (e :> es, Num a) => State a e -> a -> Eff es ()+(-=) = opEquals (-)++(*=) :: (e :> es, Num a) => State a e -> a -> Eff es ()+(*=) = opEquals (*)++(%=) :: (e :> es, Integral a) => State a e -> a -> Eff es ()+(%=) = opEquals mod++(&=) :: (e :> es, Bits a) => State a e -> a -> Eff es ()+(&=) = opEquals (.&.)++(|=) :: (e :> es, Bits a) => State a e -> a -> Eff es ()+(|=) = opEquals (.|.)++(^=) :: (e :> es, Bits a) => State a e -> a -> Eff es ()+(^=) = opEquals xor++(<<=) :: (e :> es, Bits a) => State a e -> Int -> Eff es ()+(<<=) = opEquals shiftL++opEquals :: (e :> es) => (s -> p -> s) -> State s e -> p -> Eff es ()+opEquals op st n = modify st (`op` n)
+ src/Bluefin/Contrib/Operators/Clashing.hs view
@@ -0,0 +1,19 @@+module Bluefin.Contrib.Operators.Clashing+  ( (/=),+    (>>=),+  )+where++import Bluefin.Eff (Eff, (:>))+import Bluefin.State (State, modify)+import Data.Bits (Bits, shiftR)+import Prelude hiding ((/=), (>>=))++(/=) :: (e :> es, Fractional a) => State a e -> a -> Eff es ()+(/=) = opEquals (/)++(>>=) :: (e :> es, Bits a) => State a e -> Int -> Eff es ()+(>>=) = opEquals shiftR++opEquals :: (e :> es) => (a -> b -> a) -> State a e -> b -> Eff es ()+opEquals op st n = modify st (`op` n)