Skip to content

Instantly share code, notes, and snippets.

@zhouqiang-cl
Created December 7, 2016 08:46
Show Gist options
  • Save zhouqiang-cl/b80c19d3c726987c79fe91724039ecea to your computer and use it in GitHub Desktop.
Save zhouqiang-cl/b80c19d3c726987c79fe91724039ecea to your computer and use it in GitHub Desktop.
common lisp 的宏 DEFPARAMETER, DEFVAR
语法
defparameter name initial-value [documentation] => name
defvar name [initial-value [documentation]] => name
参数和值
name --- 一个 symbol, 不会被求值
initial-value --- 一个 form, 如果在 defparameter 中, 会被求值. 如果在 defvar 中,只有在 name 没有被绑定的时候被求值.
documentation --- 一个 string, 不会被求值
描述
defparameter 和 defvar 将 name 变成动态变量.
defparameter 无条件的将 initial-value 的值赋给 name.
defvar 只有在 name 没有绑定的时候把 initial-value 的值赋给 name.
如果 initial-value 没有被提供, 如果 name 之前被绑定了,那它继续是之前的值. 如果没有被绑定, 那仍然没有被绑定
如果 documentation 提供了, 则doc string有了。
代码
* (defparameter *p* 1)
*P*
* (setq *p* 2)
2
* (defvar *v* 1)
*V*
* *v*
1
* *p*
2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment