Go to file
Brian Picciano 6257495fe4 Implement all builtins required to get fib working
Getting `recur` to work required adding an Operation argument to a bunch
of places in a really hacky way. I don't like it at all, but I'm also
kind of out of mental energy to figure it out properly. The fibonacci
demo in the README _works_, at least, though I don't think it's actually
tail recursive.
2021-12-30 15:10:25 -07:00
gg Reverse order of args in ValueOut, TupleOut, and AddValueIn 2021-12-30 11:38:36 -07:00
graph Implement graph.MapReduce 2021-12-30 13:59:31 -07:00
sandbox rename Junction to Tuple, update syntax, rename Null to ZeroGraph 2021-08-26 21:26:24 -06:00
vm Implement all builtins required to get fib working 2021-12-30 15:10:25 -07:00
.gitignore gitignore 2016-08-07 09:06:36 -06:00
default.nix Make graph generic 2021-12-29 12:32:53 -07:00
go.mod Make graph generic 2021-12-29 12:32:53 -07:00
go.sum make into a module 2021-08-26 21:27:47 -06:00
README.md Implement all builtins required to get fib working 2021-12-30 15:10:25 -07:00

Ginger

Fibonacci function in ginger:

fib = {

    decr = { out = add < (in; -1;); };

    out = {

        n = tupEl < (in; 0;);
        a = tupEl < (in; 1;);
        b = tupEl < (in; 2;);

        out = if < (
            zero? < n;
            a;
            recur < (
                decr < n;
                b;
                add < (a;b;);
            );
        );

    } < (in; 0; 1;);
};

Usage of the function to generate the 6th fibonnaci number:

fib < 5;

Development

Current efforts on ginger are focused on a golang-based virtual machine, which will then be used to bootstrap the language. go >=1.18 is required for this vm.

If you are on a linux-amd64 machine with nix installed, you can run:

nix-shell -A shell

from the repo root and you will be dropped into a shell with all dependencies (including the correct go version) in your PATH, ready to use. This could probably be expanded to other OSs/architectures easily, if you care to do so please check out the default.nix file and submit a PR!