streaming.mean.generator = function() { total = 0 n = 0 function(value) { total <<- total + value n <<- n + 1 } } stream1 = streaming.mean.generator() stream1(3) stream1(7) stream1(1) mget(c("total", "n"), environment(stream1)) stream2 = streaming.mean.generator() stream3 = streaming.mean.generator() stream2(-1) stream2(-2) stream3(100) stream2(-10)