From 61932148905b984c961e5420db0838f60ca9dab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hillerstr=C3=B6m?= Date: Thu, 26 May 2022 18:27:32 +0100 Subject: [PATCH] Update slides --- code/unix-msr2022.links | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/code/unix-msr2022.links b/code/unix-msr2022.links index 70aeaca..142b39c 100644 --- a/code/unix-msr2022.links +++ b/code/unix-msr2022.links @@ -57,19 +57,20 @@ fun has(k, kvs) { # # Composing UNIX with Effect Handlers # An Introduction to Effect Handler Oriented Programming -# Daniel Hillerström -# Laboratory for Foundations of Computer Science -# The University of Edinburgh +# Daniel Hillerström +# Laboratory for Foundations of Computer Science +# The University of Edinburgh, Scotland, UK # -# Microsoft Research, Redmond, WA, USA -# RISE Seminar -# May 26, 2022 +# Microsoft Research, Redmond, WA, USA +# RISE Seminar +# May 26, 2022 # -# https://dhil.net/research/ +# https://dhil.net/research/ # #? #! +# # What is an effect handler? # # Operational interpretation @@ -85,9 +86,11 @@ fun has(k, kvs) { # # Mathematical interpretation # Homomorphisms between free algebraic models +# #? #! +# # What is an effect handler? # # Operational interpretation @@ -103,6 +106,7 @@ fun has(k, kvs) { # # Mathematical interpretation # Homomorphisms between free algebraic models +# #? #! @@ -125,6 +129,20 @@ fun has(k, kvs) { # #? +#! +# +# Effect handler oriented programming (EHOP) +# +# Key characteristics +# - Extensive use of effect handlers +# - High-degree of modularity +# - Extremely compositional +# +# Some languages that support EHOP: +# C/C++, Eff, Haskell, Koka, Links, Pyro, OCaml, Unison +# +#? + # # # What is an operating system? (very abstractly) @@ -175,7 +193,7 @@ fun has(k, kvs) { # # Objectives of this talk # -# - Demonstrate the versatility of effect handler-oriented programming +# - Demonstrate the versatility of effect handler oriented programming # - Explain Ritchie & Thompson's (1974) UNIX as the combination of # textbook effects # + Exceptions: Process termination @@ -723,7 +741,7 @@ sig interrupt : () {Interrupt:()}-> () fun interrupt() { do Interrupt } # Process reification -typename Pstate(a::Type,e::Eff) +typename Pstate(a::Type, e::Eff) = [|Done:a |Paused:() -e-> Pstate(a, e)|];