Add flet1, flet, update reference
diff --git a/src/lisp/lib/std.c b/src/lisp/lib/std.c
index 0a203b5..935df1f 100644
--- a/src/lisp/lib/std.c
+++ b/src/lisp/lib/std.c
@@ -128,6 +128,16 @@
return (a >> 3) == (b >> 3) ? t : nil;
}
+#define LISP_PREDICATE(name) value_t l_##name(value_t v) { return name(v) ? t : nil; }
+
+LISP_PREDICATE(listp)
+LISP_PREDICATE(integerp)
+LISP_PREDICATE(symbolp)
+LISP_PREDICATE(closurep)
+LISP_PREDICATE(consp)
+
+#undef LISP_PREDICATE
+
struct error load_std(struct environment *env)
{
E_INIT();
@@ -147,6 +157,13 @@
add_c_function(env, "apply", l_apply, 2);
add_c_function(env, "nilp", l_nilp, 1);
+ add_c_function(env, "listp", l_listp, 1);
+ add_c_function(env, "integerp", l_integerp, 1);
+ add_c_function(env, "symbolp", l_symbolp, 1);
+ add_c_function(env, "closurep", l_closurep, 1);
+ add_c_function(env, "functionp", l_closurep, 1);
+ add_c_function(env, "consp", l_consp, 1);
+
add_c_function(env, "elt", l_elt, 2);
if (!load_library(env, "std"))
@@ -171,6 +188,7 @@
if (file_exists(path))
{
+ fprintf(stderr, "path: %s\n", path);
return load(env, path);
}
@@ -178,6 +196,7 @@
if (file_exists(path))
{
+ fprintf(stderr, "path: %s\n", path);
return load(env, path);
}
}