X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=src%2Fscheme.4th;h=cf3ddc5d2db655fe1d5ae6a3e98c63d7d9c626dd;hb=8d87c905d883a612eafa69cb69e808d36375490b;hp=bf3301d62632f4090bec85cac38325c9398a0d3d;hpb=bed7c8d700bc877790fb8a47774bb7fdcb655d03;p=scheme.forth.jl.git diff --git a/src/scheme.4th b/src/scheme.4th index bf3301d..cf3ddc5 100644 --- a/src/scheme.4th +++ b/src/scheme.4th @@ -458,7 +458,7 @@ variable read-line-buffer-offset nil? false = while 2over 2over first-frame - get-vars-vals-frame nil? false = if + get-vals-frame nil? false = if 2swap 2drop 2swap 2drop exit then @@ -475,7 +475,7 @@ objvar var \ Used only for error messages : lookup-var ( var env -- val ) 2over var obj! - get-vars-vals nil? if + get-vals nil? if except-message: ." tried to read unbound variable '" var obj@ print ." '." recoverable-exception throw then @@ -485,7 +485,8 @@ objvar var \ Used only for error messages : set-var ( var val env -- ) 2rot 2dup var obj! ( val env var ) - get-vars-vals nil? if + 2swap ( val var env ) + get-vals nil? if except-message: ." tried to set unbound variable '" var obj@ print ." '." recoverable-exception throw else @@ -497,15 +498,16 @@ hide var : define-var ( var val env -- ) first-frame ( var val frame ) - 2rot 2over 2over ( val frame var frame var ) + 2rot 2swap 2over 2over ( val var frame var frame ) get-vals-frame nil? if - 2drop ( val frame var ) - 2swap add-binding + 2drop + -2rot 2swap 2rot + add-binding else - ( val frame var vals ) + ( val var frame vals ) 2swap 2drop 2swap 2drop - cons + set-car! then ; @@ -1933,6 +1935,7 @@ parse-idx-stack parse-idx-sp ! except-message: ." tried to print object with unknown type." recoverable-exception throw ; is print +xxxx \ }}} \ ---- Garbage Collection ---- {{{