[Fencommits] fenfire-hs: slim down the previous record by removing the Accessor abstraction -- we don't currently need it and while it's an interesting and possibly useful abstraction, the code is less scary and repetitive without it :-)

Benja Fallenstein benja.fallenstein at gmail.com
Tue Apr 3 23:31:08 EEST 2007


Tue Apr  3 23:30:40 EEST 2007  Benja Fallenstein <benja.fallenstein at gmail.com>
  * slim down the previous record by removing the Accessor abstraction -- we don't currently need it and while it's an interesting and possibly useful abstraction, the code is less scary and repetitive without it :-)
diff -rN -u old-fenfire-hs/Fenfire/Cache.hs new-fenfire-hs/Fenfire/Cache.hs
--- old-fenfire-hs/Fenfire/Cache.hs	2007-04-03 23:31:08.000000000 +0300
+++ new-fenfire-hs/Fenfire/Cache.hs	2007-04-03 23:31:08.000000000 +0300
@@ -20,7 +20,7 @@
 -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 -- MA  02111-1307  USA
 
-import Fenfire.Utils hiding (access)
+import Fenfire.Utils
 
 import Data.Bits
 import Data.HashTable (HashTable)
diff -rN -u old-fenfire-hs/Fenfire/Utils.hs new-fenfire-hs/Fenfire/Utils.hs
--- old-fenfire-hs/Fenfire/Utils.hs	2007-04-03 23:31:08.000000000 +0300
+++ new-fenfire-hs/Fenfire/Utils.hs	2007-04-03 23:31:08.000000000 +0300
@@ -46,46 +46,26 @@
 
 
 type Changer inner outer = Endo inner -> Endo outer
-data Accessor inner outer = Accessor { access :: outer -> inner,
-                                       change :: Changer inner outer }
-                                       
-write :: Accessor inner outer -> inner -> Endo outer
-write acc x = change acc (const x)
 
-gets' :: MonadState outer m => Accessor inner outer -> m inner
-gets' = gets . access
+sets :: Changer inner outer -> inner -> Endo outer
+sets chg x = chg (const x)
 
 puts :: MonadState outer m => Changer inner outer -> inner -> m ()
-puts chg x = modify (chg $ const x)
-
-puts' :: MonadState outer m => Accessor inner outer -> inner -> m ()
-puts' = puts . change
+puts chg x = modify (sets chg x)
 
 modifies :: MonadState outer m => Changer inner outer -> Endo inner -> m ()
 modifies chg f = modify (chg f)
 
-modifies' :: MonadState outer m => Accessor inner outer -> Endo inner -> m ()
-modifies' = modifies . change
-
 type ChangerM m inner outer = EndoM m inner -> EndoM m outer
-data AccessorM m inner outer = AccessorM { maccess :: outer -> m inner,
-                                           mchange :: ChangerM m inner outer }
                                        
-mwrite :: MonadState outer m =>
-          AccessorM m inner outer -> inner -> EndoM m outer
-mwrite acc x = mchange acc (const $ return x)
+msets :: MonadState outer m => ChangerM m inner outer -> inner -> EndoM m outer
+msets chg x = chg (const $ return x)
 
 mgets :: MonadState outer m => (outer -> m inner) -> m inner
 mgets f = get >>= f
 
-mgets' :: MonadState outer m => AccessorM m inner outer -> m inner
-mgets' = mgets . maccess
-
 mputs :: MonadState outer m => ChangerM m inner outer -> inner -> m ()
-mputs chg x = mmodify (chg $ const $ return x)
-
-mputs' :: MonadState outer m => AccessorM m inner outer -> inner -> m ()
-mputs' = mputs . mchange
+mputs chg x = mmodify (msets chg x)
 
 mmodify :: MonadState state m => EndoM m state -> m ()
 mmodify f = get >>= f >>= put
@@ -94,11 +74,6 @@
              ChangerM m inner outer -> EndoM m inner -> m ()
 mmodifies chg f = mmodify (chg f)
 
-mmodifies' :: MonadState outer m => 
-              AccessorM m inner outer -> EndoM m inner -> m ()
-mmodifies' = mmodifies . mchange
-                                       
-
 
 
 type Time     = Double -- seconds since the epoch
diff -rN -u old-fenfire-hs/Fenfire.fhs new-fenfire-hs/Fenfire.fhs
--- old-fenfire-hs/Fenfire.fhs	2007-04-03 23:31:08.000000000 +0300
+++ new-fenfire-hs/Fenfire.fhs	2007-04-03 23:31:08.000000000 +0300
@@ -167,8 +167,8 @@
     
 findChange :: (?vs :: ViewSettings, ?graph :: Graph) =>
               Rotation -> Int -> Maybe Rotation
-findChange rot@(Rotation n r) dir = fmap (Rotation n . (r+)) change_ where
-    change_ = listToMaybe $ List.sortBy (\x y -> abs x `compare` abs y)
+findChange rot@(Rotation n r) dir = fmap (Rotation n . (r+)) change where
+    change = listToMaybe $ List.sortBy (\x y -> abs x `compare` abs y)
                   $ catMaybes [findChange' Neg, findChange' Pos]
     findChange' dir' = fmap (subtract r) r' where
         len = length $ conns n dir'




More information about the Fencommits mailing list