Download presentation
Presentation is loading. Please wait.
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. ST s )
3
Introduction Encode Tofte-Talpin region calculus in System F with monadic sub-language Features runST serves as inspiration runRGN – encapsulate region computation newRGN – encapsulate a single region Sufficient polymorphism to encode region polymorphism
4
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
5
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
6
FRGN = System F + RGN monad
Encapsulate and run a monadic computation runRGN :: .(r. RGNHandle r RGN r )
7
FRGN = System F + RGN monad
Encapsulate a region newRGN :: ,r.(s. RGNHandle s RGN s ) RGN r
8
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
9
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
10
new .e newRGN (.w.h. e)
Translation Type-preserving translation from Single Effect Calculus to FRGN new .e newRGN (.w.h. e)
11
Conclusion Monadic encoding of effects applicable to region calculi
Trivial (syntactic) equality on types Encapsulation within monad
13
FRGN = System F + RGN monad
Monadic unit and bind returnRGN :: ,r. RGN r thenRGN :: ,,r. RGN r ( RGN r ) RGN r
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.