sophia/test/contracts/factorial.aes
2018-12-22 01:23:40 +01:00

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)