From 0c32a26c9a43b2d45968b9ac59b8916c1d4092d1 Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Sat, 2 Jan 2021 19:24:13 +0300 Subject: . --- examples/fib.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 examples/fib.c (limited to 'examples/fib.c') diff --git a/examples/fib.c b/examples/fib.c new file mode 100644 index 0000000..0c94673 --- /dev/null +++ b/examples/fib.c @@ -0,0 +1,50 @@ +#include +#include + + +static csx_list_fn *l; +static csx_num_fn *n; + +char *define; +char *fn; +char *pair; +char *head; +char *tail; +char *not; +char *csx_if; +char *inc; +char *sum; +char *diff; + +void process() +{ + char *fib = csx_name("fib"); + char *num = csx_name("num"); + csx_eval(l(define, fib, l(fn, l(num, 0), + l(csx_if, l(inc, num, n(2), 0), n(1), + l(sum, + l(fib, l(diff, num, n(1), 0), 0), + l(fib, l(diff, num, n(2), 0), 0), + 0), + 0), + 0), 0)); + printf("fib 6 = %d\n", *(int *)csx_eval(l(fib, n(6), 0))); +} + +int main() +{ + l = csx_list; + n = csx_num; + define = csx_name("define"); + fn = csx_name("fn"); + pair = csx_name("pair"); + head = csx_name("head"); + tail = csx_name("tail"); + not = csx_name("not"); + csx_if = csx_name("if"); + inc = csx_name("inc"); + sum = csx_name("sum"); + diff = csx_name("diff"); + process(); + return 0; +} -- cgit v1.2.3