Browse Source

Update MSR 2022 slides

master
Daniel Hillerström 4 years ago
parent
commit
ffe6ebd0b9
  1. 66
      code/unix-msr2022.links

66
code/unix-msr2022.links

@ -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, "")

Loading…
Cancel
Save