X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=src%2Fscheme-primitives.4th;h=f94701f743c2d21222167450094cc8f6a4b8a7e2;hb=899e3f7a10cbb8ecd03aa2dfe3ad08bf4638a324;hp=1e37e0d5bd3e20451ff21e355a72b730abfab3da;hpb=5c89ece636005a3008eb27a80b0c805b4d0e4c84;p=scheme.forth.jl.git diff --git a/src/scheme-primitives.4th b/src/scheme-primitives.4th index 1e37e0d..f94701f 100644 --- a/src/scheme-primitives.4th +++ b/src/scheme-primitives.4th @@ -280,6 +280,13 @@ drop swap drop f> boolean-type ; 2 make-fa-primitive flo:> +:noname ( flonum flonum -- bool ) + drop swap drop f<= boolean-type +; 2 make-fa-primitive flo:<= + +:noname ( flonum flonum -- bool ) + drop swap drop f>= boolean-type +; 2 make-fa-primitive flo:>= :noname ( flonum -- bool ) drop 0.0 = boolean-type @@ -594,12 +601,22 @@ defer display :noname ( args -- result ) 2dup car 2swap cdr - + nil? false = if car then ( proc argvals ) - - apply + + 2swap apply ; make-primitive apply +: make-continuation + \ TODO: Capture parameter and return stacks in continuation +; + +:noname ( args -- result ) + make-continuation nil cons + 2swap apply + +; 1 make-fa-primitive call-with-current-continuation + \ }}} \ ==== Miscellaneous ==== {{{ @@ -611,12 +628,15 @@ defer display nil? if ." Error." else - ." Error: " - - begin - 2dup car print - cdr nil? - until + ." Error:" + + 2dup car space display + cdr nil? invert if + begin + 2dup car space print + cdr nil? + until + then 2drop then