From: Makarius <makarius@sketis.net>
* ML *
ML antiquotation "try" provides variants of exception handling that
avoids accidental capture of physical interrupts (which could affect ML
semantics in unpredictable ways):
\<^try>‹EXPR catch HANDLER›
\<^try>‹EXPR finally HANDLER›
\<^try>‹EXPR›
See also the implementations Isabelle_Thread.try_catch / try_finally /
try. The HANDLER always runs as uninterruptible, but the EXPR uses the
the current thread attributes (normally interruptible). Various examples
occur in the Isabelle sources (.ML and .thy files).
This refers to Isabelle/fc0814e9f7a8 and AFP/9c5fe84ef108.
Instead of friendly hints in the "implementation" manual (which still needs to
be updated), there are now hard checks in the Isabelle/ML compiler setup and
proper antiquotations to get things right by construction.
This is only the first stage of a substantial reform in exception handling.
The next stage will be distinct Exn.Interrupt_Break (interactive thread
signal) vs. Exn.Interrupt_Breakdown (resource problem in the ML runtime-system).
Makarius
isabelle-dev mailing list
isabelle-dev@in.tum.de
https://mailman46.in.tum.de/mailman/listinfo/isabelle-dev
Last updated: Dec 21 2024 at 16:20 UTC