increment
编程语言中的decrement
和scheme
运算符是什么。
我正在使用" Dr.Racket"并且它不接受-1+
和1+
作为运算符。
而且,我也尝试了incf
和decf
,但没有用。
答案 0 :(得分:6)
您对“DrRacket”的引用有点暗示您在使用Racket。根据{{3}},您可能已经在有效地使用#lang racket
。无论哪种方式,您可能都在寻找this和sub1
。
-> (add1 3)
4
-> (sub1 3)
2
答案 1 :(得分:5)
由于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
请注意,这些是语法扩展(a.k.a.宏)而不是普通过程,因为Scheme不通过引用传递参数。
答案 2 :(得分:1)
运算符1+和-1+执行/不执行/变异,因为MIT Scheme中的一个简单实验将显示:
1 ]=> (define a 3)
;Value: a
1 ]=> (1+ a)
;Value: 4
1 ]=> (-1+ a)
;Value: 2
1 ]=> a
;Value: 3
因此,您可以通过分别评估(+ arg 1)和( - arg 1)来实现自己的函数或这些函数的语法扩展。
答案 3 :(得分:0)
很容易自己定义这些简单的函数。
;; Use: (increment x)
;; Before: x is a number
;; Value: x+1
(define (increment x)
(+ 1 x)
)