我目前正在尝试学习 lisp 并在 linux 上使用 emacs。尽我所能,我写了两个函数。
这两个函数首先删除列表的第一个元素。
series
添加给定列表中的所有元素。parallel
1) 取列表中每个数字的倒数,然后 2) 将列表中的所有元素相加,然后 3) 取元素总和的倒数。
代码:
(defun series (lst)
(apply #'+' (cdr lst)) )
(defun parallel (lst)
(/ 1 (apply #'+' (apply #'/' (cdr 'lst ) ) ) ))
我可以评估该功能,但是当我尝试使用该功能时,如下所示:
(series (list 3 3 4 5))
我收到错误:值 CDR 不是预期的 NUMBER 类型。 我看到了这一点,我想,为什么 emacs 将 cdr 视为一个数字而不是一个函数?我是 lisp 和 emacs 的新手,所以我不知道如何修复这个错误。任何帮助,将不胜感激。
更新
我在这段代码中有问题,我认为它有效......
(defun series (lst)
(apply #'+ (cdr lst) ))
(defun parallel(lst)
(/ 1 (apply #'+ (mapcar #'/ (make-list (- (length lst) 1) :initial-element 1) (cdr lst) ) )))
希望我现在尝试做的事情得到理解。