2016-12-26 33 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

相關問題