procedure main() stddev() # reset state / empty every s := stddev(![2,4,4,4,5,5,7,9]) do write("stddev (so far) := ",s) end procedure stddev(x) # running standard deviation static X,sumX,sum2X if /x then { # reset state X := [] sumX := sum2X := 0. } else { # accumulate put(X,x) sumX +:= x sum2X +:= x^2 return sqrt( (sum2X / *X) - (sumX / *X)^2 ) } end