Common lisp 在地图车内使用“cons”

Common lisp 在地图车内使用“cons”,common-lisp,Common Lisp,在Lisp Koans中,以下形式用于转置矩阵: (解除转置(L)(应用映射卡(cons列表L)) 当我解析这个函数时,(cons#'list L)返回一个列表”(#'list L1 L2 L3…,其中L#I是矩阵L的列。然后apply展开列表,现在mapcar list的参数是Las列表的列,它构成了L的行 我想知道除了强迫一个新的Lisp学生记住并理解cons的用法这一说教之外,还有什么理由不去简单地写作呢 (解除转置(L)(应用“地图车”列表L)) 由于L已经是一个列表(列(作为列表)),

在Lisp Koans中,以下形式用于转置矩阵:

(解除转置(L)(应用映射卡(cons列表L))

当我解析这个函数时,
(cons#'list L)
返回一个列表
”(#'list L1 L2 L3…
,其中
L#I
是矩阵
L
的列。然后
apply
展开列表,现在
mapcar list
的参数是
L
as列表的列,它构成了
L
的行

我想知道除了强迫一个新的Lisp学生记住并理解
cons
的用法这一说教之外,还有什么理由不去简单地写作呢

(解除转置(L)(应用“地图车”列表L))

由于
L
已经是一个列表(列(作为列表)),
apply
将在解压缩
L
中的列表前添加
#list

这可以简化吗?我认为有必要使用
apply
来解压参数,以便使用
mapcar
从行中创建列表,但我对函数式编程不熟悉


谢谢

早在通用Lisp存在之前,Lisp Koan就由Maclisp程序员编写。在Maclisp中,
APPLY
只接受了两个参数,一个函数和一组参数。Common Lisp对此进行了推广,以允许使用语法。但在Maclisp中,您必须显式地调用
CONS
LIST*