diff options
Diffstat (limited to 'examples/28-effect-in-handler/src/Example.shed')
| -rw-r--r-- | examples/28-effect-in-handler/src/Example.shed | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/28-effect-in-handler/src/Example.shed b/examples/28-effect-in-handler/src/Example.shed new file mode 100644 index 00000000..568d9ea8 --- /dev/null +++ b/examples/28-effect-in-handler/src/Example.shed @@ -0,0 +1,44 @@ +effect A { + fun a() -> Unit; +} + +effect B { + fun b() -> Unit; +} + +pub fun main() ! Io -> Unit { + try { + A.a!(); + + try { + A.a!(); + + try { + B.b!(); + } handle B { + fun b() { + print!("b start\n"); + A.a!(); + print!("b end\n"); + resume; + } + } + + A.a!(); + } handle A { + fun a() { + print!("a inner start\n"); + A.a!(); + print!("a inner end\n"); + resume; + } + } + + A.a!(); + } handle A { + fun a() { + print!("a outer\n"); + resume; + } + } +} |
