编程语言中有哪些increment
和decrement
运算符scheme
.我使用的是"Dr.Racket",它不接受-1+
和1+
作为运营商.而且,我也尝试过incf
和decf
,但没有用.
它们并不是这样定义的,因为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