aboutsummaryrefslogtreecommitdiff
path: root/src/builtins.c
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-20 18:12:25 +0800
committerMistivia <i@mistivia.com>2025-06-20 18:12:25 +0800
commit3cef9f993de2e0380c859d0e0ec88c07bfc3635f (patch)
tree7f98824d36d545ed90dd4adc34a3e3d2c7cfc1ff /src/builtins.c
parentad580b3401deb4a41ee3a8f17824d136ee5cf38d (diff)
finish function
Diffstat (limited to 'src/builtins.c')
-rw-r--r--src/builtins.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/builtins.c b/src/builtins.c
index ade9091..2ad3916 100644
--- a/src/builtins.c
+++ b/src/builtins.c
@@ -14,6 +14,14 @@ SExpRef builtin_car(Interp *interp, SExpRef args) {
return CAR(CAR(args));
}
+SExpRef builtin_show(Interp *interp, SExpRef args) {
+ if (lisp_length(interp, args) != 1) {
+ return new_error(interp, "show wrong argument number.\n");
+ }
+ lisp_print(interp, CAR(args), stdout);
+ return NIL;
+}
+
SExpRef builtin_cdr(Interp *interp, SExpRef args) {
if (lisp_length(interp, args) != 1) {
return new_error(interp, "cdr: wrong argument number.\n");
@@ -51,8 +59,7 @@ static SExp raw_sub(SExp a, SExp b) {
else result -= b.integer;
return (SExp){ .type = kRealSExp, .real = result };
} else {
- int64_t result;
- return (SExp){ .type = kIntegerSExp, .real = a.integer - b.integer};
+ return (SExp){ .type = kIntegerSExp, .integer= a.integer - b.integer};
}
}