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: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: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: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: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: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: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: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: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:79b3a249bcb0524d44ff3feffae0c86a
Created December 3, 2016 03:27
common lisp 的函数 FILL
语法
fill sequence item &key start end => sequence
参数和值
sequence --- 一个属性序列
item --- 一个序列
start, end --- 序列范围指示符, 默认 start 为0, end 为 nil
描述
用 item 替换掉从 start 到 end 的元素
@zhouqiang-cl
zhouqiang-cl / gist:3f8bc3998264c02c0e927ec977fb8e9f
Created December 3, 2016 02:37
common lisp 的访问器 ELT
语法
elt sequence index => object
(setf (elt sequence index) new-object)
参数和值
sequence --- 一个属性序列
index --- 属性序列的 index
object --- 一个 object
new-object --- 一个 object