Go to the first, previous, next, last section, table of contents.


withHandlersDo

Control-struct: ]withHandlersDo{ ... }
file: job.t
package: muf
status: alpha

The ]withHandlersDo{...} operator is the current Muq MUF surface syntax for executing code under the control of specified event handlers. (See section Handlers.)

(The ]withHandlerDo{...} operator is a synonym for ]withHandlersDo{...}.)

The syntax is

[  event0  handler0
   event1  handler1
   ...
| ]withHandlersDo{ ... }

where:

To prevent recursive handler disasters, when any of the specified handlers is invoked, it is run in a context in which the given handler bindings are all effectively dis-established. (Handler bindings established by other ]withHandlersDo{ statements are of course completely unaffected by this, even if they specify the same handler functions.)

Example: This calls a function fn with a handler established that counts warnings. Since the handler then returns normally, normal warning handling is not otherwise affected:

0 --> *warnings-seen*
[ .err.warning
  :: { [] -> [] ! } ++ *warnings-seen* ;
| ]withHandlersDo{
  fn
}

Example: This prints a custom message on divide by zero, then (by simply returning) lets the usual handler(s) take over:

[ .err.divisionByZero
  :: { [] -> [] ! }
    "-Real- hackers don't divide by zero!\n" ,
  ;
| ]withHandlersDo{
  1 0 /
}

For a fuller discussion of events, see section Muq Events.


Go to the first, previous, next, last section, table of contents.