initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope (collateral (bind ("x", allocate-variable (values)), bind ("y", allocate-variable (values)), bind ("z", allocate-variable (values)), bind ("g", allocate-variable (functions (tuples ((values)*), values))), bind ("f", allocate-variable (functions (tuples ((values)*), values))), bind ("main", allocate-variable (functions (tuples ((values)*), values)))), sequential (null, null, null, assign (bound ("g"), function closure (scope (match (given, tuple ()), handle-return (throw (decimal-natural ("15")))))), assign (bound ("f"), function closure (scope (match (given, tuple ()), handle-return (effect (apply (assigned (bound ("g")), tuple ())))))), assign (bound ("main"), function closure (scope (match (given, tuple ()), handle-return (sequential (effect (give (decimal-natural ("5"), sequential (assign (bound ("x"), given), given))), effect (give (decimal-natural ("10"), sequential (assign (bound ("y"), given), given))), handle-thrown (effect (apply (assigned (bound ("f")), tuple ())), scope (bind ("y", allocate-initialised-variable (values, given)), print (assigned (bound ("y")), " "))), print (assigned (bound ("x")), " "), print (assigned (bound ("y")), "\n")))))), apply (assigned (bound ("main")), tuple ())))