gpt4 book ai didi

list - 用有限的程序实现列表(lisp)

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:59 25 4
gpt4 key购买 nike

我目前正在处理一项制作基本地址簿的 clisp 作业。然而,这个作业的警告是我只能使用 cons、car、cdr、cond、if、eq、assoc 和 setf 来完成作业...

我很早就决定简单地实现我自己的列表并附加程序来简化流程,但这并不是特别有效。坦率地说,我不知道如何仅使用上述过程生成非点式列表。

这是我正在尝试做的事情:

(defun create-entry (name email phone-number address)
(list (cons 'name name)
(cons 'email email)
(cons 'phone-number phone-number)
(cons 'address address)))

显然我不能在这里使用列表,到目前为止我唯一的解决方案是使用名称和电子邮件,使用电话号码和使用地址,这不是我正在寻找的。

TL;DR 有没有办法只使用 cons、car、cdr、cond、if、eq、assoc 和 setf 来实现列表过程。

最佳答案

列表只是一堆 cons 单元格,一个接一个地链接在一起,nil 作为最后一个 cdr。因此,您可以像这样实现您的 create-entry 函数:

(defun create-entry (name email phone-number address)
(cons (cons 'name name)
(cons (cons 'email email)
(cons (cons 'phone-number phone-number)
(cons (cons 'address address)
nil)))))

或者,您可以像这样实现您自己的 list 函数版本:

(defun your-own-list (&rest l) l)

(defun create-entry (name email phone-number address)
(your-own-list
(cons 'name name)
(cons 'email email)
(cons 'phone-number phone-number)
(cons 'address address)))

但这感觉好像违背了作业的精神。

关于list - 用有限的程序实现列表(lisp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16096320/

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