Scheme by-reference-by-reference

Cam*_*Cam 9 scheme pass-by-reference return-by-reference r6rs

如何通过方案中的引用传递变量?

我想要的功能的一个例子:

(define foo
  (lambda (&x)
    (set! x 5)))

(define y 2)

(foo y)

(display y) ;outputs: 5
Run Code Online (Sandbox Code Playgroud)

另外,有没有办法通过引用返回?

小智 10

请参阅http://community.schemewiki.org/?scheme-faq-language问题"有没有办法模拟按引用调用?".

一般来说,我认为与计划的功能性斗争,所以可能有更好的方法来构建程序,使其更像计划.

  • 这是使用框模拟"by-reference"参数的一个很好的参考 - 并注意使用`box`,`unbox`和`set-box!`的结果非常接近于在C中使用显式指针. ,很少使用这样的东西,但它*在某些情况下可能有用 - Scheme鼓励函数式编程并阻止变异,但它没有一些基本的反对意见.(但在大多数情况下,这样做的新手代码很可能需要重新思考.) (6认同)