Lisp - 映射函数



映射函数是一组可以依次应用于一个或多个元素列表的函数。将这些函数应用于列表的结果将放置在一个新的列表中,并返回该新列表。

例如,mapcar 函数处理一个或多个列表的连续元素。

mapcar 函数的第一个参数应该是函数,其余参数是要应用函数的列表。

参数函数应用于连续元素,从而生成一个新构造的列表。如果参数列表长度不相等,则在到达最短列表的末尾时映射过程停止。生成的列表将与最短输入列表具有相同数量的元素。

示例

让我们从一个简单的示例开始,并将数字 1 添加到列表 (23 34 45 56 67 78 89) 中的每个元素。

创建一个名为 main.lisp 的新源代码文件,并在其中键入以下代码。

main.lisp

; apply mapping of addition of 1 to each argument
(write (mapcar '1+  '(23 34 45 56 67 78 89)))

输出

执行代码时,它将返回以下结果:

(24 35 46 57 68 79 90)

示例

让我们编写一个函数,该函数将对列表中的元素进行立方运算。让我们使用 lambda 函数来计算数字的立方。

更新名为 main.lisp 的源代码文件,并在其中键入以下代码。

main.lisp

; define a function to apply mapping of qubing each element of the passed list
(defun cubeMylist(lst)
   (mapcar #'(lambda(x) (* x x x)) lst)
)
; print the result of function cubeMylist
(write (cubeMylist '(2 3 4 5 6 7 8 9)))

输出

执行代码时,它将返回以下结果:

(8 27 64 125 216 343 512 729)

示例

更新名为 main.lisp 的源代码文件,并在其中键入以下代码。

main.lisp

; apply addition of each element of first list
; to corresponding element of second list
; result will be restricted to size of smaller list
(write (mapcar '+ '(1 3 5 7 9 11 13) '( 2 4 6 8)))

输出

执行代码时,它将返回以下结果:

(3 7 11 15)
lisp_functions.htm
广告