我试图弄清楚映射命令的语法,比如onoremap
,在vim中.
特别是,我对手册中的这一行感到困惑,关于使用<C-U>
:
CTRL-U(
<C-U>
)用于删除Vim可能插入的范围.
有人可以解释一下吗?
在SICP的3.2.2节中执行以下代码
(define (square x)
(* x x))
(define (sum-of-squares x y)
(+ (square x) (square y)))
(define (f a)
(sum-of-squares (+ a 1) (* a 2)))
(f 5)
Run Code Online (Sandbox Code Playgroud)
根据该图解释.
每次应用函数时,都会创建一个新帧(标记为E1
through E4
),表示符号和值之间的一组绑定.当符号未绑定在框架中时,将查询该框架的封闭环境以查找该特定符号的绑定.
该图的有趣之处在于标记的所有帧E
都包含在全局环境中.该文本解释说这是因为函数是在全局环境中定义的,但没有详细说明问题:
请注意,每个帧都由
square
指向全局环境创建,因为这是square
过程对象指示的环境.
相反,如果框架包含在调用函数的环境中,比如E3
包含在E2
其中E1
,那么它是否是动态作用域语言如何工作的有效模型?此外,图中的框架具有相同的"父"环境的方式是因为Scheme是词法范围的吗?