1
0
mirror of https://github.com/dhil/phd-dissertation synced 2026-03-13 02:58:26 +00:00

Update MSR 2022 slides

This commit is contained in:
2022-05-25 22:29:14 +01:00
parent 01a8a3d581
commit ffe6ebd0b9

View File

@@ -87,6 +87,44 @@ fun has(k, kvs) {
# Homomorphisms between free algebraic models # Homomorphisms between free algebraic models
#? #?
#!
# What is an effect handler?
#
# Operational interpretation
# Resumeable exceptions
# Programmable and composable operating systems <--- THIS TALK
#
# Software engineering interpretation
# Builders for monads (monads as a design pattern)
#
# Functional programming intepretation
# Folds over computation trees
# Free interpreters
#
# Mathematical interpretation
# Homomorphisms between free algebraic models
#?
#!
#
# The key idea
#
# *System calls* are an interface, implemented by an *operating system*
#
# *Effectful operations* are an interface, implemented by an *effect handler*
#
#?
#!
#
# The key idea
#
# *System calls* are an interface, implemented by an *operating system*
# = =
# *Effectful operations* are an interface, implemented by an *effect handler*
#
#?
# #
# #
# What is an operating system? (very abstractly) # What is an operating system? (very abstractly)
@@ -148,26 +186,6 @@ fun has(k, kvs) {
# #
#? #?
#!
#
# The key idea
#
# *System calls* are an interface, implemented by an *operating system*
#
# *Effectful operations* are an interface, implemented by an *effect handler*
#
#?
#!
#
# The key idea
#
# *System calls* are an interface, implemented by an *operating system*
# = =
# *Effectful operations* are an interface, implemented by an *effect handler*
#
#?
#! #!
# #
# This talk at glance # This talk at glance
@@ -243,7 +261,7 @@ typename FileDescr = Int;
sig stdout : FileDescr sig stdout : FileDescr
var stdout = 1; var stdout = 1;
sig echo : (String) {Write:(FileDescr,String) -> ()}-> () sig echo : (String) {Write:(FileDescr, String) -> ()}-> ()
fun echo(cs) { todo("implement echo") } fun echo(cs) { todo("implement echo") }
#? #?
#} #}
@@ -254,7 +272,7 @@ typename FileDescr = Int;
sig stdout : FileDescr sig stdout : FileDescr
var stdout = 1; var stdout = 1;
sig echo : (String) {Write:(FileDescr,String) -> () |%}-> () sig echo : (String) {Write:(FileDescr, String) -> () |%}-> ()
fun echo(cs) { do Write(stdout, cs) } fun echo(cs) { do Write(stdout, cs) }
@@ -263,14 +281,14 @@ fun echo(cs) { do Write(stdout, cs) }
# #
# Basic I/O: Handling writes # Basic I/O: Handling writes
# #
sig basicIO : ( () {Write:(FileDescr,String) -> ()}-> a ) -> (a, File) sig basicIO : ( () {Write:(FileDescr, String) -> ()}-> a ) -> (a, File)
fun basicIO(m) { fun basicIO(m) {
todo("implement basicIO") todo("implement basicIO")
} }
#? #?
#} #}
sig basicIO : ( () {Write:(FileDescr,String) -> () |%}-> a ) { |%}-> (a, File) sig basicIO : ( () {Write:(FileDescr, String) -> () |%}-> a ) { |%}-> (a, File)
fun basicIO(m) { fun basicIO(m) {
handle(m()) { handle(m()) {
case Return(ans) -> (ans, "") case Return(ans) -> (ans, "")