60 lines
1.3 KiB
Plaintext
60 lines
1.3 KiB
Plaintext
### Interacting
|
|
|
|
#### Output
|
|
|
|
[
|
|
Entity standard-out
|
|
Funcon print
|
|
]
|
|
|
|
|
|
Entity
|
|
_ -- standard-out!(_:values*) -> _
|
|
/*
|
|
This entity represents the sequence of values output by a particular
|
|
transition, where the empty sequence `( )` represents the lack of output.
|
|
Composition of transitions concatenates their output sequences.
|
|
*/
|
|
|
|
|
|
Funcon
|
|
print(_:values*) : =>null-type
|
|
/*
|
|
`print(X*)` evaluates the arguments `X*` and emits the resulting sequence of
|
|
values on the standard-out channel. `print( )` has no effect.
|
|
*/
|
|
Rule
|
|
print(V*:values*) -- standard-out!(V*) -> null-value
|
|
|
|
|
|
#### Input
|
|
|
|
[
|
|
Entity standard-in
|
|
Funcon read
|
|
]
|
|
|
|
Entity
|
|
_ -- standard-in?(_:values*) -> _
|
|
/*
|
|
This entity represents the sequence of values input by a particular
|
|
transition, where the empty sequence `( )` represents that no values are
|
|
input. The value `null-value` represents the end of the input.
|
|
|
|
Composition of transitions concatenates their input sequences, except that
|
|
when the first sequence ends with `null-value`, the second seqeunce has to be
|
|
just `null-value`.
|
|
*/
|
|
|
|
|
|
Funcon
|
|
read : =>values
|
|
/*
|
|
`read` inputs a single value from the standard-in channel, and returns it.
|
|
If the end of the input has been reached, `read` fails.
|
|
*/
|
|
Rule
|
|
read -- standard-in?(V:~null-type) -> V
|
|
Rule
|
|
read -- standard-in?(null-value) -> fail
|