Add printl, car, cdr builtins

This commit is contained in:
2022-11-04 22:22:08 -04:00
parent 2527c34ddf
commit a5ef5c9fa0
3 changed files with 13 additions and 3 deletions

View File

@@ -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) {

View File

@@ -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

View File

@@ -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)