Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 117,315 of 117,927    |
|    Ruvim to dxf    |
|    Re: QUIT and ABORT    |
|    09 May 25 23:18:27    |
      From: ruvim.pinka@gmail.com              On 2025-05-09 12:20, dxf wrote:       > On 9/05/2025 4:20 pm, Ruvim wrote:       >> On 2025-05-09 04:54, dxf wrote:       >>> On 8/05/2025 10:50 pm, Ruvim wrote:       >>>> On 2025-05-08 06:52, dxf wrote:       >>>>> On 8/05/2025 3:52 am, Ruvim wrote:       >>>>>> ...       >>>>>> I use `quit` only for testing and debugging. And I expect to get into       the Forth text interpreter (Forth shell) exactly in the current program state       (as far as possible).       >>>>>>       >>>>>> If `quit` simply calls `-56 throw`, the program state will probably       change (due to actions after `catch` in the program, including restoring the       data stack depth in `throw`) when you get into the Forth shell. Also, there is       a chance that you will        not get into the Forth shell at all if the program does not re-throw the error       in some places.       >>>>>>       >>>>>> So I would not recommend the suggested deviation in the `quit` behavior       even for new implementers, since this brakes the well-known expectation from       `quit`. A better way is to introduce another word with desired behavior       deviation.       >>>>>       >>>>> ANS never gave a rationale for ABORT ABORT" QUIT - only       >>>>> options that we're now exploring.       >>>>>       >>>>> For the reasons you've stated I'm reluctant to define:       >>>>>       >>>>> : QUIT -56 THROW ;       >>>>>       >>>>> But are there reasons an application might were THROW able       >>>>> to handle it?       >>>>       >>>> I don't see such a reason. The application can simply do       >>>> `abort` or `-56 throw` (and no special cases are needed).       >>>       >>> Yes but those would be workarounds. It's making the argument       >>> QUIT can't or shouldn't be caught whereas I'm talking about       >>> entitlement.       >>       >> `BYE` and `EXIT` cannot be caught too.       >       > QUIT is in the table; those are not.              The table only states that the code -56 is *reserved* for "QUIT". But       -56 is not specified anywhere else, so this lonely reservation does not       entail any formal consequences.                            > Besides BYE is an optional tool       > and I've no idea what use is a catchable EXIT .              No use. Ditto for catchable `BYE` (if any) or any other immediate       termination.                                   >> `QUIT` can be considered by the Forth program as a kind of `BYE` that       >> immediately returns control to the Forth shell (when `BYE` returns control       >> to the host OS).       >>       >>       >>> Speaking of entitlement, ANS made EXCEPTION EXT a one-way street.       >>> There's no rolling back from the changes.       >>       >> If you mean that EXCEPTION EXT is not actually optional in itself,       >> but must be provided if EXCEPTION is provided — yes, I agree.       >       > Not what I said              I wonder what you meant by "ANS made EXCEPTION EXT a one-way street".                     > but if you're going to enforce a catchable ABORT and       > ABORT" then why omit QUIT - and if you do - why is it in table?              I think, `QUIT` is in the table by a mistake.                     Regarding `ABORT` and `ABORT"` (and many other in Forth-2012) — they       should not go into this table since this table formally reserves throw       codes for *ambiguous conditions* only.                            > We can keep going round in circles but ISTM what's needed is a rationale.       > Because I'm not seeing one in ANS. Folks have implemented what it said       > but can't explain it. Hence the Bible allusion.       >              Perhaps you could write the rationale?                            --       Ruvim              --- SoupGate-DOS v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca