emacs中闭包的使用
来源:互联网 发布:淘宝助理初始化40% 编辑:程序博客网 时间:2024/05/20 06:42
* emacs中的closure
1. 首先要打开lexical-binding变量
(setq lexical-binding t)
2. 测试程序
(let ((lst '(1 2 3 4 5 6 7 8 9)))
(setq get1 (lambda ()
(let ((x (car lst)))
(setq lst (cdr lst))
x)
)))
(funcall get1)
=> 1
(funcall get1)
=> 2
3. 对于闭包的理解
定义:Peter J. Landin 在1964年将术语 闭包 定义为一种包含 环境成分
和 控制成分的实体,用于在他的SECD 机器上对表达式求值。
对于闭包的理解,如果一个函数被定义在一个词法变量的域内,那么它就
能继续引用那个变量,即使这个函数作为值返回到了创建这个变量的上下
文之外。
当一个函数引用在它之外的一个变量时,这个变量就叫做自由变量。而引
用这个自由词法变量的函数叫做闭包。只要这个函数存在,这个变量就必
须存在。
这和c语言中的局部静态变量非常类似
1. 首先要打开lexical-binding变量
(setq lexical-binding t)
2. 测试程序
(let ((lst '(1 2 3 4 5 6 7 8 9)))
(setq get1 (lambda ()
(let ((x (car lst)))
(setq lst (cdr lst))
x)
)))
(funcall get1)
=> 1
(funcall get1)
=> 2
3. 对于闭包的理解
定义:Peter J. Landin 在1964年将术语 闭包 定义为一种包含 环境成分
和 控制成分的实体,用于在他的SECD 机器上对表达式求值。
对于闭包的理解,如果一个函数被定义在一个词法变量的域内,那么它就
能继续引用那个变量,即使这个函数作为值返回到了创建这个变量的上下
文之外。
当一个函数引用在它之外的一个变量时,这个变量就叫做自由变量。而引
用这个自由词法变量的函数叫做闭包。只要这个函数存在,这个变量就必
须存在。
这和c语言中的局部静态变量非常类似
- emacs中闭包的使用
- emacs中闭包的使用
- emacs的使用
- Emacs编辑器的使用
- emacs Mew的使用
- emacs的使用
- emacs-23.2的使用
- emacs + cscope 的使用
- Emacs的使用
- emacs的简单使用
- emacs 工具的学习使用
- 初学者使用Emacs的难点
- Emacs的使用和配置
- 初学者使用Emacs的难点
- 使用prelude的 emacs配置
- 常使用的Emacs命令
- emacs中markmode的使用
- emacs 使用
- DB2 常用命令小结(2)
- 程序员面试题精选100题(50)-树的子结构.
- uboot系列之-----板级初始化(源码)
- android开发基础--ProgressBar/SeekBar控件
- Redis主从复制
- emacs中闭包的使用
- Linux:find命令使用
- SL Controller
- POJ 3225 Help with Intervals 线段树 成段更新
- diamond sudoku
- Linux:后台命令crontab、at
- 如何编程实现开启或者关闭GPS
- 我的成长我的域名见证
- 读取XML.config asp.net