export function lazy(f: () => A): () => A { let tmp: A | undefined let done = false return () => { if (done) { return tmp! } tmp = f() done = true return tmp! } }