StateVar 1.0.0.0 → 1.0.1.0
raw patch · 2 files changed
+25/−10 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.StateVar: data GettableStateVar a
- Data.StateVar: data SettableStateVar a
+ Data.StateVar: GettableStateVar :: (IO a) -> GettableStateVar a
+ Data.StateVar: SettableStateVar :: (a -> IO ()) -> SettableStateVar a
+ Data.StateVar: StateVar :: (GettableStateVar a) -> (SettableStateVar a) -> StateVar a
+ Data.StateVar: instance Applicative GettableStateVar
+ Data.StateVar: instance Functor GettableStateVar
+ Data.StateVar: instance Monad GettableStateVar
+ Data.StateVar: newtype GettableStateVar a
+ Data.StateVar: newtype SettableStateVar a
Files
- StateVar.cabal +4/−4
- src/Data/StateVar.hs +21/−6
StateVar.cabal view
@@ -1,10 +1,10 @@ name: StateVar-version: 1.0.0.0+version: 1.0.1.0 license: BSD3 license-file: LICENSE-maintainer: Sven Panne <sven.panne@aedion.de>-bug-reports: mailto:hopengl@haskell.org-homepage: http://www.haskell.org/HOpenGL/+maintainer: Sven Panne <svenpanne@gmail.com>+bug-reports: https://github.com/haskell-opengl/OpenGLRaw/issues+homepage: https://github.com/haskell-opengl/OpenGLRaw category: Data synopsis: State variables description:
src/Data/StateVar.hs view
@@ -1,10 +1,10 @@ -------------------------------------------------------------------------------- -- | -- Module : Data.StateVar--- Copyright : (c) Sven Panne 2009--- License : BSD-style (see the file LICENSE)+-- Copyright : (c) Sven Panne 2014+-- License : BSD3 -- --- Maintainer : sven.panne@aedion.de+-- Maintainer : Sven Panne <svenpanne@gmail.com> -- Stability : stable -- Portability : portable --@@ -47,16 +47,17 @@ module Data.StateVar ( -- * Readable State Variables HasGetter(..),- GettableStateVar, makeGettableStateVar,+ GettableStateVar(..), makeGettableStateVar, -- * Writable State Variables HasSetter(..),- SettableStateVar, makeSettableStateVar,+ SettableStateVar(..), makeSettableStateVar, -- * General State Variables- StateVar, makeStateVar,+ StateVar(..), makeStateVar, -- * Utility Functions ($~), ($=!), ($~!) ) where +import Control.Applicative ( Applicative(..) ) import Data.IORef ( IORef, readIORef, writeIORef ) --------------------------------------------------------------------------------@@ -80,6 +81,17 @@ instance HasGetter GettableStateVar where get (GettableStateVar g) = g +instance Functor GettableStateVar where+ fmap f (GettableStateVar g) = GettableStateVar (fmap f g)++instance Applicative GettableStateVar where+ pure = GettableStateVar . pure+ GettableStateVar g <*> GettableStateVar h = GettableStateVar (g <*> h)++instance Monad GettableStateVar where+ return = pure+ GettableStateVar g >>= h = GettableStateVar (g >>= get . h)+ -- | Construct a 'GettableStateVar' from an IO action. makeGettableStateVar :: IO a -> GettableStateVar a makeGettableStateVar = GettableStateVar@@ -100,6 +112,9 @@ instance HasSetter SettableStateVar where ($=) (SettableStateVar s) a = s a++-- instance Contravariant SettableStateVar where+-- contramap f (SettableStateVar s) = SettableStateVar (s . f) -- | Construct a 'SettableStateVar' from an IO action. makeSettableStateVar :: (a -> IO ()) -> SettableStateVar a