X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=scheme.4th;h=1953cf98cf0ec004d9bbbe7c4a54acc96b93d4f6;hb=dc6e0cea1e1e982da8029c94d78ee66ab7e8fd82;hp=52ce34625049b8521453aefadd27548d56d06578;hpb=46a8d1c9a93efc50d4da538cba460faa1b29d602;p=scheme.forth.jl.git diff --git a/scheme.4th b/scheme.4th index 52ce346..1953cf9 100644 --- a/scheme.4th +++ b/scheme.4th @@ -277,41 +277,26 @@ global-env setobj global-env fetchobj define-var ; -( = Arithmeic = ) - -: add-prim ( args -- ) - 2dup nil objeq? if - 2drop - 0 fixnum-type - else - 2dup car drop - -rot cdr recurse drop - + fixnum-type - then +: arg-count-error + bold fg red ." Incorrect argument count." reset-term cr + abort ; -' add-prim make-primitive + -:noname ( args -- ) - 2dup nil objeq? if - 2drop - 0 fixnum-type +: ensure-arg-count ( args n -- ) + dup 0= if + drop nil objeq? false = if + arg-count-error + then else - 2dup car drop - -rot cdr add-prim drop - - fixnum-type + -rot 2dup nil objeq? if + arg-count-error + then + + cdr rot 1- recurse then -; make-primitive - +; -:noname ( args -- ) - 2dup nil objeq? if - 2drop - 1 fixnum-type - else - 2dup car drop - -rot cdr recurse drop - * fixnum-type - then -; make-primitive * +include scheme-primitives.4th \ }}}