0[2] (mapcar #'+ `(22 11 55) `(111 222 333)) (133 233 388) 0[2] (mapcar #'cdr `((22 11 55) (111 222 333))) ((11 55) (222 333)) 0[2] (apply #'append `((22 11 55) (111 222 333))) (22 11 55 111 222 333) 0[2]
mapcar用于以第二个参数为运算符或函数,执行第二个参数,这个函数所需要的参数来自于mapcar的第二个参数到最后一个参数,将后面参数中列表中的每项取出,然后分别运算,形成新的列表,意味着对每个列表中的每项都会执行一次mapcar的第二个参数规定的函数。
apply则以第二个参数为函数或运算符,将后面参数中的列表中的每项取出后,仅做为参数供函数运算,不形成新的列表
0[5] (defun myadd(v1 v2) (mapcar '+ v1 v2)) STYLE-WARNING: redefining COMMON-LISP-USER::MYADD in DEFUN MYADD 0[5] (mapcar `+ `(11 22) `(33 44)) (44 66)
0[5] (apply #'myadd `((11 22) (33 44))) (44 66) 0[5]
assoc相当于一种HASH操作,以参数为关键字,从列表中取出第一项元素,
* (defvar *mystudent* `((1 (liming 25)) (2 (wanghua 26)))) *MYSTUDENT* * *mystudent* ((1 (LIMING 25)) (2 (WANGHUA 26)))
* (assoc `1 *mystudent*) (1 (LIMING 25)) * (assoc `2 *mystudent*) (2 (WANGHUA 26))
注意 在LISP中最好 用TAB来分隔中文参数
* (defvar *mysts* `((男 (李明 29))(女 (王花 26))) ) *MYSTS* * *mysts* ((男 (李明 29)) (女 (王花 26))) * (assoc `男 *mysts*) (男 (李明 29)) * (assoc `女 *mysts*) (女 (王花 26)) * (assoc `男 *mysts*) (男 (李明 29)) *
本文介绍了LISP编程中的三个关键函数:mapcar、apply和assoc。mapcar函数用于根据指定的函数对列表中的每一项进行操作,生成新的列表;apply函数将列表中的元素作为参数传递给指定函数,不产生新列表;assoc函数则根据关键字从列表中查找匹配项,类似于哈希操作。在LISP中,使用TAB字符来分隔中文参数是最佳实践。

2021

被折叠的 条评论
为什么被折叠?



