On Wed, 2005-05-11 at 09:50, Luke Palmer wrote:

> Oh, just to avoid further confusion: In the baz() called under fatal,
> it will only turn undefs that were generated by "fail" calls into
> exceptions.  Other sorts of undefs will be returned as ordinary
> undefs.

Ok, so let me try to get my head around this:

fail is something like:

        return undef but Exception(...some state info...);

the only question is whether the caller reacts to that special return
value like so:

        if $return ~~ Exception {
                return $return;
        }

or simply ignores it. If you ignore the special return value, then you
presumably have the burden of coping with it in some other way, like so:

        no fatal;
        $socket.bind(:interface<localhost>, :port<80>) or
                $socket.bind([EMAIL PROTECTED]) or
                        die "Cannot bind: $!";

At the top-level (runtime), you would expect to have something like
(arm-waving some naming specifics):

        given $program.(@args) {
                when Exception { $*ERR.print $_.err; exit 1 }
                default { exit +$_ }
        }

Am I getting it now?

-- 
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