gpt4 book ai didi

lisp - 从 lisp 中的列表列表中获取元素

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

我是 lisp 的初学者。我操纵列表列表:((name1, second) (name2, second2))

我的函数的目标是获取列表中第一个节点为名称的第二个元素。

例如:我的列表是:((name1, second1) (name2, second2))getelement list name1 应该返回 second1。

(defun getelement (list name)
(if (eq list '())
(if (string= (caar list) name)
(car (car (cdr list)))
(getelement (cdr list) name)
)
()
)
)

但是我得到了这个错误。我真的不明白我的代码发生了什么。我试着把 ' 放在表达式之前...

Error: The variable LIST is unbound.
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by IF.
Backtrace: IF

最佳答案

  1. if 子句的顺序错误。
  2. 当字符串匹配时,您将使用下一个元素 (cdr) 而不是那个匹配元素 (car)

这应该有效:

(defun getelement (list name)
(if (eq list '()) ;end of list,...
'() ;return empty list
(if (string= (caar list) name) ;matches,
(car (car list)) ;take the matching element
(getelement (cdr list) name))))

关于lisp - 从 lisp 中的列表列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30406174/

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