|
1
25
对于词法范围,用户无法访问不在当前范围内的变量。也不能将词法变量直接传递给其他函数。Lisp计算变量并传递绑定到这些变量的值。没有什么比对变量的一级引用更好的了。 想想功能!
上面返回两个函数。一个可以读取变量,另一个可以写入变量。
因此,要执行您想要的操作,代码需要a)位于作用域中,或者b)可以访问作用域中的函数。 变量也可以是全局变量
这适用于由符号表示的全局变量。它不适用于词汇变量-这些变量不由符号表示。
还有一个宏
但是
这里可以看到极限 :
|
|
|
2
11
然后你可以使用它:
|
|
|
3
10
而公共口齿不清 支持 一种函数式编程风格,这不是它的主要关注点(Scheme虽然不是纯函数式的,但更接近)。CommonLisp非常好地支持完全命令式的编程风格。
这允许您编写如下代码:
将扩展为:
在编译之前。 |
|
|
4
1
|
|
|
5
0
我认为你错过了函数式编程的一个关键概念——你不应该在对象被创建后改变它们的状态。通过引用更改某些内容违反了这一点。 |
|
|
6
0
通过使用返回值可以产生类似的效果,这在Lisp中是一种可能的设计模式,即使它不是通过引用传递变量。 这样地:
|
|
|
7
-3
SBCL
|
|
|
kflak · 如何在公共lisp中将函数传递给宏 2 年前 |
|
|
Denes Cselovszki · 在宏定义中使用读取器宏字符 2 年前 |
|
|
7stud · 为什么是传单和封页? 2 年前 |
|
|
Vinn · DB中的HTML未注入hunchentoot路由 3 年前 |
|
|
ptb · Slime\Emacs comint在启动mpi进程时挂起 8 年前 |
|
|
Alexandru Popa · SBCL中奇怪的宏扩展错误 8 年前 |
|
|
MadPhysicist · 公共Lisp未定义分派字符 8 年前 |