init commit again
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
### Continuing
|
||||
|
||||
[
|
||||
Datatype continuing
|
||||
Funcon continued
|
||||
Funcon finalise-continuing
|
||||
Funcon continue
|
||||
Funcon handle-continue
|
||||
]
|
||||
|
||||
|
||||
Meta-variables
|
||||
T <: values
|
||||
|
||||
|
||||
Datatype
|
||||
continuing ::= continued
|
||||
/*
|
||||
`continued` is a reason for abrupt termination.
|
||||
*/
|
||||
|
||||
|
||||
Funcon
|
||||
finalise-continuing(X:=>T) : =>T|null-type
|
||||
~> finalise-abrupting(X)
|
||||
/*
|
||||
`finalise-continuing(X)` handles abrupt termination of `X` due to executing
|
||||
`continue`.
|
||||
*/
|
||||
|
||||
|
||||
Funcon
|
||||
continue : =>empty-type
|
||||
~> abrupt(continued)
|
||||
/*
|
||||
`continue` abruptly terminates all enclosing computations until it is handled.
|
||||
*/
|
||||
|
||||
|
||||
Funcon
|
||||
handle-continue(_:=>null-type) : =>null-type
|
||||
/*
|
||||
`handle-continue(X)` terminates normally when `X` terminates abruptly for the
|
||||
reason `continued`.
|
||||
*/
|
||||
Rule
|
||||
X --abrupted( )-> X'
|
||||
------------------------------------------------------
|
||||
handle-continue(X) --abrupted( )-> handle-continue(X')
|
||||
Rule
|
||||
X --abrupted(continued)-> _
|
||||
--------------------------------------------
|
||||
handle-continue(X) --abrupted( )-> null-value
|
||||
Rule
|
||||
X --abrupted(V:~continuing)-> X'
|
||||
------------------------------------------------------
|
||||
handle-continue(X) --abrupted(V)-> handle-continue(X')
|
||||
Rule
|
||||
handle-continue(null-value) ~> null-value
|
||||
Reference in New Issue
Block a user