以 2 个列表作为参数的 LISP 函数

LISP function that takes 2 lists as parameters

在过去 class 简要介绍过 LISP 之后,我决定先入为主并尝试学习 CLISP (reading Seibel's PCL chpt 5)。我的问题是关于编写一个将一组列表作为参数的函数。第一个列表是映射到第二个列表的一系列索引。我想传递一系列索引并让它 return 对应的元素。

到目前为止,这是我的代码大纲。我不确定我是否可以使用 nth 并将参数列表传递给它。我不确定 body-form 应该是什么样子。

sys-info: CLISP 2.49 Win7

(defun get-elements('(nth (x y z) '(a b c)) )  
  "takes a list of arguments that returns corresponding elements from a list."
  (format t "The elements at index ~d are: ~%" x y z)
  ((maybe indexes go here)'(elements go here?)) 

列表(x y z)是索引,数据列表(a b c)是一些任意元素的列表。评估作为数据传递给函数 get-elements。我的思路是否正确?

非常感谢 LISP 教育相关主题的提示和指示。

事后分析: 在 chpts 3-4 的 re-examination 之后,PCL 似乎对初学者来说有点难以企及(至少对我而言)。我能从书上输入代码,但我显然对语言的基本结构没有深入了解。在再次进行 PCL 之前,我可能会尝试对 Lisp 进行一些更温和的介绍。

我不太确定这是否是您要问的问题,但您可能想尝试一下:

(defun get-nth (index-list data-list)
  (mapcar (lambda (index)
            (nth index data-list))
          index-list))
(get-nth '(0 1 0 2 0 3) '(a b c d e f))
==> (A B A C A D)

请看

更温和地介绍 Lisp: