计划编程语言中的递增和递减运算符

时间:2014-06-15 10:20:24

标签: scheme operators racket increment decrement

increment编程语言中的decrementscheme运算符是什么。 我正在使用" Dr.Racket"并且它不接受-1+1+作为运算符。 而且,我也尝试了incfdecf,但没有用。

4 个答案:

答案 0 :(得分:6)

您对“DrRacket”的引用有点暗示您在使用Racket。根据{{​​3}},您可能已经在有效地使用#lang racket。无论哪种方式,您可能都在寻找thissub1

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