Scheme 参数传入方案

Scheme 参数传入方案,scheme,parameter-passing,Scheme,Parameter Passing,有人能帮我理解Scheme中的各种参数传递模式吗?我知道Scheme实现了按值传递参数。但是其他模式呢 是否有关于在Scheme中传递参数的好文档?Scheme只有按值调用函数调用。还有其他可以在该语言中实现的替代方法,但是如果您是初学者,那么此时最好不要尝试它们。如果您正在寻找一种“通过引用”传递值的方法,那么有一种方法可以实现这一点,那就是使用宏,但您确实不应该这样做。相反,一些方案实现(如PLT方案)提供了一个“框值”:这是一种容器,使用方式如下: 使用(box) 使用(unbox) 您

有人能帮我理解Scheme中的各种参数传递模式吗?我知道Scheme实现了按值传递参数。但是其他模式呢

是否有关于在Scheme中传递参数的好文档?

Scheme只有按值调用函数调用。还有其他可以在该语言中实现的替代方法,但是如果您是初学者,那么此时最好不要尝试它们。如果您正在寻找一种“通过引用”传递值的方法,那么有一种方法可以实现这一点,那就是使用宏,但您确实不应该这样做。相反,一些方案实现(如PLT方案)提供了一个“框值”:这是一种容器,使用方式如下:

  • 使用
    (box)
  • 使用
    (unbox)
  • 您可以使用
    (设置框!)
考虑到这两种情况,您可以“按值”使用此类长方体对象,但它们的内容实际上是一个引用。这与C非常相似,在C中,所有值(实际上大多数)都是通过值传递的,但其中一些值可以是指针,您可以对其进行修改。顺便说一句,最好避免这些:在Scheme中,函数式编程是更常见的选择,因此最好从它开始

(一旦你能更流利地使用Scheme,并且如果你使用的Scheme具有足够的抽象性,那么你也可以学习如何模仿许多备选方案。)

要添加更多

四种基本的参数传递约定是按值调用、按引用调用、按名称调用和按需要调用。Scheme作为一种“主要功能性”语言,依赖于按值调用;变量一旦创建,通常不会更改。其他三个约定非常相似,您仍然可以在Scheme中通过在框中传递值(使用box和unbox)来实现这些约定,框充当指向值的指针

一般来说,如果您发现需要在函数中使用引用调用,您可能应该重新考虑如何实现该函数,并使其完全功能化。使用
set创建变量后修改变量是一种“副作用”,通常在函数式编程中避免