[Experimental] Non-reentrancy special form #362
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a proof of concept of an experimental feature for pact 5, which is module level non-reentrancy.
Syntax
For some syntactic term
k
,(non-reentrant k)
Semantics
For any term
k
(in this example,(m::foo 1)
) written within a modulefoo
's definition (defcap, defun, defpact), e.g:(non-reentrant k)
guarantees thatk
does not call back intofoo
during evaluation ofk
.PR checklist:
Additionally, please justify why you should or should not do the following: