You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for temporal contracts. The idea is described in this paper and a Racket implementation is here.
There are two parts. One is the guard/monitor interface and the second is the language/automaton.
We'll have to think about how the syntax fits into CoffeeScript but it should be something like this describing a sort function that is not re-entrant (can only be called after all previous calls to sort have returned) and cannot call cmp after sort has returned:
sort :: ([Pos], cmp : (Pos, Pos) -> Bool) -> [Pos]
where not ... call(sort, _) !ret(sort, _)*
call(sort, _)
and not ... ret(sort, _) ... call(cmp, _)
sort = (l, cmp) -> ...
Note that cmp : (Pos... is doing name binding and is not supposed to be an object contract. Will need to figure out an unambiguous naming syntax.
The text was updated successfully, but these errors were encountered:
Add support for temporal contracts. The idea is described in this paper and a Racket implementation is here.
There are two parts. One is the guard/monitor interface and the second is the language/automaton.
We'll have to think about how the syntax fits into CoffeeScript but it should be something like this describing a sort function that is not re-entrant (can only be called after all previous calls to sort have returned) and cannot call
cmp
after sort has returned:Note that
cmp : (Pos...
is doing name binding and is not supposed to be an object contract. Will need to figure out an unambiguous naming syntax.The text was updated successfully, but these errors were encountered: