Practical Common Lisp学习笔记(五)常用函数宏备忘3

本文详细介绍了Common Lisp中的实用函数和宏,包括数学运算(如FLOOR、CEILING)、序列操作(如VECTOR-PUSH、REMOVE-DUPLICATES)、向量与字符串处理、排序与合并、序列映射及列表处理等,旨在帮助开发者更好地理解和运用这些工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初等数学
FLOOR函数     向负无穷方向截断,返回小于或等于实参的最大整数      P105
CEILING函数     向正无穷方向截断,返回大于或等于参数的最小整数     P105
TRUNCATE函数     向零截断,对于正实参而言,它等价于FLOOR,对于负实参则等价于CEILING     P105
MOD函数     两个实数截断相除得到的模     P105
REM函数     两个实数截断相除得到的余数     P105
1+函数     表示从一个数字增加一个的简化方式,返回一个新值     P106
1-函数     表示从一个数字减少一个的简化方式,返回一个新值      P106
INCF宏     接受两个数字类型的参数,第一个参数必须是变量,第一个变量根据第二个参数增加,如果只传入一个参数默认是一,修改参数的值     P106
DECF宏     接受两个数字类型的参数,第一个参数必须是变量,第一个变量根据第二个参数减少,如果只传入一个参数默认是一,修改参数的值     P106

数值比较
ZEROP函数     用来测试一个单一实数是否等于零     P106
MINUSP函数     用来测试一个单一实数是否小于零     P106
PLUSP函数     用来测试一个单一实数是否大于零     P106
EVENP谓词     用来测试单一整数参数是否为偶数     P106
ODDP谓词     用来测试单一整数参数是否为奇数     P106

高等数学参数

LOG,EXP,EXPT,SIN,COS,TAN,ASIN,ACOS,ATAN,SINH,COSH,TANH,ASINH,ACOSH,ATANH。     P107

字符
#\     字符读取语法(特定字符的代替语法#\后跟名字,space,newline,Tab,Page,rubout,linefeed,return,backspace)     P107
CHAR=函数     可以接受任意数量的实参并只在他们全部是相同字符时才返回真。     P107
CHAR_EQUAL函数     可以接受任意数量的实参并只在他们全部是相同字符时才返回真,大小写无关。     P107
数值相似物大小写相关大小写无关
CHAR=CHAR-EQUAL
/=CHAR/=CHAR-NOT-EQUAL
<CHAR<CHAR-LESSP
>CHAR>CHAR-GREATERP
<=CHAR<=CHAR-NOT-GREQTERP
>=CHAR>=CHAR-NOT-LESSP

字符串
“”字符串     P108
数值相似物大小写相关大小写无关
STRING=STRING-EQUAL
/=STRING/=STRING-NOT-EQUAL
<STRING<STRING-LESSP
>STRING>STRING-GREATERP
<=STRING<=STRING-NOT-GREQTERP
>=STRING>=STRING-NOT-LESSP

向量
VECTOR函数     生成含有特定值的定长向量,该函数接受任意数量的参数并返回一个新分配的含有那些参数的定长向量     P111
#(…)是用来使用向量的字面表示形式     P112
MAKE-ARRAY函数     用来创建任何维度的数组以及定长和变化的向量
1、创建定长向量,接受:initial-element参数可以不带,需指定长度     P112          
2、创建变长向量,接受:fill-pointer参数,需指定最大长度  P112   
3、创建变长向量,使用:adjustable,可任意变长     P113
4、使用:element-type指定向量的自类型    P113
P112
VECTOR-PUSH函数     向可变向量的尾部添加一个元素     P112
VECTOR-POP函数     返回最近推入的项,并在该过程中递减填充指针     P112
ADJUST-ARRAY函数     以超出扩展向量长度的多种方式来调整数组     P113
VECTOR-PUSH-EXTEND函数     向一个可调整的向量添加元素     P113

作为序列的向量
LENGTH函数     返回一个序列的长度     P114
ELT函数     允许通过一个整数索引来访问个别元素(支持SETF)     P114

序列迭代函数
P114
名称所需参数返回
COUNT项和序列序列中出现某项的次数
FIND项和序列项或NIL
POSITION项和序列序列中的索引或NIL
REMOVE项和序列项的实例被移除后的序列
SUBSTITUTE新项,项和序列项的实例被新项替换后的序列

参数含义默认值
:test两参数函数用来比较元素(或由:key函数解出的值)和项EQL
:key单参数函数用来从实际的序列元素中解出用于比较的关键字值NIL表示原样采用序列元素NIL
:start子序列的起始索引(含)0
:end子序列的终止索引(不含)。NIL表示到序列的结尾NIL
:count数字代表需要移除或替换的元素个数,NIL代表全部。(仅用于REMOVE和SUBSTITETE)NIL

高阶函数变体 
P116
一类,变体被命名为与基本函数相同的名字并带有一个追加-IF,这些函数用于计数,查找,移除以及替换序列中那些函数参数返回真元素。
另一类,变体以-IF-NOT后缀命名并计数,查找,移除以及替换参数不返回真的元素。
REMOVE-DUPLICATES函数     接受序列作为仅需的必要参数,并将其中每个重复的元素移除到只剩下一个实例

整个序列上的操作
COPY-SEQ函数     返回的序列包含与其参数相同的元素(新序列)     P117
REVERSE函数     返回的序列则含有顺序相反的相同元素(新序列)     P117
CONCATENATE函数 创建一个将任意数量序列连接在一起的新序列(第一个参数是类型描述符VECTOR,LIST,STRING)     P117

排序与合并
SORT函数     接受一个序列和一个由两个实参组成的谓词,返回该序列排序后的版本,只保证结果是已排序的并可能重排等价元素(有破坏性了,接受:key)     P118
STABLE-SORT函数            接受一个序列和一个由两个实参组成的谓词,返回该序列排序后的版本,只保证不会重排任何被谓词视为等价的元素。(有破坏性,接受:key)     P118
MERGE函数     接受两个序列和一个谓词,并返回按照该谓词合并这两个序列所产生的序列,第一个参数是类型描述符,也接受:key     P118

子序列操作
SUBSEQ函数     解出序列中从一个索引开始并延续到一个特定的索引终止或结尾的子序列(支持SETF)     P118
FILL函数     将一个序列的多个元素设置到单个值上,接受:start :end将效果限制在一个给定的自序列上     P119
SEARCH函数     与POSITION函数相似不过第一个参数是一个序列不是单独的项     P119
MISMATCH函数     返回两个序列第一对不匹配的元素索引,接受:key :test :start1 :end1 :start2 :end2 :from-end     P119

序列谓词
EVERY函数     在谓词失败时返回假,如果谓词总被满足返回真。     P119
SOME函数     返回由谓词所返回的第一个非NIL值      P119
NOTANY函数     将在谓词满足时返回假      P119
NOTEVERY函数     在谓词失败时返回真      P119

序列映射函数
MAP函数     接受一个n-参数函数和n个序列,MAP返回新序列,它由那些将函数应用在序列的相继元素上所得到的结果组成。需告知序列类型。     P120
MAP-INTO函数     不产生给定类型的新序列,而是将结果放置在一个作为第一个参数传递的序列中,如果长度不同只影响与最短序列元素数量相当的那些元素,其中也包括那个将被映射到序列。     P120
REDUCE函数     映射在单个序列上,先将一个两参数函数应用到序列的最初两个元素上,再将函数返回值和序列后续元素继续用于该函数。接受关键字参数(:key :from-end :start :end ,REDUCE专用的:intial-value)     P120

哈希表
MAKE-HASH-TABLE函数     创建一个哈希表,其认定两个键等价,并且仅当它们在EQL的意义上是相同的对象。(:test,只能是EQ,EQL,EQUAL,EQUALP)     P121
GETHASH函数提供了对哈希表元素的访问     P121
MULTIPLE-VALUE-BIND宏     利用多重返回值     P121
REMHASH函数     移除一个键值     P122
CLRHASH函数     完全清除哈希表中的所有键值     P122

哈希迭代
MAPHSH函数     在哈希表的每一个键值对上调用一次该函数     P122

列表处理
CONS函数     创建点对单元     P123
CAR函数     获得单对单元第一个,支持SETF     P124
CDR函数     获得单对单元第二个,支持SETF     P124
LIST函数     创建链表     P125
函数名字中的N含义是non-consing一般具有副作用的函数     P128
NCONC函数     是APPEND的回收性版本     P128
DELETE族是REMOVE族的回收性版本

列表处理函数
FIRST函数     第一个元素(SECOND到TENTH)     P131
REST函数     除了第一个元素的所有元素     P131
CAR/CDR系列函数     放在C和R中间的每一个A代表CAR,每一个D代表CDR     P131
NTH函数     接受一个索引一个列表并返回列表中第n个(从0开始)元素,(类似的NTHCDR,返回这个元素的CDR操作结果)
函数描述
LAST返回列表的最后一个点对单元,带有一个整数参数时,返回最后n哥点对单元
BUTLAST返回列表的一个副本,最后一个点对单元除外。带有一个整数参数时,排除最后n个单元
NBUTLASTBUTLAST的回收性版本。可能修改并返回其参数列表但缺少可靠的副作用
LDIFF返回列表知道某个给定点对单元副本
TAILP返回真,如果给定对象是作为列表一部分的点对单元
LIST*构造一个列表来保存除最后一个参数外的所有参数,然后让最后一个参数成为这个列表最后一个节点
的CDR。换句话说,它组合了LIST和APPEND
MAKE-LIST构造一个n项的列表。该列表的初试元素是NIL或者通过:initial-element关键字参数所指定的值
REVAPPENDREVERSE和APPEND组合。像REVERSE那样求逆第一个参数,再将其追加到第二个参数上
NRECONCREVAPPEND的回收性版本。像NREVERSE那样求逆第一个参数,再将其追加到第二个参数上。没有可靠的副作用
CONSP用来测试一个对象是否为点对单元谓词
ATOM用来测试一个对象是否不是点对单元的谓词
LISTP用来测试一个对象是否为点对单元或NIL谓词
NULL用来测试一个对象是否为NIL的谓词。功能上等价于NOT但在测试空列表而非希尔假时问文体上推荐使用

映射
MAPCAR函数     与每个点对单元中的第一个元素映射
MAPLIST函数     与每个点对单元映射
MAPCAN函数     与MAPCAR相似破坏性版本
MAPCON函数     与MAPLIST相似破坏性版本
MAPC函数     只返回第一个列表实参,当映射函数的副作用有用时才有用与MAPCAR/MAPCAN类似
MAPL函数     只返回第一个列表实参,当映射函数的副作用有用时才有用MAPLIST、MAPCON类似 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值