func simple_moving_average(period) { var list = [] var sum = 0 func (number) { list.append(number) sum += number if (list.len > period) { sum -= list.shift } (sum / list.length) } } var ma3 = simple_moving_average(3) var ma5 = simple_moving_average(5) for num (1..5, flip(1..5)) { printf("Next number = %d, SMA_3 = %.3f, SMA_5 = %.1f\n", num, ma3.call(num), ma5.call(num)) }