120 likes | 242 Vues
Monadic Regions. Matthew Fluet Cornell University. Introduction. Draw together two lines of research Region-based memory management Regions delimit lifetimes of objects new  .e Monadic encapsulation of effects Embed imperative features in pure languages
 
                
                E N D
Monadic Regions Matthew Fluet Cornell University
Introduction • Draw together two lines of research • Region-based memory management • Regions delimit lifetimes of objects • new .e • Monadic encapsulation of effects • Embed imperative features in pure languages • runST :: .(s. RGN s )  
FRGN = System F + RGN monad • System F • Monadic (sub)-language • Monadic types and operations • RGN r – monadic region computations • RGNVar r – region allocated values • RGNHandle r – region handles
FRGN = System F + RGN monad • Create and read region allocated values allocRGNVar :: ,r.   RGNHandle r  RGN r (RGNVar r ) readRGNVar :: ,r. RGNVar r   RGN r 
FRGN = System F + RGN monad • Encapsulate and run a monadic computation runRGN :: .(r. RGNHandle r  RGN r )  
FRGN = System F + RGN monad • Encapsulate a region newRGN :: ,r.(s. RGNHandle s  RGN s )  RGN r α
FRGN = System F + RGN monad • Encapsulate a region newRGN :: ,r.(s. r  s  RGNHandle s  RGN s )  RGN r α  ≡ ,r,s. RGN r   RGN s 
Single Effect Calculus • LIFO stack of regions imposes a partial order on live (allocated) regions • Regions lower on the stack outlive regions higher on the stack • A single region can serve as a witness for a set of effects • Region appears as a single effect in place of the set
Translation • Type-preserving translation from Single Effect Calculus to FRGN new .e newRGN (.w.h. e)
Conclusion • Monadic encoding of effects applicable to region calculi • Trivial (syntactic) equality on types • Encapsulation within monad
FRGN = System F + RGN monad • Monadic unit and bind returnRGN :: ,r.   RGN r  thenRGN :: ,,r. RGN r  ( RGN r )  RGN r