Add reduce

Broken
diff --git a/src/lisp/compiler.h b/src/lisp/compiler.h
index 6031fde..6a944e6 100644
--- a/src/lisp/compiler.h
+++ b/src/lisp/compiler.h
@@ -35,7 +35,7 @@
 		value_t (*def1)(value_t);
 		value_t (*def2)(value_t, value_t);
 		value_t (*def3)(value_t, value_t, value_t);
-		void *code_ptr;
+	void *code_ptr;
 		uintptr_t code_addr;
 	};
 
@@ -209,6 +209,14 @@
 bool load(struct environment *env, char *path);
 
 /**
+ * Load a file relative to another file.
+ * @param to The file to load relative to.
+ * @param name The name or relative path of the file to load.
+ * @param env The environment to load in.
+ */
+value_t load_relative(struct environment *env, char *to, value_t name);
+
+/**
  * Mark a file `path` as loaded in the environment. `path` will be expanded with
  * `readlink`. You can pass a temporary string here, memory will be allocated by
  * this function as needed.