ADDED: variants of errors promoting call_with_error_context/2

A good example of call_with_error_context/2 was recently provided by
@Skgland in d907f86c8d. Many thanks!
This commit is contained in:
Markus Triska
2025-08-02 09:55:47 +02:00
parent 9cc170f2ad
commit 86dc22a850

View File

@@ -5,8 +5,11 @@
:- module(error, [must_be/2,
can_be/2,
instantiation_error/0,
instantiation_error/1,
domain_error/2,
domain_error/3,
type_error/2,
type_error/3,
call_with_error_context/2
]).
@@ -215,8 +218,25 @@ list_or_partial_list(Ls) :-
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shorthands for throwing ISO errors.
The variants without context promote the use of
call_with_error_context/2.
The variants *with* context would not have been needed if
call_with_error_context/2 had been found earlier. In the future,
we may be able to remove them.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
instantiation_error :-
throw(error(instantiation_error, [])).
domain_error(Type, Term) :-
throw(error(domain_error(Type, Term), [])).
type_error(Type, Term) :-
throw(error(type_error(Type, Term), [])).
instantiation_error(Context) :-
throw(error(instantiation_error, Context)).