schemeoperatorsracketincrementdecrement

Increment and Decrement operators in scheme programming language


What are the increment and decrement operators in scheme programming language. I am using "Dr.Racket" and it is not accepting -1+ and 1+ as operators. And, I have also tried incf and decf, but no use.


Solution

  • They are not defined as such since Scheme and Racket try to avoid mutation; but you can easily define them yourself:

    (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)))))
    

    then

    > (define v 0)
    > (incf v)
    1
    > v
    1
    > (decf v 2)
    -1
    > v
    -1
    

    Note that these are syntactic extensions (a.k.a. macros) rather than plain procedures because Scheme does not pass parameters by reference.