With apologies to ML:
iteration :: setpoint -> system-state -> system-state
iteration sp sys = let
control-output = control (sp, sys.control-state, sys.dynamic-state)
control-state' = fst control-output
control-signal = snd control-output