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