func avg(xs) { var acc = 0.0 var c = 0 for x in xs { c += 1 acc += x } acc / c } func sma(p) { var s = [] x => { if s.Length() >= p { s.RemoveAt(0) } s.Insert(s.Length(), x) avg(s) }; } var nums = Iterator.Concat(1.0..5.0, 5.0^-1.0..1.0) var sma3 = sma(3) var sma5 = sma(5) for n in nums { print("\(n)\t(sma3) \(sma3(n))\t(sma5) \(sma5(n))") }