diff --git a/src/builtins.c b/src/builtins.c index ac29223..3e64b28 100644 --- a/src/builtins.c +++ b/src/builtins.c @@ -160,6 +160,13 @@ LISP_FUNC_1(ucl_builtin_print, state, arg0) { return ucl_nil_create(); } +LISP_FUNC_1(ucl_builtin_printl, state, arg0) { + ucl_print_obj(arg0); + printf("\n"); + + return ucl_nil_create(); +} + struct ucl_object *ucl_builtin_list(struct ucl_state *state, struct ucl_object *args) { struct ucl_object *head = ucl_nil_create(); FOREACH_LIST(args, iter, item) { diff --git a/src/builtins.h b/src/builtins.h index f51ae7c..d762363 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -19,7 +19,10 @@ struct ucl_object *ucl_builtin_concat(struct ucl_state *state, struct ucl_object struct ucl_object *ucl_builtin_now_millis_mono(struct ucl_state *state, struct ucl_object *args); +struct ucl_object *ucl_builtin_car(struct ucl_state *state, struct ucl_object *args); +struct ucl_object *ucl_builtin_cdr(struct ucl_state *state, struct ucl_object *args); struct ucl_object *ucl_builtin_list(struct ucl_state *state, struct ucl_object *args); struct ucl_object *ucl_builtin_print(struct ucl_state *state, struct ucl_object *args); +struct ucl_object *ucl_builtin_printl(struct ucl_state *state, struct ucl_object *args); #endif diff --git a/src/main.c b/src/main.c index ae62bb6..f1827a2 100644 --- a/src/main.c +++ b/src/main.c @@ -25,9 +25,9 @@ int main(int argc, const char **argv) { // - iteration ucl_state_put(state, "print", ucl_builtin_create(ucl_builtin_print)); + ucl_state_put(state, "printl", ucl_builtin_create(ucl_builtin_printl)); ucl_state_put(state, "list", ucl_builtin_create(ucl_builtin_list)); // TODO: - // - print with newline // - object -> string // - formatted printing? @@ -47,12 +47,12 @@ int main(int argc, const char **argv) { ucl_state_put(state, "string-p", ucl_builtin_create(ucl_builtin_string_p)); ucl_state_put(state, "int-p", ucl_builtin_create(ucl_builtin_int_p)); ucl_state_put(state, "list-p", ucl_builtin_create(ucl_builtin_list_p)); + ucl_state_put(state, "car", ucl_builtin_create(ucl_builtin_car)); + ucl_state_put(state, "cdr", ucl_builtin_create(ucl_builtin_cdr)); // TODO: // - equality // - map // - reduce - // - car - // - cdr // - nth // - booleans (e.g. not)