; This function will not change the value of x value.
; increment and decrement operators will change value of variable
;Valdegg@ Solution
(define (increment x)
(+ 1 x)
)
; defining a variable var with initial value 3
(define var 3)
(display (increment var)) (newline)
(display var) (newline)
;uselpa@ answer
(define-syntax incf
(syntax-rules ()
((_ x) (begin (set! x (+ x 1)) x))
((_ x n) (begin (set! x (+ x n)) x))))
(define-syntax decf
(syntax-rules ()
((_ x) (incf x -1))
((_ x n) (incf x (- n)))))
(display (incf var)) (newline)
(display var) (newline)
CjsgVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHggdmFsdWUuIAo7IGluY3JlbWVudCBhbmQgZGVjcmVtZW50IG9wZXJhdG9ycyB3aWxsIGNoYW5nZSB2YWx1ZSBvZiB2YXJpYWJsZQoKO1ZhbGRlZ2dAIFNvbHV0aW9uCihkZWZpbmUgKGluY3JlbWVudCB4KQogICgrIDEgeCkgCikKOyBkZWZpbmluZyBhIHZhcmlhYmxlIHZhciB3aXRoIGluaXRpYWwgdmFsdWUgMwooZGVmaW5lIHZhciAzKQooZGlzcGxheSAoaW5jcmVtZW50IHZhcikpIChuZXdsaW5lKQooZGlzcGxheSB2YXIpIChuZXdsaW5lKQoKO3VzZWxwYUAgYW5zd2VyCihkZWZpbmUtc3ludGF4IGluY2YKICAoc3ludGF4LXJ1bGVzICgpCiAgICAoKF8geCkgICAoYmVnaW4gKHNldCEgeCAoKyB4IDEpKSB4KSkKICAgICgoXyB4IG4pIChiZWdpbiAoc2V0ISB4ICgrIHggbikpIHgpKSkpCgooZGVmaW5lLXN5bnRheCBkZWNmCiAgKHN5bnRheC1ydWxlcyAoKQogICAgKChfIHgpICAgKGluY2YgeCAtMSkpCiAgICAoKF8geCBuKSAoaW5jZiB4ICgtIG4pKSkpKQogICAgCihkaXNwbGF5IChpbmNmIHZhcikpIChuZXdsaW5lKQooZGlzcGxheSB2YXIpIChuZXdsaW5lKQo=