E =B      !"#$%&'()*+,-./0123456789:;<=>?@A experimentalekmett@gmail.com Safe-Infered A B f is   if   and C witness an isomorphism to (->) x.  tabulate . index = id  index . tabulate = id  tabulate . return f = return f ' fmap f . tabulate = tabulate . fmap f RWe extend lens across a representable functor, due to the preservation of limits.  DEFGHIJK     DEFGHIJK experimentalekmett@gmail.com Safe-Infered! !LMNOPQRSTUVWXYZ[\]^_`abcdef  ! ! !LMNOPQRSTUVWXYZ[\]^_`abcdef experimentalekmett@gmail.com Safe-Infered ",A state transformer monad parameterized by:  g? - A representable functor used to memoize results for a state Key g  m - The inner monad. The g, function leaves the state unchanged, while >>= uses B the final state of the first computation as the initial state of  the second. %@A memoized state monad parameterized by a representable functor g , where  the representatation of g, Key g is the state to carry. The g, function leaves the state unchanged, while >>= uses B the final state of the first computation as the initial state of  the second. &5Construct a state monad computation from a function.  (The inverse of '.) '0Unwrap a state monad computation as a function.  (The inverse of &.) (:Evaluate a state computation with the given initial state 9 and return the final value, discarding the final state.  ( m s = h (' m s)):Evaluate a state computation with the given initial state 9 and return the final state, discarding the final value.  ) m s = i (' m s)*AMap both the return value and final state of a computation using  the given function.  ' (* f m) = f . ' m.:Evaluate a state computation with the given initial state 9 and return the final value, discarding the final state.  . m s = j h (, m s)/:Evaluate a state computation with the given initial state 9 and return the final state, discarding the final value.  / m s = j i (, m s)0Uniform lifting of a callCC operation to the new monad. ? This version rolls back to the original state on entering the  continuation. 1In-situ lifting of a callCC operation to the new monad. C This version uses the current state on entering the continuation. 6 It does not satisfy the laws of a monad transformer. "#$%&pure state transformer %equivalent state-passing computation '%state-passing computation to execute initial state return value and final state (%state-passing computation to execute initial value &return value of the state computation )%state-passing computation to execute initial value  final state *+,-./01klmnopqrstuv "#$%&'()*+,-./01%&'()*"#$+,./-01  "#$%&'()*+,-./01klmnopqrstuv experimentalekmett@gmail.com Safe-Infered2.A store transformer comonad parameterized by:  g@ - A representable functor used to memoize results for an index Key g  w - The inner comonad. 4BA memoized store comonad parameterized by a representable functor g , where  the representatation of g, Key g is the index of the store. 5KConstruct a store comonad computation from a function and a current index.  (The inverse of 6.) 60Unwrap a state monad computation as a function.  (The inverse of state.) 2345 computation index 6a store to access initial state 78wxyz{|}~ 2345678 45623782345678wxyz{|}~ experimentalekmett@gmail.com Safe-Infered9A B f is 9 if : and < witness an isomorphism to (_ -> Value f).  tabulate . index = id  index . tabulate = id  tabulate . return f = return f : ' contramap f (corep g) = corep (g . f) ;Dual to Indexed. =Dual to Keyed. 9:;<=>?@A 9:;<=>?@A ?=>;<9:@A9:;<=>?@A          !"#$%&''()*+,,-./0123456789:;;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeTfghijklmnopqJKrJstJsuJvwxyz{|}~representable-functors-2.1.2#Control.Comonad.Representable.Store"Control.Monad.Representable.Reader!Control.Monad.Representable.StateData.Functor.RepresentableData.Functor.Corepresentablecomonads-fd-2.0.2.1Control.Comonad.Store.Classseeksseekpeekspeekpos mtl-2.0.1.0Control.Monad.Reader.ClasslocalaskControl.Monad.State.Classgetsmodifyputget RepresentabletabulatefmapRep mapWithKeyReppureRepbindRepbindWithKeyRepaskReplocalRepapRep zipWithRep zipWithKeyRep distributeRep duplicateRep extendRep extractReprepLensReaderT getReaderTReaderreader runReaderStateT getStateTStatestaterunState evalState execStatemapStatestateT runStateT mapStateT evalStateT execStateT liftCallCC liftCallCC'StoreTStorestorerunStorestoreT runStoreTCorepresentablecorep CoindexedcoindexValuedcontramapWithValueValuecontramapDefaultcontramapWithValueDefaultbaseGHC.BaseFunctor keys-2.1.2Data.Keyindex$fRepresentableCofree$fRepresentableProduct$fRepresentableTracedT$fRepresentableCompose$fRepresentableReaderT$fRepresentable(->)$fRepresentableIdentityT$fRepresentableIdentity$fMonadWriterwReaderT$fMonadIOReaderT$fComonadReaderT$fZipWithKeyReaderT $fZipReaderT$fExtendReaderT$fTraversableWithKey1ReaderT$fTraversableWithKeyReaderT$fTraversable1ReaderT$fTraversableReaderT$fFoldableWithKey1ReaderT$fFoldableWithKeyReaderT$fFoldable1ReaderT$fFoldableReaderT$fLookupReaderT$fAdjustableReaderT$fIndexableReaderT$fKeyedReaderT$fDistributiveReaderT$fMonadTransReaderT$fMonadReadereReaderT$fMonadReaderT $fBindReaderT$fApplicativeReaderT$fApplyReaderT$fFunctorReaderTreturn Data.Tuplefstsnd Control.MonadliftM$fMonadFreefStateT$fMonadContStateT$fMonadWriterwStateT$fMonadReadereStateT$fMonadStatesStateT$fMonadTransStateT$fBindTransStateT $fMonadStateT $fBindStateT$fApplicativeStateT $fApplyStateT$fFunctorStateT$fComonadCofreefStoreT$fComonadEnvmStoreT$fComonadTracedmStoreT$fComonadHoistStoreT$fComonadTransStoreT$fComonadStoreT$fExtendStoreT$fApplicativeStoreT $fApplyStoreT$fFunctorStoreT$fComonadStoresStoreT$fCoindexedCoproduct$fCorepresentableProduct$fCoindexedProduct$fValuedProduct$fCorepresentablePredicate$fCoindexedPredicate$fValuedPredicate$fCorepresentableOp $fCoindexedOp $fValuedOp