<$3}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|None24;BHMVPointers can be freeable, foreign, or focused. There are the following tradeoffs: WFreeable pointers support strong update, but can only be split under focusing. AForeign 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 :5Allocate a new freeable 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 freeable pointer into a focused pointer. I get the freeable 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 Foreign 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.1.0Control.LinearControl.Monad.PlusMonadControl.Monad.LifterControl.Monad.DistributiveControl.Monad.IOT Weakening weakening PlaceholderForeignFocusedFreeablePointerFixInOpen Semiclosed ExclusivePairBlankFnASt>>==rtnrunbimapassoc1assoc2drop1drop2undrop1undrop2swapapplycurrydistrvoid'bimap'opengetStdin getStdout getStderrcloseclose1fileSize setFileSizeeofseektellcharline lookaheadcontentsputCputSrandomfixInj1fixInj2 contractionnewfreesplitptrSwapfocusfocusHdlpeek'poke' changeType newForeignpeek1poke1::+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(,)0IOTCopyable OpenhandlegetHdlliftalignfrstsecndcoercedummy updateWorld manipulate updateWorld1 helloWorld$fWeakeningOpen$fWeakeningPointer$fWeakeningPointer0$fCopyableForeign$fCopyableFocused$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