Common Lisp笔记(2)
2016-03-23 21:14
281 查看
Common Lisp 创建变量
Common Lisp 是动态类型的,类型错误会被动态的检测到。Common Lisp 是强类型的,因为所有的类型错误都将被检测到,无法将一个对象作为其不属于的类型的实例对待。
Common Lisp 中所有的值都是对象的引用。因此,将一个变量赋予新值会改变该变量所指向的队形,而对之前引用的对象没有影响。
let操作符引入新变量
形式:
(let (variable*) body-form*)
最后一个 variable 求值被返回。
其中 * 代表可以有多个 variable。每个 variable都是变量初始化形式,省略为 nil。
例如:
(let (a 1) (b 2) c)
let 内部可以重新用 let 进行绑定,其作用范围类似于c等其他语言。
变量类型
Common Lisp 支持两种变量类型,词法变量 (lexical)和动态变量(dynamic),分别对应其他语言的局部变量和全局变量
创建全局变量
关键词 defvar 和 defparameter
两种形式都接受一个变量名,一个初始值以及一个可选的文档字符串。
全局变量的命名一般以 * 开头和结尾
例如:
(defvar *num* 0 "the num is 0)
如果行重新定义这个变量,只要重新绑定它即可,如用 let
defvar 和 defparameter的区别
defparameter 总是将初始值赋值给变量,而 defvar 只有当变量未定义时这样做。
defvar 可以不带初始值使用,这种变量称为未绑定的 unbound
定义全局变量的优势
全局变量优势在于不必到处传递他们,多种语言的标准输入输出都是用的全局变量就是处于这个原因。
相关文章推荐
- 用Python编写一个简单的Lisp解释器的教程
- Windows下Lisp环境配置
- 生活在REPL中,工具与程序一体
- 我以为的函数式编程
- 在Ubuntu12.04上的Common Lisp开发环境配置
- OSX 10.09上的common lisp环境搭建
- 创造者的鉴赏力[转]
- 你需要掌握的三种编程语言
- Common Lisp 学习书目
- Beginning of Learning LISP.
- Begining Of Learning LISP (2)
- 毕业三年,新目标
- The hundred-year language - Paul Graham
- C++之路
- CCL(Clozure Common Lisp)环境搭建
- Python中的lambda介绍
- 学会开放性的思维
- Blog开张首记!
- on-lisp要点(一)
- 中国Ruby好荒凉啊........支持Ruby