Skip to content

Instantly share code, notes, and snippets.

import ceylon.collection {
ArrayList,
Stack
}
shared abstract class ComplexTrampoline<Type>()
of ComplexReturn<Type> | ComplexCall<Type> {
shared formal Type result;
}
/* Usage Example:
Whole fibonacci(Whole n) {
Trampoline<Whole> fibonacciHelper(Whole n) {
if (n==zero || n==one) {
return Return(n);
} else {
return Call<Whole>(() => fibonacciHelper(n - one), [[fibonacciHelper(n - two), Whole.plus]]);
}
}