X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=scheme.4th;h=7fa85ac2e92786ad183b95721d6b3c6d3cf02a89;hb=a5871b187b34ca1eaf925658c1bc49a547593396;hp=9a2a3ca1779e9fab029a6b6ef80893a09e621795;hpb=ce188b101cbb79f55249d3eb6ff06e44ef065096;p=scheme.forth.jl.git diff --git a/scheme.4th b/scheme.4th index 9a2a3ca..7fa85ac 100644 --- a/scheme.4th +++ b/scheme.4th @@ -817,11 +817,23 @@ defer eval : definition? ( obj -- obj bool ) define-symbol tagged-list? ; +: make-lambda ( params body -- lambda-exp ) + lambda-symbol -2rot cons cons ; + : definition-var ( obj -- var ) - cdr car ; + cdr car + symbol-type istype? false = if car then +; : definition-val ( obj -- val ) - cdr cdr car ; + 2dup cdr car symbol-type istype? if + 2drop + cdr cdr car + else + cdr 2swap cdr cdr + make-lambda + then +; : assignment? ( obj -- obj bool ) set!-symbol tagged-list? ; @@ -940,7 +952,9 @@ defer eval endof compound-proc-type of - ." Compound procedures not yet implemented." + 2drop 2drop + ." Compound procedures not yet implemented." cr + ok-symbol endof bold fg red ." Object not applicable. Aboring." reset-term cr @@ -992,8 +1006,8 @@ defer eval then lambda? if - 2dup lambda-body - 2swap lambda-parameters + 2dup lambda-parameters + 2swap lambda-body 2rot make-procedure exit then