(* Title: Error_Syntax Author: Christian Sternagel *) section ‹Try-Catch and Error-Update Notation for Arbitrary Types› theory Error_Syntax imports Main "HOL-Library.Adhoc_Overloading" begin consts catch :: "'a ⇒ ('b ⇒ 'c) ⇒ 'c" (‹(try(/ _)/ catch(/ _))› [12, 12] 13) update_error :: "'a ⇒ ('b ⇒ 'c) ⇒ 'd" (infixl ‹<+?› 61) syntax "_replace_error" :: "'a ⇒ 'b ⇒ 'a" (infixl ‹<?› 61) syntax_consts "_replace_error" ⇌ update_error translations "m <? e" ⇀ "m <+? (λ_. e)" end