Given:

        "fail" with configurable behavior
        "no fatal" to make "fail" just warn
        "use fatal" to make "fail" throw exceptions

A question came up on #perl6 for the following code:

        no fatal;
        class Foo {
                use fatal;
                method bar() { fail; }
        }
        Foo.bar;

That is, bar() picks up a lexically scoped "use fatal", but the caller
of bar desires non-fatal behavior.

Possible results and reasons for them:

      * Warning -- For this to work, I think you would need an implicit
        CATCH block wrapper around each statement in a "no fatal"
        section. This could be simulated by wrapping the entire no fatal
        section in a continuation closure which is then called inside a
        CATCH block which warns and re-invokes the continuation... if
        continuations can be re-invoked after exceptions. That's an
        interesting question on it's own actually.
      * Fatal exception -- This implies that the callee's lexically
        scoped fatal preference wins, which might be a reasonable thing
        in concept, but seems to present no control to the user of a
        module when the module author has specified a preference.
        Perhaps that's a good thing. Perhaps it's bad. I do see a
        problem with a program that uses several modules, all of which
        have different opinions about fatality...
      * Warning -- Another reason that you might get a warning would be
        that there is some sort of dynamically scoped imposition of a
        non-fatal context from "no fatal". That seems the least likely
        to me, but I thought that I'd bring it up.

This came up when someone was considering writing a module, and was
saying that he really wanted "use fatal" as the default for his modules.
That seems like a reasonable thing to want, but I'm not sure how it
could be controlled correctly.

-- 
Aaron Sherman <[EMAIL PROTECTED]>
Senior Systems Engineer and Toolsmith
"It's the sound of a satellite saying, 'get me down!'" -Shriekback


Reply via email to