#!/usr/local/bin/swift var r:(T->R)! r = { n in f(r,n) } return r } let fact = recall { $1 <= 1 ? 1 : $1 * $0($1-1) } for i in (0...20) { print(fact(i)) }