;; -*- Mode: Irken -*- (include "lib/core.scm") (include "lib/random.scm") (define (level0 x) (try (level1 x) except (:Level0 x) -> (:pair "level 0" x) )) (define (level1 x) (try (level2 x) except (:Level1 x) -> (:pair "level 1" x) )) (define (level2 x) (try (level3 x) except (:Level2 x) -> (:pair "level 2" x) )) (define (level3 x) (try (match x with 0 -> (raise (:Level0 x)) 1 -> (raise (:Level1 x)) 2 -> (raise (:Level2 x)) 3 -> (raise (:Level3 x)) 4 -> (:pair "no exception!" 99) _ -> (raise (:Bottom x)) ) except (:Level3 x) -> (:pair "level 3" x) )) (printn (level0 0)) (printn (level0 1)) (printn (level0 2)) (printn (level0 3)) (printn (level0 4)) (printn (level0 5))