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

unk*_*ror 6 scheme increment operators decrement racket

编程语言中有哪些incrementdecrement运算符scheme.我使用的是"Dr.Racket",它不接受-1+1+作为运营商.而且,我也尝试过incfdecf,但没有用.

use*_*lpa 6

它们并不是这样定义的,因为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)))))
Run Code Online (Sandbox Code Playgroud)

然后

> (define v 0)
> (incf v)
1
> v
1
> (decf v 2)
-1
> v
-1
Run Code Online (Sandbox Code Playgroud)

请注意,这些是语法扩展(也称为宏)而不是普通过程,因为Scheme不通过引用传递参数.


Mic*_*ott 6

您对"DrRacket"的引用有点暗示您在Racket中.根据这个,你可能已经有效利用#lang racket.无论哪种方式,你可能都在寻找add1sub1.

-> (add1 3)
4
-> (sub1 3)
2
Run Code Online (Sandbox Code Playgroud)