Presentation is loading. Please wait.

Presentation is loading. Please wait.

Matthew Fluet Cornell University

Similar presentations


Presentation on theme: "Matthew Fluet Cornell University"— Presentation transcript:

1 Matthew Fluet Cornell University
Monadic Regions Matthew Fluet Cornell University

2 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 )  

3 FRGN = System F + RGN monad
Monadic (sub)-language Monadic types and operations RGN r  – monadic region computations RGNVar r  – region allocated values RGNHandle r – region handles

4 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 

5 FRGN = System F + RGN monad
Encapsulate and run a monadic computation runRGN :: .(r. RGNHandle r  RGN r )  

6 FRGN = System F + RGN monad
Encapsulate a region newRGN :: ,r.(s. RGNHandle s  RGN s )  RGN r α

7 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 

8 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

9 new .e  newRGN (.w.h. e)
Translation Type-preserving translation from Single Effect Calculus to FRGN new .e  newRGN (.w.h. e)

10 Conclusion Monadic encoding of effects applicable to region calculi
Trivial (syntactic) equality on types Encapsulation within monad

11

12 FRGN = System F + RGN monad
Monadic unit and bind returnRGN :: ,r.   RGN r  thenRGN :: ,,r. RGN r   (  RGN r )  RGN r 


Download ppt "Matthew Fluet Cornell University"

Similar presentations


Ads by Google