cross On Foot
Waits for a turn, crosses guide-path space on foot, and steps off the other side.
The whole of a pedestrian's part in a crossing, in one verb, because the three steps have to happen together: joining the queue, stepping on once the crossing's arbiter opens a turn, and -- above all -- stepping off. A walker that steps on and does not step off leaves a population behind that no vehicle can pass, which is the error the construct exists to make unlikely, so the verb does not offer the halves separately.
Does not suspend at all when a turn is already open and the arbiter admits: the walker steps on in the instant it arrives, waits crossingTime, and steps off.
Whether the walker waits, and for how long, is the ZoneCrossing's arbiter's business, not this verb's -- which is the point of the arbiter being substitutable. The walk itself is a plain delay: the crossing is space, not a server.
inner class Pedestrian : Entity() {
val walk = process {
crossOnFoot(crossing, crossingTime, crossingQ)
}
}Parameters
the crossing to use
how long this walker takes to get across, strictly positive
where to wait for a turn
orders this walker against others queued at the same instant
names this suspension point when a process has several