// An implementation of the factorial function where each recursive // call is to another contract. Not the cheapest way to compute factorial. contract FactorialServer = entrypoint fac : (int) => int contract Factorial = record state = {worker : FactorialServer} entrypoint init(worker) = {worker = worker} stateful entrypoint set_worker(worker) = put(state{worker = worker}) entrypoint fac(x : int) : int = if(x == 0) 1 else x * state.worker.fac(x - 1)