THE SEQUENTIAL SEMANTICS OF PRODUCER EFFECT SYSTEMS Ross Tate THE SEQUENTIAL SEMANTICS OF PRODUCER EFFECT SYSTEMS Ross Tate.

Download Report

Transcript THE SEQUENTIAL SEMANTICS OF PRODUCER EFFECT SYSTEMS Ross Tate THE SEQUENTIAL SEMANTICS OF PRODUCER EFFECT SYSTEMS Ross Tate.

THE
SEQUENTIAL SEMANTICS
OF
PRODUCER EFFECT SYSTEMS
Ross Tate
THE
SEQUENTIAL SEMANTICS
OF
PRODUCER EFFECT SYSTEMS
Ross Tate
WHAT IS AN EFFECT?
Ignores
Inputs
Leaks
Information
Types
Outputs
Inputs
Computation
Throws
Exception
THE
SEQUENTIAL SEMANTICS
OF
PRODUCER EFFECT SYSTEMS
Ross Tate
EFFECT SYSTEM FOR LOCKING
locking
locking
acquire acquire
entrant
locking
critical
unlocking
acquire
get
release
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
locking unlocking critical
lockless lockless locking unlocking critical
locking locking
entrant locking
unlocking unlocking critical
critical critical
unlocking critical
entrant entrant locking
entrant
entrant
unlocking
entrant
EFFECTS FOR PURE CODE
“May”
Properties
critical
lockless
entrant
÷2
locking
unlocking
“Must”
Properties
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
locking unlocking critical
lockless lockless locking unlocking critical
locking locking
entrant locking
unlocking unlocking critical
critical critical
unlocking critical
entrant entrant locking
entrant
entrant
unlocking
lockless critical, entrant
↦ lockless, critical, entrant
Cannot be formalized semantically
by any preexisting framework
entrant
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
lockless lockless
↦ lockless, critical, entrant
Monad
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
lockless lockless
entrant
entrant
entrant
entrant
entrant
lockless critical, entrant
↦ lockless, critical, entrant
Indexed Monad
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
lockless lockless
critical
entrant
critical
entrant
Monads
cannot be
used for
“must”
properties.
critical
critical
entrant
entrant
critical
lockless critical, entrant
↦ lockless, critical, entrant
Layered Monads in Action
entrant
WHAT IS AN EFFECT SYSTEM?
↓;→
locking
unlocking
critical
entrant
locking unlocking
entrant
critical
entrant
locking
critical
unlocking
unlocking
critical
locking
↦ lockless, critical, entrant
Parameterized Monad
entrant
WHAT IS AN EFFECT SYSTEM?
↓ ; → lockless
locking unlocking critical
lockless lockless locking unlocking critical
locking locking
entrant locking
unlocking unlocking critical
critical critical
unlocking critical
entrant entrant locking
lockless critical, entrant
↦ lockless, critical, entrant
Productoid
entrant
entrant
unlocking
entrant
THE
SEQUENTIAL SEMANTICS
OF
PRODUCER EFFECT SYSTEMS
Ross Tate
WHAT IS A PRODUCER EFFECT?
τ
τ’
Maybe
τ
partial
ε
Pε τ’
LOCKING-EFFECT PRODUCTIONS

Plockless(τ)
=
P (τ) Abstract Types

Plocking(τ)
=
L ⊸ P (C ⨂ τ)

Punlocking(τ)
=
C ⊸ P (L ⨂ τ)

Pcritical(τ)
=
C ⊸ P (C ⨂ τ)

Pentrant(τ)
=
L ⊸ P (L ⨂ τ)
THE
SEQUENTIAL SEMANTICS
OF
PRODUCER EFFECT SYSTEMS
Ross Tate
critical
SEQUENCING EFFECTFUL WITH PURE
critical
1
ℤ
get
Expects an ℤ
÷2
ℝ
map
ℤ
C⊸C⊗
1
C⊸C⊗
Produces a C⊸C⊗ℤ
ℝ
ε''
SEQUCENCING EFFECTFUL TOGETHER
ℝ
ε
ℤ
ε'
ℤ
Pε ℤ
ℕ
Pε’ ℕ
map
ℝ
ε ε’ ↦ ε’’
Monad
needs
ε=ε’=ε’’
Pε Pε’ ℕ join Pε’’ ℕ
WHAT IS A PRODUCTOID?
Propagate effects
For each ε:
Pε τ’
τ
τ’ map Pε τ
 For each ε ε’ ↦ ε’’:
Sequence effects
Pε Pε’ τ join Pε’’ τ
Convert effects
 For each ε ≤ ε’:
Pε τ coerce Pε’ τ
Impurify into effects
 For each ↦ ε:
τ unit Pε τ

GENERALITY
The sequential semantics of any
producer effect system forms a
productor.
Any effectful language that can
thunk computations into pure values
has only producer effects.
PRODUCTORS BUILT FROM …

a single effect


a join semi-lattice of effects


are indexed monads [Wadler & Thiemann]
a partial join semi-lattice of effects


are monads [Moggi]
are layered monads in action [Filinski]
a state-transition effect system

are parameterized monads [Atkey]
These are all if and only ifs.
APPLYING PRODUCTORS
 Abstract
Operations:
acquire : L ⊸ C
 release : C ⊸ L
 get : C ⊸ C ⨂ ℤ
 set : C ⨂ ℤ ⊸ C


locking
unlocking
critical
critical
Productor using linear type theory ensures:
shared memory accessed only in critical regions
 no deadlocks possible

LOCKLESS EFFECTS

Linear Strength
α ⨂ P (τ) ⊸ P (α ⨂ τ)

lockless cannot include exceptions
WHAT IS A PRODUCTOID?
For each ε:
τ
τ’ map Pε τ
 For each ε ε’ ↦ ε’’:
Pε Pε’ τ join Pε’’ τ
 For each ε ≤ ε’:
Pε τ coerce Pε’ τ
 For each ↦ ε:
τ unit Pε τ

Pε τ’
WHAT IS A PRODUCTOR?
For each ε1 … εn ↦ ε:
P1 … Pn τ join
 For each ε ε’ ↦ ε’’:
Pε Pε’ τ join
 For each ε ≤ ε’:
Pε τ coerce
 For each ↦ ε:
τ unit

Pε τ
Pε’’ τ
Pε’ τ
Pε τ
WHAT IS A PRODUCTOR?
τ
Pε
join
P ε … Pε
…
join
P𝜀
…
…
1
i
P ε … Pε τ
m
join
P𝜀
n
τ
join
Pε
τ
CONCLUSION

Formalized sequential structure of
Effects:
 Semantics:


effectors
productors
Proved generality/applicability of productors
All producer effect systems
 Thunking guarantees producer effects


Opportunities for future research
Consumer effects: how are inputs used?
 Consumptors: dualize productors
