我最近寫更多的Lisp代碼。特別是需要一些數據的遞歸函數,並構建一個結果數據結構。有時候,除了用戶提供的數據之外,似乎還需要將兩個或三個信息傳遞給函數的下一個調用。讓我們打電話給這些累加器。什麼是包括參數,如功能累加器最佳做法?
組織這些接口到我的代碼的最佳方式是什麼?
目前,我做這樣的事情:
(defun foo (user1 user2 &optional acc1 acc2 acc3)
;; do something
(foo user1 user2 (cons x acc1) (cons y acc2) (cons z acc3)))
這個工程,我想它想的,但我很擔心,因爲我並不真的需要出示&可選參數編程。
3種方法我有點考慮:
有用戶被鼓勵使用立即調用擴展definiton的包裝功能。
在內部使用
labels
內部的一個函數,其簽名是簡潔的。剛開始使用循環和變量。不過,我寧願不要,因爲我想真正包裹我的頭遞歸。
謝謝你們!
謝謝。我有一些處理樹木的功能,所以我將它們轉換爲使用「標籤」。另一組函數只在列表中運行,所以我利用這個機會熟悉'loop'。 – 2010-02-19 20:12:07