diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2021-01-02 19:24:13 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2021-01-02 19:24:13 +0300 |
commit | 0c32a26c9a43b2d45968b9ac59b8916c1d4092d1 (patch) | |
tree | ba7d6ef7f3749a42a6118c35996f2931aa4f83e2 /examples/fib.c | |
parent | 6b08e86c9a16bfac5a208a04926dcc66b861a096 (diff) | |
download | csx-0c32a26c9a43b2d45968b9ac59b8916c1d4092d1.tar csx-0c32a26c9a43b2d45968b9ac59b8916c1d4092d1.tar.xz csx-0c32a26c9a43b2d45968b9ac59b8916c1d4092d1.zip |
.
Diffstat (limited to 'examples/fib.c')
-rw-r--r-- | examples/fib.c | 50 |
1 files changed, 50 insertions, 0 deletions
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 <csx.h> +#include <stdio.h> + + +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; +} |