2016-12-26 34 views
-1

我写了这个函数,但我被告知我不能使用它内部的循环,我不知道如何修改它以删除循环。 有什么建议吗?LISP如何在不使用LOOP的情况下编写此函数

(defun function (P VariableValues) 
(let* ((M (mono P)) 
     (VariableNames (variables P)) 
     (VariableDict (loop for x in VariableNames for y in VariableValues collect (cons x y))) 
     (Valorizzati (mapcar (lambda (x) (applica-valori VariableDict x)) M)) 
    ) 
    (if Valorizzati 
     (+ (car Valorizzati) (recursive-sum (cdr Valorizzati))) 
    0))) 

回答

3

您可以使用该mapcar

(mapcar #'cons '(a b c) '(1 2 3)) 
;; ==> ((a . 1) (b . 2) (c . 3)) 
+0

谢谢你的回答,但我不能得到它的工作...任何想法? – user7337963

+0

@ user7337963当我编写答案时,我的代码工作。它应该适用于所有常见的lisp实现。它不适合你吗? – Sylwester

+0

如果我只是测试你提供的代码它工作正常,当我在我的函数中实现它时,它没有错误编译,但它在测试函数时给我一个错误 – user7337963

相关问题