<3}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|None24;BHMVPointers can be linear, nonlinear, or focused. There are the following tradeoffs: ULinear pointers support strong update, but can only be split under focusing. CNonlinear pointers can be split, but do not support strong update. Placeholders classify pointers that either point to junk or to data that is not allowed to be used (to maintain linearity). FWith the Fix constructor, I can build data structures of linear data. QLinear computations are arrows over linear data, but monads over nonlinear data. $Values representing the real world. #Monadic bind (for nonlinear data). Monadic return This setup is from  5http://cs.ioc.ee/~tarmo/tsem11/jeltsch1602-slides.pdf It implements some of  Nhttp://pauillac.inria.fr/~fpottier/slides/fpottier-2007-05-linear-bestiary.pdf :3Allocate a new linear block (containing junk), Use A to initialize it. ;Use @A to take ownership of the contents of a block before freeing it. <4Split a pointer to a pair, into a pair of pointers. >Focusing on a pointer. Temporarily turns a linear pointer into a focused pointer. I get the linear pointer back after all copies have been surrendered (with ). ?Focusing on a handle. @7Take the data out of a block, making it a placeholder. AThe reverse operation. B)A placeholder block can change its type. CAllocate a nonlinear pointer. i} ~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF !"#$ %&'()*+,-./0123456   789:;<=>?@ABCDEZ} ~    !"#$%&'()*+,-./0123456789:;<=>?@ABCDE Safe-InferredHJKMR$Distributivity with monad products. FGHIJKLMNOPQRSTUVWXYZ FGHIJKLMNOPQRFGHZYXWVIJUKTLMNOPQSRFGHIJKLMNOPQRSTUVWXYZNone2346JK[IAn automatic lifter. The idea of automatic lifting is due to Dan Piponi. [\]^_`abc[\ [\cba`_^][\]^_`abc Safe-Inferred368JKf/Transformers that distribute over one another.  For reorganizing a monad stack. iXPop out the underlying monad of a transformer, with a data structure to hold the state. j Put the data structure back in. lThe opposite of takeout. n,Left distributivity of a monad transformer. oRight distributivity. defghijklmnopqrstuvwxyz defghijklmnokhijzyxwlmfgdevutsrqpnodefghijklmnopqrstuvwxyzNone!";HM{An IO monad transformer.  I can't run {;. Instead, I run the monad inside it. This is done using |, and  from mmorph. The combination is only a monad if the parameter monad isn't nondeterministic. IOT Maybe and IOT State are monads, but IOT [] and IOT Cont are not. Should be integrated with STT. | Run an IOT. {|{|{|{|         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR$STUVWXYZ[\]^_`abcdefghij!klmnopqrstuvwxyz{ |}~zMonadCompose-0.8.2.0Control.LinearControl.Monad.PlusMonadControl.Monad.LifterControl.Monad.DistributiveControl.Monad.IOT Weakening weakening Placeholder NonlinearFocusedLinearPointerFixInOpen Semiclosed ExclusivePairBlankFnASt>>==rtnrunbimapassoc1assoc2drop1drop2undrop1undrop2swapapplycurrydistrvoid'bimap'opengetStdin getStdout getStderrcloseclose1fileSize setFileSizeeofseektellcharline lookaheadcontentsputCputSrandomfixInj1fixInj2 contractionnewfreesplitptrSwapfocusfocusHdlpeek'poke' changeType newNonlinearpeek1poke1::+PlusunPlusinlinrmapPluscommassoc cancelLeft cancelRightrefl $fMMonad::+ $fMFunctor::+$fMonadTrans::+$fAlternative::+$fMonadPlus::+$fApplicative::+ $fFunctor::+ $fMonad::+Lifterlf $fLiftermm $fLiftermn $fLifterm::+$fLifterIdentityIdentity $fLifterSTST $fLifterIOIO $fLifterSTIO Rightdistrrdist LeftdistrldistTakeouttakeoutcombineputinputin1ldist'rdist'$fRightdistrReaderT$fRightdistrStateT$fRightdistrStateT0$fLeftdistrListT$fLeftdistrWriterT$fLeftdistrErrorT$fLeftdistrMaybeT$fTakeoutWriterT(,)$fTakeoutReaderTIdentity$fTakeoutStateT(,)$fTakeoutStateT(,)0IOT Splitable OpenhandlegetHdlliftalignfrstsecndcoercedummy updateWorld manipulate updateWorld1 helloWorld$fWeakeningOpen$fWeakeningPointer$fWeakeningPointer0$fSplitableFocused$fSplitableNonlinear$fStorablePointer$fStorableHandle$fStorablePair$fStorableBlank$fOpenhandleOpen$fOpenhandleExclusive$fArrowChoiceA$fArrowA $fCategory*A mmorph-1.0.4Control.Monad.MorphhoistSequenceSeqNoneRet runSequence_squash_hoist $fMFunctorIOT $fMMonadIOT$fMonadTransIOT $fMonadIOIOT $fFunctorIOT$fApplicativeIOT $fMonadIOT