@@ -8,8 +8,11 @@ module Main (main) where
9import Criterion.Main
9import Criterion.Main
10import qualified Control.Monad.Reader as M
10import qualified Control.Monad.Reader as M
11+import qualified Control.Monad.State as M
11import qualified Control.Monad.Ether.Reader as E
12import qualified Control.Monad.Ether.Reader as E
13+import qualified Control.Monad.Ether.State as E
12import qualified Control.Monad.Ether.Reader.Flatten as E.F
14import qualified Control.Monad.Ether.Reader.Flatten as E.F
15+import qualified Control.Monad.Ether.State.Flatten as E.F
13import Control.Ether.Flatten
16import Control.Ether.Flatten
14import qualified Control.Lens as L
17import qualified Control.Lens as L
@@ -29,11 +32,43 @@ readerSummatorMTL_flat_9 = do
29 , show <$> L.view L._9 ]
32 , show <$> L.view L._9 ]
30{-# NOINLINE readerSummatorMTL_flat_9 #-}
33{-# NOINLINE readerSummatorMTL_flat_9 #-}
35+stateSummatorMTL_flat_9
36+ :: M.MonadState (Int, Int, Int, Int, Int, Int, Int, Int, Int) m
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))
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 #-}
32run_readerSummatorMTL_flat_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
60run_readerSummatorMTL_flat_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
33run_readerSummatorMTL_flat_9
61run_readerSummatorMTL_flat_9
34 (a1, a2, a3, a4, a5, a6, a7, a8, a9) =
62 (a1, a2, a3, a4, a5, a6, a7, a8, a9) =
35 M.runReader readerSummatorMTL_flat_9 (a9, a8, a7, a6, a5, a4, a3, a2, a1)
63 M.runReader readerSummatorMTL_flat_9 (a9, a8, a7, a6, a5, a4, a3, a2, a1)
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)
37readerSummatorEther_sep_9
72readerSummatorEther_sep_9
38 :: ( E.MonadReader 1 Int m
73 :: ( E.MonadReader 1 Int m
39 , E.MonadReader 2 Int m
74 , E.MonadReader 2 Int m
@@ -57,6 +92,38 @@ readerSummatorEther_sep_9 = concat <$> sequenceA
57 , show <$> E.ask @9 ]
92 , show <$> E.ask @9 ]
58{-# NOINLINE readerSummatorEther_sep_9 #-}
93{-# NOINLINE readerSummatorEther_sep_9 #-}
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 )
106+stateSummatorEther_sep_9 = do
116+ concat <$> sequenceA
125+ , show <$> E.get @9 ]
60run_readerSummatorEther_nested_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
127run_readerSummatorEther_nested_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int) -> String
61run_readerSummatorEther_nested_9
128run_readerSummatorEther_nested_9
62 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
129 (a1, a2, a3, a4, a5, a6, a7, a8, a9)
@@ -88,6 +155,18 @@ run_readerSummatorEther_flattenhalf_9
88 . flip E.F.runReaderT (load @5 a5 <+> load @6 a4 <+> load @7 a3 <+> load @8 a2 <+> load @9 a1)
155 . flip E.F.runReaderT (load @5 a5 <+> load @6 a4 <+> load @7 a3 <+> load @8 a2 <+> load @9 a1)
89 $ readerSummatorEther_sep_9
156 $ readerSummatorEther_sep_9
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)
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 <+>
91tuple_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int)
170tuple_9 :: (Int, Int, Int, Int, Int, Int, Int, Int, Int)
92tuple_9 = (1, -2, 3, -4, 5, -6, 7, -8, 9)
171tuple_9 = (1, -2, 3, -4, 5, -6, 7, -8, 9)
@@ -99,4 +178,6 @@ main = do
99 , bench "readerSummatorEther_flatten_9" $ nf run_readerSummatorEther_flatten_9 tuple_9
178 , bench "readerSummatorEther_flatten_9" $ nf run_readerSummatorEther_flatten_9 tuple_9
100 , bench "readerSummatorEther_flattenhalf_9" $
179 , bench "readerSummatorEther_flattenhalf_9" $
101 nf run_readerSummatorEther_flattenhalf_9 tuple_9
180 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