#!/usr/local/bin/swift func recall(_ f:@escaping (((T)->R),T)->R)->(T)->R { var r:((T)->R)! r = { n in f(r,n) } return r } let fact = recall { $1 <= 1 ? 1 : $1 * $0($1-1) } if i % 15 == 0 { print("FizzBuzz"); } else if i % 5 == 0 { print("Buzz") } else if i % 3 == 0 { print("Fizz") } else { print(i) } }