How to unquote in GIMP Scheme -
i never used other implementations gimp's script-fu, , quite new gimp's scheme, too. so, maybe i'm wrong. however, followings not work in script-fu console:
(define x 13) (define s 'x) ; or (define s `x) ,s => error: eval: unbound variable: unquote
similarly
(unquote s) => error: eval: unbound variable: unquote
it seems me, "," planned work unquote has not been implemented. if so, how can solve following problem?
(define x 13) (define y 7) ; define procedure swap x , y (define (swap) (let ((t 0)) (set! t ,'x) (set! x ,'y) (set! y t) ) )
this should run multiple times, (set! t x)... not work.
your swap
function work as:
(define (swap) (let ((t 0)) (set! t x) (set! x y) (set! y t)))
because set!
syntactic keyword evaluates arguments specially. first argument (t
in first set!
expression in swap
above) not evaluated; rather used identify location. second argument (x
) evaluated and, in case, returns value held in location referenced identifier (x
).
the syntactic keyword define
works similarly. first argument not evaluated; used create new location; second argument evaluated. so, example, unquote
not needed use:
(define s x)
if trying define s
returns current value of x
rather value bound x
when s
allocated, make s
function:
(define (s) x)
then expression (s)
return whatever x
bound to.
Comments
Post a Comment