From 7ee5eaa46524eb4e6b46487f7bb138c4f9dca836 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 19 Nov 2023 15:49:48 +0000 Subject: Add example for resuming effects --- examples/21-effect-resume/shed.toml | 7 +++++++ examples/21-effect-resume/src/HelloWorld.shed | 23 +++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 examples/21-effect-resume/shed.toml create mode 100644 examples/21-effect-resume/src/HelloWorld.shed (limited to 'examples') diff --git a/examples/21-effect-resume/shed.toml b/examples/21-effect-resume/shed.toml new file mode 100644 index 00000000..bf5c13c4 --- /dev/null +++ b/examples/21-effect-resume/shed.toml @@ -0,0 +1,7 @@ +[[shed.bins]] +name = "hello-world" +main-namespace = "HelloWorld" + +[[shed.examples]] +bin = "hello-world" +expected-output = "hello, world" diff --git a/examples/21-effect-resume/src/HelloWorld.shed b/examples/21-effect-resume/src/HelloWorld.shed new file mode 100644 index 00000000..a5e96e2f --- /dev/null +++ b/examples/21-effect-resume/src/HelloWorld.shed @@ -0,0 +1,23 @@ +effect Writer { + fun hello() -> Unit; + fun world() -> Unit; +} + +pub fun main() ! Io -> Unit { + try { + Writer.hello!(); + print!(", "); + Writer.world!(); + print!("\n"); + } handle Writer { + fun hello() { + print!("hello"); + resume; + } + + fun world() { + print!("world"); + resume; + } + } +} -- cgit v1.2.3