tisp

tiny lisp
git clone git://edryd.org/tisp
Log | Files | Refs | LICENSE

commit ea22406861db22b957757dd694b0f04debcf5de8
parent ab898691660f63ec16f66fe5047e2be0f4b3f54d
Author: Ed van Bruggen <edvb@uw.edu>
Date:   Tue,  6 Oct 2020 19:12:36 -0700

Capitalize void, bool, and pair type creators

Diffstat:
doc/tisp.1.md | 2+-
test.c | 4++--
tib/core.tsp | 8++++----
tib/doc.tsp | 9+++++----
tib/string.c | 4++--
tisp.c | 4++--
6 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/doc/tisp.1.md b/doc/tisp.1.md @@ -177,7 +177,7 @@ as the cdr. Can be chained together to create a list if ending with `nil`. Returns the given argument unevaluated. -#### void +#### Void Returns nothing. Used to insert a void type in a list or force a function not to return anything. diff --git a/test.c b/test.c @@ -102,12 +102,12 @@ char *tests[][2] = { { "(cdr (cdr (cons 1 (cons 2 3))))", "3" }, { "void", NULL }, - { "(void)", "#<void>" }, + { "(Void)", "#<void>" }, { "do", NULL }, { "(do (+ 1 2) (+ 2 2))", "4" }, { "(do (+ -4 8) (- 1 2) (* 80 0) (+ 39 -3))", "36" }, - { "(do (mod 80 2) (/ 4 2) (void))", "#<void>" }, + { "(do (mod 80 2) (/ 4 2) (Void))", "#<void>" }, { "eval", NULL }, { "(eval ''hey)", "hey" }, diff --git a/tib/core.tsp b/tib/core.tsp @@ -41,7 +41,7 @@ (def (void? x) (= (typeof x) "Void")) (def (nil? x) (= (typeof x) "Nil")) (def empty? nil?) -(def (integer? x) (= (typeof x) "Int")) +(def (integer? x) (= (typeof x) "Int")) ; TODO shorten type querry funcs ? (def (decimal? x) (= (typeof x) "Dec")) (def (ratio? x) (= (typeof x) "Ratio")) (def (string? x) (= (typeof x) "Str")) @@ -60,9 +60,9 @@ (def (rational? x) (or (integer? x) (ratio? x))) (def (number? x) (or (rational? x) (decimal? x))) -(def (bool x) (if x True Nil)) +(def (Bool x) (if x True Nil)) ; TODO handle string and sym -(def (pair x) +(def (Pair x) (cond ((rational? x) (cons (numerator x) @@ -71,7 +71,7 @@ (cons (integer (truncate x)) (- x (truncate x)))) ((or (void? x) (nil? x) (pair? x)) x) - (else (list x)))) + (else (cons x Nil)))) (defmacro (assert expr) `(unless ,expr diff --git a/tib/doc.tsp b/tib/doc.tsp @@ -11,9 +11,10 @@ (quote "(quote expr)" "return expression unevaluated") - (void - "(void)" - "return void type") + (Void + "(Void)" + "return nothing" + "used to insert a void type in a list or force a function not to return anything") (eval "(eval expr)" "evaluate expression, can be dangerous to use in practice") @@ -71,4 +72,4 @@ docstr) (lookup proc))) (lookup proc)) - (void)) + (Void)) diff --git a/tib/string.c b/tib/string.c @@ -41,12 +41,12 @@ val_string(Tsp st, Val args, MkFn mk_fn) case NONE: len += 5; ret = realloc(ret, len*sizeof(char)); - strcat(ret, "void"); + strcat(ret, "Void"); break; case NIL: len += 4; ret = realloc(ret, len*sizeof(char)); - strcat(ret, "nil"); + strcat(ret, "Nil"); break; case INTEGER: snprintf(s, 21, "%d", (int)v->v.n.num); diff --git a/tisp.c b/tisp.c @@ -860,7 +860,7 @@ prim_quote(Tsp st, Hash env, Val args) /* returns nothing */ static Val -prim_void(Tsp st, Hash env, Val args) +prim_Void(Tsp st, Hash env, Val args) { return st->none; } @@ -1148,7 +1148,7 @@ tisp_env_init(size_t cap) tsp_env_fn(cdr); tsp_env_fn(cons); tsp_env_fn(quote); - tsp_env_fn(void); + tsp_env_fn(Void); tsp_env_fn(eval); tsp_env_name_fn(=, eq); tsp_env_fn(cond);