Skip to content

Instantly share code, notes, and snippets.

View zhouqiang-cl's full-sized avatar
💧
It is time

zhouqiang zhouqiang-cl

💧
It is time
  • None
  • air
View GitHub Profile
@zhouqiang-cl
zhouqiang-cl / gist:bb936e5217d2e8ceb475c00748d168bc
Created December 3, 2016 04:42
common lisp 的函数 MAKE-SEQUENCE
语法
make-sequence result-type size &key initial-element => sequence
参数和值
result-type --- 序列的类型
size --- 一个正整数
initial-element --- 一个object
描述
返回一个result-type 类型的序列, 其大小为size, 每一个元素被初始化为 initial-element
@zhouqiang-cl
zhouqiang-cl / gist:578d8da8bff970a73f4ca3db7a045aac
Created December 3, 2016 08:28
common lisp 的访问器 SUBSEQ
语法
subseq sequence start &optional end => subsequence
(setf (subseq sequence start &optional end) new-subsequence)
参数和值
sequence --- 一个 sequence
start, end --- 边界描述符, end 默认为nil
subsequence --- 一个 sequence
new-subsequence --- 一个 sequence
@zhouqiang-cl
zhouqiang-cl / gist:32da46040bb30cfbca1c0a8d1910222c
Last active December 3, 2016 10:34
common lisp 的宏 PUSH 和 POP
语法
push item place => new-place-value
pop place => element
参数和值
item --- 一个 object
place --- 一个 place 对象
new-place-value --- 一个 list
描述
@zhouqiang-cl
zhouqiang-cl / gist:75396e75866f25c682b5ba6d3834928e
Last active December 3, 2016 16:29
common lisp 的readtable 概述
描述
readtable:lisp 的 reader 读取的代码所需要的语法信息都包含在一个叫 readtable 的对象中,
在其他的方面, readtable 包含了字符串等和语法类型的关联信息。
the current readtable: lisp允许有很多个readtable存在, 但同一时刻只允许一个readtable,
这个 readtable 就叫 current readtable。这个 readtable 会影响lisp reader 将表达式解析成对象
在动态环境中的 current readtable 是那个环境中的 *readtable* 的值.
the standard readtable: the standard readtable 和标准的语法一致, 要想修改或扩充标准的语法, 可以
copy 这个 readtable, 在上面进行修改等
@zhouqiang-cl
zhouqiang-cl / gist:525e7e3d022e6fc3583d23cd8629a230
Last active December 3, 2016 16:26
common lisp 中的readtable case 对lisp reader的影响
描述
current readtable 的 readtable 有以下几个 case 会影响 lisp reader
:upcase
当 readtable 的 case 为 upcase 时, 字符都会被转化成 uppercase
:downcase
当 readtable 的 case 为 downcase 时, 字符都会被转化成 lowercase
:preserve
所见即所得
:invert
     当这个 token 所有字符的 case 相同的时候, 会被转化成对立的case
@zhouqiang-cl
zhouqiang-cl / gist:cdd20414c2500d122472170351d571b7
Created December 4, 2016 02:12
common lisp 的函数 SET-SYNTAX-FROM-CHAR
语法
set-syntax-from-char to-char from-char &optional to-readtable from-readtable => t
参数和值
to-char --- 一个 char
from-char --- 一个 char
to-readtable --- 一个 readtable, 默认为 current readtable
rom-readtable --- 一个 readtable 指示符, 默认为 standard readtable
描述
@zhouqiang-cl
zhouqiang-cl / gist:d497ca97bc84cbc3be8b02f790e4a67b
Created December 4, 2016 02:26
common lisp 的函数 COPY-READTABLE
语法
copy-readtable &optional from-readtable to-readtable => readtable
参数和值
from-readtable --- 一个 readtable 指示符, 默认为 current readtable
to-readtable --- 一个 readtable 或 nil, 默认为 nil
readtable --- 如果 to-readtable 不为 nil, 则是to-readtable, 否则是一个新的readtable
描述
copy-readtable 拷贝 from-readtable, copy-readtable 同时还拷贝 readtable-case
@zhouqiang-cl
zhouqiang-cl / gist:733e321ade2c5efa6b554467a7a3ead0
Created December 4, 2016 04:23
common lisp 的访问器 GET
语法
get symbol indicator &optional default => value
(setf (get symbol indicator &optional default) new-value)
参数和值
symbol --- 一个 symbol
indicator --- 一个 object
default --- 一个 object, 默认为 nil
value --- 如果指明的属性存在, 则这个 object的属性是value, 否则, 是默认的属性
new-value --- 一个 object
@zhouqiang-cl
zhouqiang-cl / gist:6cf2867cb47c2c1b7f27dea9163eba9d
Last active December 4, 2016 04:29
common lisp 的访问器
描述
common lisp 的访问器在很多地方存在
如获取元素和列表的car,cdr
获取属性的get
获取位置的first, second...
@zhouqiang-cl
zhouqiang-cl / gist:762bb5c40d089fd3ca77a94881f3e2f7
Created December 4, 2016 06:17
common lisp 的函数 ENDP
语法
endp list => generalized-boolean
参数和值
list --- 一个 list
generalized-boolean --- 通用型 boolean
描述
如果 list 为空, 则返回 true, 否则返回 false