From 423027cda03f0bea2e919c273063bd1f7c367ad4 Mon Sep 17 00:00:00 2001 From: Chuck Smith Date: Mon, 22 Jan 2024 20:52:58 -0500 Subject: [PATCH] examples --- examples/demo.monkey | 43 +++++++++++++++++++++++++++++++++++++++++++ examples/fib.monkey | 11 +++++++++++ examples/fibt.monkey | 11 +++++++++++ 3 files changed, 65 insertions(+) create mode 100644 examples/demo.monkey create mode 100644 examples/fib.monkey create mode 100644 examples/fibt.monkey diff --git a/examples/demo.monkey b/examples/demo.monkey new file mode 100644 index 0000000..bab5ec5 --- /dev/null +++ b/examples/demo.monkey @@ -0,0 +1,43 @@ +let name = "Monkey"; +let age = 1; +let inspirations = ["Scheme", "Lisp", "JavaScript", "Clojure"]; +let book = { + "title": "Writing A Compiler In Go", + "author": "Thorsten Ball", + "prequel": "Writing An Interpreter In Go" +}; + +let printBookName = fn(book) { + let title = book["title"]; + let author = book["author"]; + puts(author + " - " + title); +}; + +printBookName(book); + +let fibonacci = fn(x) { + if (x == 0) { + 0 + } else { + if (x == 1) { + return 1; + } else { + fibonacci(x - 1) + fibonacci(x - 2); + } + } +}; + +let map = fn(arr, f) { + let iter = fn(arr, accumulated) { + if (len(arr) == 0) { + accumulated + } else { + iter(rest(arr), push(accumulated, f(first(arr)))); + } + }; + + iter(arr, []); +}; + +let numbers = [1, 1 + 1, 4 - 1, 2 * 2, 2 + 3, 12 / 2]; +map(numbers, fibonacci); \ No newline at end of file diff --git a/examples/fib.monkey b/examples/fib.monkey new file mode 100644 index 0000000..f1f654f --- /dev/null +++ b/examples/fib.monkey @@ -0,0 +1,11 @@ +let fib = fn(x) { + if (x == 0) { + return 0 + } + if (x == 1) { + return 1 + } + return fib(x-1) + fib(x-2) +} + +puts(fib(35)) \ No newline at end of file diff --git a/examples/fibt.monkey b/examples/fibt.monkey new file mode 100644 index 0000000..fc5b8fb --- /dev/null +++ b/examples/fibt.monkey @@ -0,0 +1,11 @@ +let fib = fn(n, a, b) { + if (n == 0) { + return a + } + if (n == 1) { + return b + } + return fib(n - 1, b, a + b) +} + +puts(fib(35, 0, 1)) \ No newline at end of file