@@ -8,8 +8,11 @@ module Main (main) where
88
99import Criterion.Main
1010import qualified Control.Monad.Reader as M
11+import qualified Control.Monad.State as M
1112import qualified Control.Monad.Ether.Reader as E
13+import qualified Control.Monad.Ether.State as E
1214import qualified Control.Monad.Ether.Reader.Flatten as E.F
15+import qualified Control.Monad.Ether.State.Flatten as E.F
1316import Control.Ether.Flatten
1417import qualified Control.Lens as L
1518
@@ -29,11 +32,43 @@ readerSummatorMTL_flat_9 = do
2932 , show <$> L.view L._9 ]
3033{-# NOINLINE readerSummatorMTL_flat_9 #-}
3134
35+stateSummatorMTL_flat_9
36+ :: M.MonadState (Int, Int, Int, Int, Int, Int, Int, Int, Int) m
37+ => m String
38+stateSummatorMTL_flat_9 = do
39+ M.modify (L.over L._1 (+1))
40+ M.modify (L.over L._2 (+2))
41+ M.modify (L.over L._3 (+3))
42+ M.modify (L.over L._4 (+4))
43+ M.modify (L.over L._5 (+5))
44+ M.modify (L.over L._6 (+6))
45+ M.modify (L.over L._7 (+7))
46+ M.modify (L.over L._8 (+8))
47+ M.modify (L.over L._9 (+9))
48+ concat <$> sequenceA
49+ [ show <$> L.use L._1
50+ , show <$> L.use L._2
51+ , show <$> L.use L._3
52+ , show <$> L.use L._4
53+ , show <$> L.use L._5
54+ , show <$> L.use L._6
55+ , show <$> L.use L._7
56+ , show <$> L.use L._8
57+ , show <$> L.use L._9 ]
58+{-# NOINLINE stateSummatorMTL_flat_9 #-}
59+
3260run_readerSummatorMTL_flat_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
3361run_readerSummatorMTL_flat_9
3462 (a1, a2, a3, a4, a5, a6, a7, a8, a9) =
3563 M.runReader readerSummatorMTL_flat_9 (a9, a8, a7, a6, a5, a4, a3, a2, a1)
3664
65+run_stateSummatorMTL_flat_9 ::
66+ (Int, Int, Int, Int, Int, Int, Int, Int, Int) ->
67+ (String, (Int, Int, Int, Int, Int, Int, Int, Int, Int))
68+run_stateSummatorMTL_flat_9
69+ (a1, a2, a3, a4, a5, a6, a7, a8, a9) =
70+ M.runState stateSummatorMTL_flat_9 (a9, a8, a7, a6, a5, a4, a3, a2, a1)
71+
3772readerSummatorEther_sep_9
3873 :: ( E.MonadReader 1 Int m
3974 , E.MonadReader 2 Int m
@@ -57,6 +92,38 @@ readerSummatorEther_sep_9 = concat <$> sequenceA
5792 , show <$> E.ask @9 ]
5893{-# NOINLINE readerSummatorEther_sep_9 #-}
5994
95+stateSummatorEther_sep_9
96+ :: ( E.MonadState 1 Int m
97+ , E.MonadState 2 Int m
98+ , E.MonadState 3 Int m
99+ , E.MonadState 4 Int m
100+ , E.MonadState 5 Int m
101+ , E.MonadState 6 Int m
102+ , E.MonadState 7 Int m
103+ , E.MonadState 8 Int m
104+ , E.MonadState 9 Int m )
105+ => m String
106+stateSummatorEther_sep_9 = do
107+ E.modify @1 (+1)
108+ E.modify @2 (+2)
109+ E.modify @3 (+3)
110+ E.modify @4 (+4)
111+ E.modify @5 (+5)
112+ E.modify @6 (+6)
113+ E.modify @7 (+7)
114+ E.modify @8 (+8)
115+ E.modify @9 (+9)
116+ concat <$> sequenceA
117+ [ show <$> E.get @1
118+ , show <$> E.get @2
119+ , show <$> E.get @3
120+ , show <$> E.get @4
121+ , show <$> E.get @5
122+ , show <$> E.get @6
123+ , show <$> E.get @7
124+ , show <$> E.get @8
125+ , show <$> E.get @9 ]
126+
60127run_readerSummatorEther_nested_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
61128run_readerSummatorEther_nested_9
62129 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
@@ -88,6 +155,18 @@ run_readerSummatorEther_flattenhalf_9
88155 . flip E.F.runReaderT (load @5 a5 <+> load @6 a4 <+> load @7 a3 <+> load @8 a2 <+> load @9 a1)
89156 $ readerSummatorEther_sep_9
90157
158+run_stateSummatorEther_flatten_9 ::
159+ (Int, Int, Int, Int, Int, Int, Int, Int, Int) ->
160+ (String, Product '[1,2,3,4,5,6,7,8,9] '[Int,Int,Int,Int,Int,Int,Int,Int,Int])
161+run_stateSummatorEther_flatten_9
162+ (a1, a2, a3, a4, a5, a6, a7, a8, a9)
163+ =
164+ E.F.runState
165+ stateSummatorEther_sep_9
166+ ( load @1 a9 <+> load @2 a8 <+> load @3 a7 <+> load @4 a6 <+>
167+ load @5 a5 <+> load @6 a4 <+> load @7 a3 <+> load @8 a2 <+>
168+ load @9 a1 )
169+
91170tuple_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int)
92171tuple_9 = (1, -2, 3, -4, 5, -6, 7, -8, 9)
93172
@@ -99,4 +178,6 @@ main = do
99178 , bench "readerSummatorEther_flatten_9" $ nf run_readerSummatorEther_flatten_9 tuple_9
100179 , bench "readerSummatorEther_flattenhalf_9" $
101180 nf run_readerSummatorEther_flattenhalf_9 tuple_9
181+ , bench "stateSummatorMTL_flat_9" $ nf run_stateSummatorMTL_flat_9 tuple_9
182+ , bench "stateSummatorEther_flatten_9" $ nf run_stateSummatorEther_flatten_9 tuple_9
102183 ]