packages feed

keera-hails-reactivelenses 0.0.0.1 → 0.0.1

raw patch · 2 files changed

+20/−16 lines, 2 files

Files

keera-hails-reactivelenses.cabal view
@@ -7,10 +7,10 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version:             0.0.0.1+Version:             0.0.1  -- A short (one-line) description of the package.-Synopsis:            Haskell on Gtk rails - Lenses applied to Reactive Values+Synopsis:            Reactive Haskell on Rails - Lenses applied to Reactive Values  -- A longer description of the package. -- Description:@@ -43,13 +43,12 @@ -- Extra-source-files:  -- Constraint on the version of Cabal needed to build this package.-Cabal-version:       >=1.2-+Cabal-version:       >= 1.6  Library   hs-source-dirs: src/ -  ghc-options: -Wall -fno-warn-unused-do-bind -O2+  ghc-options: -Wall -fno-warn-unused-do-bind    -- Modules exported by the library.   Exposed-modules: Data.ReactiveLens@@ -57,3 +56,7 @@   -- Packages needed in order to build this package.   Build-depends: base >= 4 && < 5, lens, keera-hails-reactivevalues +source-repository head+    type: git+    location: git://github.com/keera-studios/keera-hails+    subdir: keera-hails-reactivelenses
src/Data/ReactiveLens.hs view
@@ -1,6 +1,4 @@-{-# LANGUAGE RankNTypes           #-}-{-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE Rank2Types #-} module Data.ReactiveLens where  import Control.Lens@@ -11,22 +9,25 @@                  -> Lens' a b                  -> ReactiveFieldReadWrite m b reactiveFromLens (ReactiveFieldReadWrite setter getter notifier) l =-  ReactiveFieldReadWrite setter' getter' notifier- where setter' v = setter.(set l v) =<< getter-       getter'   = fmap (view l) getter+   ReactiveFieldReadWrite setter' getter' notifier+  where setter' v = setter.(set l v) =<< getter+        getter'   = fmap (view l) getter  -- I'd love to write this, but it's not possible because Haskell does not -- allow partially applied type synonyms anywhere. -- instance Monad m => GFunctor (ReactiveFieldReadWrite m) Lens' where --   gmap = reactiveFromLens --- | Why use such a big function name? Well, there are very good--- reasons. One is to get back to the Lens implementors, who--- always choose names that are incredibly easy to pronounce.--- Another is because it's based on <$> and <$$>.+-- | An infix version of 'reactiveFromLense'.+--+-- DUE to a strange problem with GHC-7.10, I cannot use the following+-- equivalente definition: 'flip' 'reactiveFromLens'. (<$$$>) :: (Monad m, Functor m)         => Lens' a b -> ReactiveFieldReadWrite m a -> ReactiveFieldReadWrite m b-(<$$$>) = flip reactiveFromLens+(<$$$>) l (ReactiveFieldReadWrite setter getter notifier) =+  ReactiveFieldReadWrite setter' getter' notifier+ where setter' v = setter.(set l v) =<< getter+       getter'   = fmap (view l) getter  -- I think this bit would need monadic lenses -- reactiveLens :: Lens' a b -> Lens' (ReactiveFieldReadWrite m a) (ReactiveFieldReadWrite m b)