35 lines
929 B
Plaintext
35 lines
929 B
Plaintext
|
|
|||
|
sort
|
|||
|
CardinalDirection = struct north | east | south | west;
|
|||
|
|
|||
|
%-----------------------------------------------------------------------------
|
|||
|
sort
|
|||
|
Colour = struct red | green | yellow;
|
|||
|
|
|||
|
%Definition Farbliche Reihenfolge
|
|||
|
|
|||
|
map
|
|||
|
nextColour: Colour -> Colour;
|
|||
|
|
|||
|
eqn
|
|||
|
nextColour(red) = green;
|
|||
|
nextColour(green) = yellow;
|
|||
|
nextColour(yellow) = red;
|
|||
|
|
|||
|
%------------------------------------------------------------------------------
|
|||
|
act
|
|||
|
show : CardinalDirection # Colour;
|
|||
|
|
|||
|
proc
|
|||
|
TrafficLight(direction : CardinalDirection) = TF(direction, red);
|
|||
|
|
|||
|
TF(direction : CardinalDirection, colour : Colour) =
|
|||
|
show(direction, colour) . %zeige aktuellen Zustand
|
|||
|
TF(direction, nextColour(colour)) %zum n<>chsten Zustand wechseln
|
|||
|
;
|
|||
|
|
|||
|
%-----------------------------------------------------------------------------
|
|||
|
%Initialisation der seperaten Ampeln
|
|||
|
init
|
|||
|
TrafficLight(north) || TrafficLight(east) || TrafficLight(south) || TrafficLight(west)
|
|||
|
;
|