on master help sign in
Remove manually inserted INLINE pragmas
commitb6839804d19aa00af83a8272019308946df949ec authorVladislav Zavialov <vlad.z.4096@gmail.com> dateWed 17 May 2017, 17:41 (9 years ago) parentb40212a
8 files changed+3−204
src/Ether/Except.hs+1−15 src/Ether/Internal.hs+1−5 src/Ether/Reader.hs−28 src/Ether/State.hs−56 src/Ether/TagDispatch.hs−50 src/Ether/TaggedTrans.hs−6 src/Ether/Writer.hs−40 stack.yaml+1−4
src/Ether/Except.hs+1−15
@@ -50,12 +50,8 @@ instance {-# OVERLAPPABLE #-}
5050 , Monad (t m)
5151 , MonadExcept tag e m
5252 ) => MonadExcept tag e (t m) where
53−
5453 throw = Lift.lift . throw @tag
55− {-# INLINE throw #-}
56−
5754 catch = Lift.liftCatch (catch @tag)
58− {-# INLINE catch #-}
5955
6056-- | Encode type-level information for 'ExceptT'.
6157data EXCEPT
@@ -77,17 +73,14 @@ type ExceptT tag e = TaggedTrans (TAGGED EXCEPT tag) (T.ExceptT e)
7773-- | Runs an 'Except' and returns either an exception or a normal value.
7874runExcept :: forall tag e a . Except tag e a -> Either e a
7975runExcept = coerce (T.runExcept @e @a)
80−{-# INLINE runExcept #-}
8176
8277-- | Runs an 'ExceptT' and returns either an exception or a normal value.
8378runExceptT :: forall tag e m a . ExceptT tag e m a -> m (Either e a)
8479runExceptT = coerce (T.runExceptT @e @m @a)
85−{-# INLINE runExceptT #-}
8680
8781-- | Constructor for computations in the exception monad transformer.
8882exceptT :: forall tag e m a . m (Either e a) -> ExceptT tag e m a
8983exceptT = coerce (T.ExceptT @e @m @a)
90−{-# INLINE exceptT #-}
9184
9285type instance HandleSuper EXCEPT e trans = ()
9386type instance HandleConstraint EXCEPT e trans m =
@@ -95,47 +88,40 @@ type instance HandleConstraint EXCEPT e trans m =
9588
9689instance Handle EXCEPT e (T.ExceptT e) where
9790 handling r = r
98− {-# INLINE handling #-}
9991
10092instance
10193 ( Handle EXCEPT e trans
10294 , Monad m, Monad (trans m)
10395 ) => MonadExcept tag e (TaggedTrans (TAGGED EXCEPT tag) trans m)
10496 where
97+
10598 throw =
10699 handling @EXCEPT @e @trans @m $
107100 coerce (T.throwError @e @(trans m) @a) ::
108101 forall eff a . e -> TaggedTrans eff trans m a
109− {-# INLINE throw #-}
110102
111103 catch =
112104 handling @EXCEPT @e @trans @m $
113105 coerce (T.catchError @e @(trans m) @a) ::
114106 forall eff a . Catch e (TaggedTrans eff trans m) a
115− {-# INLINE catch #-}
116107
117108type MonadExcept' e = MonadExcept e e
118109
119110throw' :: forall e m a . MonadExcept' e m => e -> m a
120111throw' = throw @e
121−{-# INLINE throw' #-}
122112
123113catch' :: forall e m a . MonadExcept' e m => m a -> (e -> m a) -> m a
124114catch' = catch @e
125−{-# INLINE catch' #-}
126115
127116type Except' e = Except e e
128117
129118runExcept' :: Except' e a -> Either e a
130119runExcept' = runExcept
131−{-# INLINE runExcept' #-}
132120
133121type ExceptT' e = ExceptT e e
134122
135123exceptT' :: m (Either e a) -> ExceptT' e m a
136124exceptT' = exceptT
137−{-# INLINE exceptT' #-}
138125
139126runExceptT' :: ExceptT' e m a -> m (Either e a)
140127runExceptT' = runExceptT
141−{-# INLINE runExceptT' #-}
src/Ether/Internal.hs+1−5
@@ -69,18 +69,15 @@ class HasLens tag outer inner | tag outer -> inner where
6969
7070instance HasLens a a a where
7171 lensOf = id
72− {-# INLINE lensOf #-}
7372
7473instance HasLens t (Tagged t a) a where
7574 lensOf = \f -> fmap coerce . f . coerce
7675
7776view :: LensLike (Const a) s t a b -> s -> a
7877view l = coerce (l Const)
79−{-# INLINE view #-}
8078
8179over :: LensLike Identity s t a b -> (a -> b) -> s -> t
8280over = coerce
83−{-# INLINE over #-}
8481
8582data HList xs where
8683 HNil :: HList '[]
@@ -173,5 +170,4 @@ do
173170 [TH.ConE 'Tagged `TH.AppE` TH.VarE cur'] ++
174171 map TH.VarE next ))) `TH.AppE`
175172 (TH.VarE f `TH.AppE` TH.VarE cur) )
176− [] ],
177− TH.PragmaD (TH.InlineP 'lensOf TH.Inline TH.FunLike TH.AllPhases) ]
173+ [] ] ]
src/Ether/Reader.hs−28
@@ -77,15 +77,9 @@ instance {-# OVERLAPPABLE #-}
7777 , MonadReader tag r m
7878 ) => MonadReader tag r (t m)
7979 where
80−
8180 ask = Lift.lift (ask @tag)
82− {-# INLINE ask #-}
83−
8481 local = Lift.liftLocal (ask @tag) (local @tag)
85− {-# INLINE local #-}
86−
8782 reader = Lift.lift . reader @tag
88− {-# INLINE reader #-}
8983
9084instance {-# OVERLAPPABLE #-}
9185 ( Monad (trans m)
@@ -98,21 +92,18 @@ instance {-# OVERLAPPABLE #-}
9892 TaggedTrans effs trans m r ->
9993 TaggedTrans (eff ': effs) trans m r)
10094 (ask @tag)
101− {-# INLINE ask #-}
10295
10396 local =
10497 (coerce :: forall a .
10598 Lift.Local r (TaggedTrans effs trans m) a ->
10699 Lift.Local r (TaggedTrans (eff ': effs) trans m) a)
107100 (local @tag)
108− {-# INLINE local #-}
109101
110102 reader =
111103 (coerce :: forall a .
112104 ((r -> a) -> TaggedTrans effs trans m a) ->
113105 ((r -> a) -> TaggedTrans (eff ': effs) trans m a))
114106 (reader @tag)
115− {-# INLINE reader #-}
116107
117108-- | Retrieves a function of the current environment.
118109asks
@@ -122,7 +113,6 @@ asks
122113 -- ^ The selector function to apply to the environment.
123114 -> m a
124115asks = reader @tag
125−{-# INLINE asks #-}
126116
127117-- | Encode type-level information for 'ReaderT'.
128118data READER
@@ -145,19 +135,16 @@ type ReaderT tag r = TaggedTrans (TAGGED READER tag) (T.ReaderT r)
145135-- | Constructor for computations in the reader monad transformer.
146136readerT :: forall tag r m a . (r -> m a) -> ReaderT tag r m a
147137readerT = coerce (T.ReaderT @r @m @a)
148−{-# INLINE readerT #-}
149138
150139-- | Runs a 'ReaderT' with the given environment
151140-- and returns the final value.
152141runReaderT :: forall tag r m a . ReaderT tag r m a -> r -> m a
153142runReaderT = coerce (T.runReaderT @r @_ @m @a)
154−{-# INLINE runReaderT #-}
155143
156144-- | Runs a 'ReaderT' with the given environment
157145-- and returns the final value.
158146runReader :: forall tag r a . Reader tag r a -> r -> a
159147runReader = coerce (T.runReader @r @a)
160−{-# INLINE runReader #-}
161148
162149type instance HandleSuper READER r trans = ()
163150type instance HandleConstraint READER r trans m =
@@ -165,7 +152,6 @@ type instance HandleConstraint READER r trans m =
165152
166153instance Handle READER r (T.ReaderT r) where
167154 handling r = r
168− {-# INLINE handling #-}
169155
170156instance
171157 ( Handle READER r trans
@@ -176,19 +162,16 @@ instance
176162 ask =
177163 handling @READER @r @trans @m $
178164 coerce (T.ask @r @(trans m))
179− {-# INLINE ask #-}
180165
181166 local =
182167 handling @READER @r @trans @m $
183168 coerce (T.local @r @(trans m) @a) ::
184169 forall eff a . Local r (TaggedTrans eff trans m) a
185− {-# INLINE local #-}
186170
187171 reader =
188172 handling @READER @r @trans @m $
189173 coerce (T.reader @r @(trans m) @a) ::
190174 forall eff a . (r -> a) -> TaggedTrans eff trans m a
191− {-# INLINE reader #-}
192175
193176instance
194177 ( HasLens tag payload r
@@ -203,7 +186,6 @@ instance
203186 trans m a ->
204187 TaggedTrans eff trans m a)
205188 (T.asks (view (lensOf @tag @payload @r)))
206− {-# INLINE ask #-}
207189
208190 local f =
209191 handling @READER @payload @trans @m $
@@ -211,7 +193,6 @@ instance
211193 (trans m a -> trans m a) ->
212194 (TaggedTrans eff trans m a -> TaggedTrans eff trans m a))
213195 (T.local (over (lensOf @tag @payload @r) f))
214− {-# INLINE local #-}
215196
216197type family READERS (ts :: HList xs) :: [Type] where
217198 READERS 'HNil = '[]
@@ -223,42 +204,33 @@ type Readers r = ReadersT r Identity
223204
224205runReadersT :: forall p m a . ReadersT p m a -> p -> m a
225206runReadersT = coerce (T.runReaderT @p @_ @m @a)
226−{-# INLINE runReadersT #-}
227207
228208runReaders :: forall p a . Readers p a -> p -> a
229209runReaders = coerce (T.runReader @p @a)
230−{-# INLINE runReaders #-}
231210
232211type ReaderT' r = ReaderT r r
233212
234213readerT' :: (r -> m a) -> ReaderT' r m a
235214readerT' = readerT
236−{-# INLINE readerT' #-}
237215
238216runReaderT' :: ReaderT' r m a -> r -> m a
239217runReaderT' = runReaderT
240−{-# INLINE runReaderT' #-}
241218
242219type Reader' r = Reader r r
243220
244221runReader' :: Reader' r a -> r -> a
245222runReader' = runReader
246−{-# INLINE runReader' #-}
247223
248224type MonadReader' r = MonadReader r r
249225
250226local' :: forall r m a . MonadReader' r m => (r -> r) -> m a -> m a
251227local' = local @r
252−{-# INLINE local' #-}
253228
254229ask' :: forall r m . MonadReader' r m => m r
255230ask' = ask @r
256−{-# INLINE ask' #-}
257231
258232reader' :: forall r m a . MonadReader' r m => (r -> a) -> m a
259233reader' = reader @r
260−{-# INLINE reader' #-}
261234
262235asks' :: forall r m a . MonadReader' r m => (r -> a) -> m a
263236asks' = asks @r
264−{-# INLINE asks' #-}
src/Ether/State.hs−56
@@ -114,15 +114,9 @@ instance {-# OVERLAPPABLE #-}
114114 , MonadState tag s m
115115 ) => MonadState tag s (t m)
116116 where
117−
118117 get = Lift.lift (get @tag)
119− {-# INLINE get #-}
120−
121118 put = Lift.lift . put @tag
122− {-# INLINE put #-}
123−
124119 state = Lift.lift . state @tag
125− {-# INLINE state #-}
126120
127121instance {-# OVERLAPPABLE #-}
128122 ( Monad (trans m)
@@ -135,31 +129,26 @@ instance {-# OVERLAPPABLE #-}
135129 TaggedTrans effs trans m s ->
136130 TaggedTrans (eff ': effs) trans m s)
137131 (get @tag)
138− {-# INLINE get #-}
139132
140133 put =
141134 (coerce ::
142135 (s -> TaggedTrans effs trans m ()) ->
143136 (s -> TaggedTrans (eff ': effs) trans m ()))
144137 (put @tag)
145− {-# INLINE put #-}
146138
147139 state =
148140 (coerce :: forall a .
149141 ((s -> (a, s)) -> TaggedTrans effs trans m a) ->
150142 ((s -> (a, s)) -> TaggedTrans (eff ': effs) trans m a))
151143 (state @tag)
152− {-# INLINE state #-}
153144
154145-- | Modifies the state inside a state monad.
155146modify :: forall tag s m . MonadState tag s m => (s -> s) -> m ()
156147modify f = state @tag (\s -> ((), f s))
157−{-# INLINABLE modify #-}
158148
159149-- | Gets specific component of the state, using a projection function supplied.
160150gets :: forall tag s m a . MonadState tag s m => (s -> a) -> m a
161151gets f = fmap f (get @tag)
162−{-# INLINABLE gets #-}
163152
164153-- | Encode type-level information for 'StateT'.
165154data STATE
@@ -170,11 +159,9 @@ type instance HandleConstraint STATE s trans m =
170159
171160instance Handle STATE s (T.Strict.StateT s) where
172161 handling r = r
173− {-# INLINE handling #-}
174162
175163instance Handle STATE s (T.Lazy.StateT s) where
176164 handling r = r
177− {-# INLINE handling #-}
178165
179166instance
180167 ( Handle STATE s trans
@@ -185,18 +172,15 @@ instance
185172 get =
186173 handling @STATE @s @trans @m $
187174 coerce (T.get @s @(trans m))
188− {-# INLINE get #-}
189175
190176 put =
191177 handling @STATE @s @trans @m $
192178 coerce (T.put @s @(trans m))
193− {-# INLINE put #-}
194179
195180 state =
196181 handling @STATE @s @trans @m $
197182 coerce (T.state @s @(trans m) @a) ::
198183 forall eff a . (s -> (a, s)) -> TaggedTrans eff trans m a
199− {-# INLINE state #-}
200184
201185instance
202186 ( HasLens tag payload s
@@ -211,7 +195,6 @@ instance
211195 trans m a ->
212196 TaggedTrans eff trans m a)
213197 (T.gets (view (lensOf @tag @payload @s)))
214− {-# INLINE get #-}
215198
216199 put s =
217200 handling @STATE @payload @trans @m $
@@ -219,7 +202,6 @@ instance
219202 trans m a ->
220203 TaggedTrans eff trans m a)
221204 (T.modify (over (lensOf @tag @payload @s) (const s)))
222− {-# INLINE put #-}
223205
224206 state f =
225207 handling @STATE @payload @trans @m $
@@ -227,7 +209,6 @@ instance
227209 trans m a ->
228210 TaggedTrans eff trans m a)
229211 (T.state (lensOf @tag @payload @s f))
230− {-# INLINE state #-}
231212
232213-- | The parametrizable state monad.
233214--
@@ -246,43 +227,36 @@ type StateT tag s = TaggedTrans (TAGGED STATE tag) (T.Strict.StateT s)
246227-- | Constructor for computations in the state monad transformer.
247228stateT :: forall tag s m a . (s -> m (a, s)) -> StateT tag s m a
248229stateT = coerce (T.Strict.StateT @s @m @a)
249−{-# INLINE stateT #-}
250230
251231-- | Runs a 'StateT' with the given initial state
252232-- and returns both the final value and the final state.
253233runStateT :: forall tag s m a . StateT tag s m a -> s -> m (a, s)
254234runStateT = coerce (T.Strict.runStateT @s @m @a)
255−{-# INLINE runStateT #-}
256235
257236-- | Runs a 'StateT' with the given initial state
258237-- and returns the final value, discarding the final state.
259238evalStateT :: forall tag s m a . Monad m => StateT tag s m a -> s -> m a
260239evalStateT = coerce (T.Strict.evalStateT @m @s @a)
261−{-# INLINE evalStateT #-}
262240
263241-- | Runs a 'StateT' with the given initial state
264242-- and returns the final state, discarding the final value.
265243execStateT :: forall tag s m a . Monad m => StateT tag s m a -> s -> m s
266244execStateT = coerce (T.Strict.execStateT @m @s @a)
267−{-# INLINE execStateT #-}
268245
269246-- | Runs a 'State' with the given initial state
270247-- and returns both the final value and the final state.
271248runState :: forall tag s a . State tag s a -> s -> (a, s)
272249runState = coerce (T.Strict.runState @s @a)
273−{-# INLINE runState #-}
274250
275251-- | Runs a 'State' with the given initial state
276252-- and returns the final value, discarding the final state.
277253evalState :: forall tag s a . State tag s a -> s -> a
278254evalState = coerce (T.Strict.evalState @s @a)
279−{-# INLINE evalState #-}
280255
281256-- | Runs a 'State' with the given initial state
282257-- and returns the final state, discarding the final value.
283258execState :: forall tag s a . State tag s a -> s -> s
284259execState = coerce (T.Strict.execState @s @a)
285−{-# INLINE execState #-}
286260
287261-- | The parametrizable state monad.
288262--
@@ -301,43 +275,36 @@ type LazyStateT tag s = TaggedTrans (TAGGED STATE tag) (T.Lazy.StateT s)
301275-- | Constructor for computations in the state monad transformer.
302276lazyStateT :: forall tag s m a . (s -> m (a, s)) -> LazyStateT tag s m a
303277lazyStateT = coerce (T.Lazy.StateT @s @m @a)
304−{-# INLINE lazyStateT #-}
305278
306279-- | Runs a 'StateT' with the given initial state
307280-- and returns both the final value and the final state.
308281runLazyStateT :: forall tag s m a . LazyStateT tag s m a -> s -> m (a, s)
309282runLazyStateT = coerce (T.Lazy.runStateT @s @m @a)
310−{-# INLINE runLazyStateT #-}
311283
312284-- | Runs a 'StateT' with the given initial state
313285-- and returns the final value, discarding the final state.
314286evalLazyStateT :: forall tag s m a . Monad m => LazyStateT tag s m a -> s -> m a
315287evalLazyStateT = coerce (T.Lazy.evalStateT @m @s @a)
316−{-# INLINE evalLazyStateT #-}
317288
318289-- | Runs a 'StateT' with the given initial state
319290-- and returns the final state, discarding the final value.
320291execLazyStateT :: forall tag s m a . Monad m => LazyStateT tag s m a -> s -> m s
321292execLazyStateT = coerce (T.Lazy.execStateT @m @s @a)
322−{-# INLINE execLazyStateT #-}
323293
324294-- | Runs a 'State' with the given initial state
325295-- and returns both the final value and the final state.
326296runLazyState :: forall tag s a . LazyState tag s a -> s -> (a, s)
327297runLazyState = coerce (T.Lazy.runState @s @a)
328−{-# INLINE runLazyState #-}
329298
330299-- | Runs a 'State' with the given initial state
331300-- and returns the final value, discarding the final state.
332301evalLazyState :: forall tag s a . LazyState tag s a -> s -> a
333302evalLazyState = coerce (T.Lazy.evalState @s @a)
334−{-# INLINE evalLazyState #-}
335303
336304-- | Runs a 'State' with the given initial state
337305-- and returns the final state, discarding the final value.
338306execLazyState :: forall tag s a . LazyState tag s a -> s -> s
339307execLazyState = coerce (T.Lazy.execState @s @a)
340−{-# INLINE execLazyState #-}
341308
342309type family STATES (ts :: HList xs) :: [Type] where
343310 STATES 'HNil = '[]
@@ -349,97 +316,76 @@ type States s = StatesT s Identity
349316
350317runStatesT :: forall p m a . StatesT p m a -> p -> m (a, p)
351318runStatesT = coerce (T.Strict.runStateT @p @m @a)
352−{-# INLINE runStatesT #-}
353319
354320runStates :: forall p a . States p a -> p -> (a, p)
355321runStates = coerce (T.Strict.runState @p @a)
356−{-# INLINE runStates #-}
357322
358323type StateT' s = StateT s s
359324
360325stateT' :: (s -> m (a, s)) -> StateT' s m a
361326stateT' = stateT
362−{-# INLINE stateT' #-}
363327
364328runStateT' :: StateT' s m a -> s -> m (a, s)
365329runStateT' = runStateT
366−{-# INLINE runStateT' #-}
367330
368331runState' :: State' s a -> s -> (a, s)
369332runState' = runState
370−{-# INLINE runState' #-}
371333
372334evalStateT' :: Monad m => StateT' s m a -> s -> m a
373335evalStateT' = evalStateT
374−{-# INLINE evalStateT' #-}
375336
376337type State' s = State s s
377338
378339evalState' :: State' s a -> s -> a
379340evalState' = evalState
380−{-# INLINE evalState' #-}
381341
382342execStateT' :: Monad m => StateT' s m a -> s -> m s
383343execStateT' = execStateT
384−{-# INLINE execStateT' #-}
385344
386345execState' :: State' s a -> s -> s
387346execState' = execState
388−{-# INLINE execState' #-}
389347
390348type LazyStateT' s = LazyStateT s s
391349
392350lazyStateT' :: (s -> m (a, s)) -> LazyStateT' s m a
393351lazyStateT' = lazyStateT
394−{-# INLINE lazyStateT' #-}
395352
396353runLazyStateT' :: LazyStateT' s m a -> s -> m (a, s)
397354runLazyStateT' = runLazyStateT
398−{-# INLINE runLazyStateT' #-}
399355
400356runLazyState' :: LazyState' s a -> s -> (a, s)
401357runLazyState' = runLazyState
402−{-# INLINE runLazyState' #-}
403358
404359evalLazyStateT' :: Monad m => LazyStateT' s m a -> s -> m a
405360evalLazyStateT' = evalLazyStateT
406−{-# INLINE evalLazyStateT' #-}
407361
408362type LazyState' s = LazyState s s
409363
410364evalLazyState' :: LazyState' s a -> s -> a
411365evalLazyState' = evalLazyState
412−{-# INLINE evalLazyState' #-}
413366
414367execLazyStateT' :: Monad m => LazyStateT' s m a -> s -> m s
415368execLazyStateT' = execLazyStateT
416−{-# INLINE execLazyStateT' #-}
417369
418370execLazyState' :: LazyState' s a -> s -> s
419371execLazyState' = execLazyState
420−{-# INLINE execLazyState' #-}
421372
422373type MonadState' s = MonadState s s
423374
424375get' :: forall s m . MonadState' s m => m s
425376get' = get @s
426−{-# INLINE get' #-}
427377
428378gets' :: forall s m a . MonadState' s m => (s -> a) -> m a
429379gets' = gets @s
430−{-# INLINE gets' #-}
431380
432381put' :: forall s m . MonadState' s m => s -> m ()
433382put' = put @s
434−{-# INLINE put' #-}
435383
436384state' :: forall s m a . MonadState' s m => (s -> (a, s)) -> m a
437385state' = state @s
438−{-# INLINE state' #-}
439386
440387modify' :: forall s m . MonadState' s m => (s -> s) -> m ()
441388modify' = modify @s
442−{-# INLINE modify' #-}
443389
444390-- | Encode type-level information for 'zoom'.
445391data ZOOM t z
@@ -453,7 +399,6 @@ zoom
453399 -> (forall z . Reifies z (ReifiedLens' sOuter sInner) => ZoomT tag z m a)
454400 -> m a
455401zoom l m = reify (Lens l) (\(_ :: Proxy z) -> coerce (m @z))
456−{-# INLINE zoom #-}
457402
458403instance
459404 ( MonadState tag sOuter m
@@ -468,4 +413,3 @@ instance
468413 (state @tag . l)
469414 where
470415 Lens l = reflect (Proxy :: Proxy z)
471− {-# INLINE state #-}
src/Ether/TagDispatch.hs−50
@@ -63,63 +63,38 @@ type TagAttachT t = TaggedTrans (TAG_ATTACH t) IdentityT
6363-- | Attach a tag to untagged transformers.
6464tagAttach :: forall tag m a . TagAttachT tag m a -> m a
6565tagAttach = coerce (runIdentityT @_ @m @a)
66−{-# INLINE tagAttach #-}
6766
6867instance {-# OVERLAPPING #-}
6968 ( MonadReader tag r m, trans ~ IdentityT
7069 ) => Mtl.MonadReader r (TaggedTrans (TAG_ATTACH tag) trans m)
7170 where
72−
7371 ask = ask @tag
74− {-# INLINE ask #-}
75−
7672 local = local @tag
77− {-# INLINE local #-}
78−
7973 reader = reader @tag
80− {-# INLINE reader #-}
8174
8275instance {-# OVERLAPPING #-}
8376 ( MonadState tag s m, trans ~ IdentityT
8477 ) => Mtl.MonadState s (TaggedTrans (TAG_ATTACH tag) trans m)
8578 where
86−
8779 get = get @tag
88− {-# INLINE get #-}
89−
9080 put = put @tag
91− {-# INLINE put #-}
92−
9381 state = state @tag
94− {-# INLINE state #-}
9582
9683instance {-# OVERLAPPING #-}
9784 ( MonadExcept tag e m, trans ~ IdentityT
9885 ) => Mtl.MonadError e (TaggedTrans (TAG_ATTACH tag) trans m)
9986 where
100−
10187 throwError = throw @tag
102− {-# INLINE throwError #-}
103−
10488 catchError = catch @tag
105− {-# INLINE catchError #-}
10689
10790instance {-# OVERLAPPING #-}
10891 ( MonadWriter tag w m, trans ~ IdentityT
10992 ) => Mtl.MonadWriter w (TaggedTrans (TAG_ATTACH tag) trans m)
11093 where
111−
11294 writer = writer @tag
113− {-# INLINE writer #-}
114−
11595 tell = tell @tag
116− {-# INLINE tell #-}
117−
11896 listen = listen @tag
119− {-# INLINE listen #-}
120−
12197 pass = pass @tag
122− {-# INLINE pass #-}
12398
12499-- | Encode type-level information for 'tagReplace'.
125100data TAG_REPLACE tOld tNew
@@ -129,60 +104,35 @@ type TagReplaceT tOld tNew = TaggedTrans (TAG_REPLACE tOld tNew) IdentityT
129104-- | Replace a tag with another tag.
130105tagReplace :: forall tOld tNew m a . TagReplaceT tOld tNew m a -> m a
131106tagReplace = coerce (runIdentityT @_ @m @a)
132−{-# INLINE tagReplace #-}
133107
134108instance
135109 ( MonadReader tNew r m, trans ~ IdentityT
136110 ) => MonadReader tOld r (TaggedTrans (TAG_REPLACE tOld tNew) trans m)
137111 where
138−
139112 ask = ask @tNew
140− {-# INLINE ask #-}
141−
142113 local = local @tNew
143− {-# INLINE local #-}
144−
145114 reader = reader @tNew
146− {-# INLINE reader #-}
147115
148116instance
149117 ( MonadState tNew s m, trans ~ IdentityT
150118 ) => MonadState tOld s (TaggedTrans (TAG_REPLACE tOld tNew) trans m)
151119 where
152−
153120 get = get @tNew
154− {-# INLINE get #-}
155−
156121 put = put @tNew
157− {-# INLINE put #-}
158−
159122 state = state @tNew
160− {-# INLINE state #-}
161123
162124instance
163125 ( MonadExcept tNew e m, trans ~ IdentityT
164126 ) => MonadExcept tOld e (TaggedTrans (TAG_REPLACE tOld tNew) trans m)
165127 where
166−
167128 throw = throw @tNew
168− {-# INLINE throw #-}
169−
170129 catch = catch @tNew
171− {-# INLINE catch #-}
172130
173131instance
174132 ( MonadWriter tNew w m, trans ~ IdentityT
175133 ) => MonadWriter tOld w (TaggedTrans (TAG_REPLACE tOld tNew) trans m)
176134 where
177−
178135 writer = writer @tNew
179− {-# INLINE writer #-}
180−
181136 tell = tell @tNew
182− {-# INLINE tell #-}
183−
184137 listen = listen @tNew
185− {-# INLINE listen #-}
186−
187138 pass = pass @tNew
188− {-# INLINE pass #-}
src/Ether/TaggedTrans.hs−6
@@ -49,7 +49,6 @@ instance
4949 (b a -> trans m a) ->
5050 (b a -> TaggedTrans tag trans m a))
5151 MB.liftBase
52− {-# INLINE liftBase #-}
5352
5453instance
5554 ( MC.MonadTransControl trans
@@ -60,11 +59,9 @@ instance
6059 liftWith = MC.defaultLiftWith
6160 (coerce :: Pack tag trans m a)
6261 (coerce :: Unpack tag trans m a)
63− {-# INLINE liftWith #-}
6462
6563 restoreT = MC.defaultRestoreT
6664 (coerce :: Pack tag trans m a)
67− {-# INLINE restoreT #-}
6865
6966type LiftBaseWith b m a = (MC.RunInBase m b -> b a) -> m a
7067
@@ -75,7 +72,6 @@ coerceLiftBaseWith ::
7572 LiftBaseWith b (TaggedTrans tag trans m) a
7673coerceLiftBaseWith lbw =
7774 unLBW (coerce (LBW lbw))
78−{-# INLINE coerceLiftBaseWith #-}
7975
8076instance
8177 ( MC.MonadBaseControl b (trans m)
@@ -84,14 +80,12 @@ instance
8480 type StM (TaggedTrans tag trans m) a = MC.StM (trans m) a
8581
8682 liftBaseWith = coerceLiftBaseWith MC.liftBaseWith
87− {-# INLINE liftBaseWith #-}
8883
8984 restoreM =
9085 (coerce :: forall a .
9186 (MC.StM (trans m) a -> trans m a) ->
9287 (MC.StM (trans m) a -> TaggedTrans tag trans m a))
9388 MC.restoreM
94− {-# INLINE restoreM #-}
9589
9690type instance Lift.StT (TaggedTrans tag trans) a = Lift.StT trans a
9791
src/Ether/Writer.hs−40
@@ -96,18 +96,10 @@ instance {-# OVERLAPPABLE #-}
9696 , MonadWriter tag w m
9797 , Monoid w
9898 ) => MonadWriter tag w (t m) where
99−
10099 writer = Lift.lift . writer @tag
101− {-# INLINE writer #-}
102−
103100 tell = Lift.lift . tell @tag
104− {-# INLINE tell #-}
105−
106101 listen = Lift.liftListen (listen @tag)
107− {-# INLINE listen #-}
108−
109102 pass = Lift.liftPass (pass @tag)
110− {-# INLINE pass #-}
111103
112104-- | Execute an action and add the result of applying the given function to
113105-- its accumulator to the value of the computation.
@@ -131,11 +123,9 @@ type instance HandleConstraint WRITER w trans m =
131123
132124instance Monoid w => Handle WRITER w (T.CPS.WriterT w) where
133125 handling r = r
134− {-# INLINE handling #-}
135126
136127instance Monoid w => Handle WRITER w (T.Lazy.WriterT w) where
137128 handling r = r
138− {-# INLINE handling #-}
139129
140130instance
141131 ( Handle WRITER w trans
@@ -147,24 +137,20 @@ instance
147137 handling @WRITER @w @trans @m $
148138 coerce (T.writer @w @(trans m) @a) ::
149139 forall eff a . (a, w) -> TaggedTrans eff trans m a
150− {-# INLINE writer #-}
151140
152141 tell =
153142 handling @WRITER @w @trans @m $
154143 coerce (T.tell @w @(trans m))
155− {-# INLINE tell #-}
156144
157145 listen =
158146 handling @WRITER @w @trans @m $
159147 coerce (T.listen @w @(trans m) @a) ::
160148 forall eff a . Listen w (TaggedTrans eff trans m) a
161− {-# INLINE listen #-}
162149
163150 pass =
164151 handling @WRITER @w @trans @m $
165152 coerce (T.pass @w @(trans m) @a) ::
166153 forall eff a . Pass w (TaggedTrans eff trans m) a
167− {-# INLINE pass #-}
168154
169155-- | The parametrizable writer monad.
170156--
@@ -183,31 +169,26 @@ type WriterT tag w = TaggedTrans (TAGGED WRITER tag) (T.CPS.WriterT w)
183169-- | Constructor for computations in the writer monad transformer.
184170writerT :: forall tag w m a . (Functor m, Monoid w) => m (a, w) -> WriterT tag w m a
185171writerT = coerce (T.CPS.writerT @m @w @a)
186−{-# INLINE writerT #-}
187172
188173-- | Runs a 'WriterT' and returns both the normal value
189174-- and the final accumulator.
190175runWriterT :: forall tag w m a . Monoid w => WriterT tag w m a -> m (a, w)
191176runWriterT = coerce (T.CPS.runWriterT @w @m @a)
192−{-# INLINE runWriterT #-}
193177
194178-- | Runs a 'Writer' and returns both the normal value
195179-- and the final accumulator.
196180runWriter :: forall tag w a . Monoid w => Writer tag w a -> (a, w)
197181runWriter = coerce (T.CPS.runWriter @w @a)
198−{-# INLINE runWriter #-}
199182
200183-- | Runs a 'WriterT' and returns the final accumulator,
201184-- discarding the normal value.
202185execWriterT :: forall tag w m a . (Monad m, Monoid w) => WriterT tag w m a -> m w
203186execWriterT = coerce (T.CPS.execWriterT @m @w @a)
204−{-# INLINE execWriterT #-}
205187
206188-- | Runs a 'Writer' and returns the final accumulator,
207189-- discarding the normal value.
208190execWriter :: forall tag w a . Monoid w => Writer tag w a -> w
209191execWriter = coerce (T.CPS.execWriter @w @a)
210−{-# INLINE execWriter #-}
211192
212193-- | The parametrizable writer monad.
213194--
@@ -226,102 +207,81 @@ type LazyWriterT tag w = TaggedTrans (TAGGED WRITER tag) (T.Lazy.WriterT w)
226207-- | Constructor for computations in the writer monad transformer.
227208lazyWriterT :: forall tag w m a . m (a, w) -> LazyWriterT tag w m a
228209lazyWriterT = coerce (T.Lazy.WriterT @w @m @a)
229−{-# INLINE lazyWriterT #-}
230210
231211-- | Runs a 'WriterT' and returns both the normal value
232212-- and the final accumulator.
233213runLazyWriterT :: forall tag w m a . LazyWriterT tag w m a -> m (a, w)
234214runLazyWriterT = coerce (T.Lazy.runWriterT @w @m @a)
235−{-# INLINE runLazyWriterT #-}
236215
237216-- | Runs a 'Writer' and returns both the normal value
238217-- and the final accumulator.
239218runLazyWriter :: forall tag w a . LazyWriter tag w a -> (a, w)
240219runLazyWriter = coerce (T.Lazy.runWriter @w @a)
241−{-# INLINE runLazyWriter #-}
242220
243221-- | Runs a 'WriterT' and returns the final accumulator,
244222-- discarding the normal value.
245223execLazyWriterT :: forall tag w m a . Monad m => LazyWriterT tag w m a -> m w
246224execLazyWriterT = coerce (T.Lazy.execWriterT @m @w @a)
247−{-# INLINE execLazyWriterT #-}
248225
249226-- | Runs a 'Writer' and returns the final accumulator,
250227-- discarding the normal value.
251228execLazyWriter :: forall tag w a . LazyWriter tag w a -> w
252229execLazyWriter = coerce (T.Lazy.execWriter @w @a)
253−{-# INLINE execLazyWriter #-}
254230
255231type Writer' w = Writer w w
256232
257233runWriter' :: Monoid w => Writer' w a -> (a, w)
258234runWriter' = runWriter
259−{-# INLINE runWriter' #-}
260235
261236execWriter' :: Monoid w => Writer' w a -> w
262237execWriter' = execWriter
263−{-# INLINE execWriter' #-}
264238
265239type WriterT' w = WriterT w w
266240
267241writerT' :: (Functor m, Monoid w) => m (a, w) -> WriterT' w m a
268242writerT' = writerT
269−{-# INLINE writerT' #-}
270243
271244runWriterT' :: Monoid w => WriterT' w m a -> m (a, w)
272245runWriterT' = runWriterT
273−{-# INLINE runWriterT' #-}
274246
275247execWriterT' :: (Monad m, Monoid w) => WriterT' w m a -> m w
276248execWriterT' = execWriterT
277−{-# INLINE execWriterT' #-}
278249
279250type LazyWriter' w = LazyWriter w w
280251
281252runLazyWriter' :: LazyWriter' w a -> (a, w)
282253runLazyWriter' = runLazyWriter
283−{-# INLINE runLazyWriter' #-}
284254
285255execLazyWriter' :: LazyWriter' w a -> w
286256execLazyWriter' = execLazyWriter
287−{-# INLINE execLazyWriter' #-}
288257
289258type LazyWriterT' w = LazyWriterT w w
290259
291260lazyWriterT' :: m (a, w) -> LazyWriterT' w m a
292261lazyWriterT' = lazyWriterT
293−{-# INLINE lazyWriterT' #-}
294262
295263runLazyWriterT' :: LazyWriterT' w m a -> m (a, w)
296264runLazyWriterT' = runLazyWriterT
297−{-# INLINE runLazyWriterT' #-}
298265
299266execLazyWriterT' :: Monad m => LazyWriterT' w m a -> m w
300267execLazyWriterT' = execLazyWriterT
301−{-# INLINE execLazyWriterT' #-}
302268
303269type MonadWriter' w = MonadWriter w w
304270
305271writer' :: forall w m a . MonadWriter' w m => (a, w) -> m a
306272writer' = writer @w
307−{-# INLINE writer' #-}
308273
309274tell' :: forall w m . MonadWriter' w m => w -> m ()
310275tell' = tell @w
311−{-# INLINE tell' #-}
312276
313277listen' :: forall w m a . MonadWriter' w m => m a -> m (a, w)
314278listen' = listen @w
315−{-# INLINE listen' #-}
316279
317280pass' :: forall w m a . MonadWriter' w m => m (a, w -> w) -> m a
318281pass' = pass @w
319−{-# INLINE pass' #-}
320282
321283listens' :: forall w m a b . MonadWriter' w m => (w -> b) -> m a -> m (a, b)
322284listens' = listens @w
323−{-# INLINE listens' #-}
324285
325286censor' :: forall w m a . MonadWriter' w m => (w -> w) -> m a -> m a
326287censor' = censor @w
327−{-# INLINE censor' #-}
stack.yaml+1−4
@@ -1,5 +1,2 @@
1−resolver: lts-8.13
1+resolver: nightly-2017-05-17
22packages: ['.']
3−
4−extra-deps:
5−- transformers-lift-0.2.0.1