它们并不是这样定义的,因为Scheme和Racket试图避免变异; 但您可以自己轻松定义它们:
(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)))))
然后
> (define v 0)
> (incf v)
1
> v
1
> (decf v 2)
-1
> v
-1
请注意,这些是语法扩展(也称为宏)而不是普通过程,因为Scheme不通过引用传递参数.
您对"DrRacket"的引用有点暗示您在Racket中.根据这个,你可能已经有效利用#lang racket.无论哪种方式,你可能都在寻找add1和sub1.
-> (add1 3)
4
-> (sub1 3)
2