gpt4 book ai didi

common-lisp - 在 apply mapcar 中使用 `cons`

转载 作者:行者123 更新时间:2023-12-04 03:06:33 26 4
gpt4 key购买 nike

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

(defun transpose (L) (apply #'mapcar (cons #'list L)))

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

我想知道是否有任何理由,除了强制新的 Lisp 学生记住和理解 cons 的用法之外,而不是简单地写

(defun transpose (L) (apply #'mapcar #'list L))

因为 L 已经是一个列表(列(作为列表)),apply 会将 #'list 添加到 中的列表中code>L 在解压它们之前。

这还能再简化吗?我认为 apply 是解压参数以使用 mapcar 从行中创建列表所必需的,但我是函数式编程的新手。

谢谢!

最佳答案

Lisp Koans 是由 Maclisp 程序员编写的,远早于 Common Lisp 存在。在 Maclisp 中,APPLY 只接受两个参数,一个函数和一个参数列表。 Common Lisp 概括了这一点,以允许您使用的语法。但在 Maclisp 中,您必须显式调用 CONSLIST*

关于common-lisp - 在 apply mapcar 中使用 `cons`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58035369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com