ELisp编程二:Atom,Symbol,空格,注释

Atom

说明

在list中的不可分割的元素称为atom,比如前面一篇中的数字,单词,运算符号等。

一个list可以只有一个元素,或者一个元素都没有。Empty list写成 '(),这是一个特殊的list,因为它也同时算做一个atom.

array(数组)也是一个atom,但是可以被分成多个部分。

双引号括起来的字符串也是一个atom,它有个常叫的名字string.

(atom) 函数

该函数用来测试一个lisp object是否是一个symbol, 比如下面的'(f f) 不是atom

(atom '(f f))
nil



Symbol

说明

symbol是一个对象,拥有(唯一的)name,value,function和property list。有一些函数可以访问你这些属性,比如symbol_value.

当你定义一个变量的时候,其实是创建了一个symbol对象,然后将变量的值放到了这个symbol对象的value属性中。

详细可以参考该文(十分推荐):http://www.cppblog.com/kevinlynx/archive/2011/03/22/142462.html

判断是否是symbol

symbolp 函数判断lisp object是否是一个symbol


定义一个symbol

定义一个symbol,就是说明symbol会如何使用,都用defXXX宏来完成,主要有下面几个:

defvar, defconst定义全局的variable, variable是用list表达的symbol

defcusotm 定义自定义的variable

defun 定义一个symbol表示函数,将lambda表达式存储在symbol的function cell中
还有defsubst和defalias是定义函数的其他方式

defmacro定义了一个symbol表示宏,将创建的macro object存储在symbol的function cell中。


空格与换行

多余的空格会被自动去掉,换行符号只是用来便于人阅读的,也会被去掉。


注释

;开头代表注释

不过常用两个连续分号,比如我的.emacs文件中就有

;;------------------------------------------------------------------------------
;; Input method for Chinese
;;------------------------------------------------------------------------------
;;sudo apt-get install ibus-el
(require 'ibus)
(add-hook 'after-init-hook 'ibus-mode-on)




你可能感兴趣的:(编程,list,function,input,emacs)