
* Support for CREATE, CLONE and BYTECODE_HASH * Add missing files * Pushed the clone example through the typechecker * CLONE compiles * Fix dependent type in CLONE * Bytecode hash fixes * Refactor * Refactor 2 * move some logic away * Fixed some error messages. Type inference of child contract still does some random shit\n(mistakes arguments with result type) * CREATE sometimes compiles and sometimes not * Fix some scoping/constraint issues * works, needs cleanup * cleanup * Fix some tests. Remove optimization of singleton tuples * Fix default argument for clone * Cleanup * CHANGELOG * Mention void type * Address review, fix some dialyzer errors * Please dialyzer * Fix failing tests * Write negative tests * Docs * TOC * missing 'the' * missing 'the' * missing 'the' * missing 'the' * mention pre-fund * format * pre-fund clarification * format * Grammar in docs
18 lines
489 B
Plaintext
18 lines
489 B
Plaintext
// An implementation of the factorial function where each recursive
|
|
// call is to another contract. Not the cheapest way to compute factorial.
|
|
contract interface 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 : int => int
|
|
fac(0) = 1
|
|
fac(x) = x * state.worker.fac(x - 1)
|