*$      Safe-InferredHM A  (Model s a b) converts a stream of (a)s into a stream of (b)&s while interacting with a state (s) An effectful sink [ contramap f (v1 <> v2) = contramap f v1 <> contramap f v2 contramap f mempty = mempty A concurrent source G fmap f (c1 <> c2) = fmap f c1 <> fmap f c2 fmap f mempty = mempty  Create a  from an  1Think of the type as one of the following types:  qkeeps :: Prism' a b -> Controller a -> Controller b keeps :: Traversal' a b -> Controller a -> Controller b (keeps prism controller) only emits values if the prism matches the  controller 's output.  9 keeps (p1 . p2) = keeps p2 . keeps p1 keeps id = id K keeps p (c1 <> c2) = keeps p c1 <> keeps p c2 keeps p mempty = mempty  Create a  from a sink  Create a  from a  1Think of the type as one of the following types:  ]handles :: Prism' a b -> View b -> View a handles :: Traversal' a b -> View b -> View a (handles prism view) only runs the view if the prism matches the input.  A handles (p1 . p2) = handles p1 . handles p2 handles id = id S handles p (v1 <> v2) = handles p v1 <> handles p v2 handles p mempty = mempty  Create a  from a  @ asPipe (p1 <-< p2) = asPipe p1 . asPipe p2 asPipe cat = id  Connect a , , and 5 and initial state into a complete application.  Create a  from a  transformation > loop (k1 >=> k2) = loop k1 >-> loop k2 loop return = cat   Initial state Program logic Effectful output and input Returns final state !"#$]%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq     !"#$ Safe-Inferred  Create a  from a S, using the given n If you're not sure what n to use, try j Read lines from standard input Read lines from a file r@ values from a file, one value per line, skipping failed parses /Emit empty values spaced by a delay in seconds  Create a  from a T Write lines to standard output Write lines to a file s& values to a file, one value per line  Read from a t using a  u  Write to a t using a  u    v      !"#$%#&'()*+,-./012314516718918:18;18<18=1>?1>@1>A1>B1>C1>D12E12F12GHIJHIKLMNLMOPQRPQSLTULTV#&W#&X#&Y#&Z#&[#&\#&]#&^#&_#&`#&a#&b#&c#&d#&e#&f#&g#&h#&i#$j#$k#$l#$m#$n#$o#$p#qr#qstuvwxyz{|}~LLL1111 mvc-1.0.4MVC MVC.Prelude managed-1.0.0Control.Monad.ManagedmanagedManagedModelView ControllerasInputkeepsasSinkasFoldhandlesasPiperunMVCloopproducer stdinLinesinLinesinReadtickconsumer stdoutLinesoutLinesoutShowinHandle outHandlepipes-concurrency-2.0.3Pipes.ConcurrentInput foldl-1.0.9 Control.FoldlFoldM pipes-4.1.5 Pipes.CorePipePipesListTAsPipe Traversal'AsFoldAsInput$fCategory*Model$fContravariantView $fMonoidView$fMonoidController$fFunctorControllerbase Control.Monad MonadPlus Data.FoldableFoldable System.Mem performGC GHC.Conc.SyncreadTVar newTVarIO atomicallyforkIOSTM Data.Monoid<>mconcatmappendmemptyMonoidFirstvoidmplusmzerocontravariant-1.3.1Data.Functor.Contravariant contramap Contravarianttransformers-0.3.0.0Control.Monad.IO.ClassMonadIOliftIO mmorph-1.0.4Control.Monad.MorphhoistMFunctorControl.Monad.Trans.Class MonadTranslift<-<discardeveryeachnextrunListT>->cat~<>~await<~~>foryield enumerateSelecttoListT Enumerable runEffectEffectProducerConsumerEffect' Producer' Consumer'Pipes.InternalProxyX stm-2.4.4Control.Concurrent.STM.TVar mkWeakTVarnewestlatestbounded unboundedspawn'spawn fromInputtoOutputrecvsendOutput UnboundedBoundedSingleLatestNewestNewBufferData.Functor.Constant getConstantConstant Text.ReadreadGHC.ShowshowGHC.IOFilePathGHC.IO.Handle.TypesHandle