2010-11-18 29 views
2

是否有任何方式,通過該本人可以定義函數my_listmy_consmy_append執行類似的功能list,分別consappend實現基本庫函數(手動地)

否則我可以在哪裏找到這些函數的實現?

感謝

回答

2

對於my_list和my_append,該解決方案是:

(defun my_list (&rest arguments) 
    `(,@arguments) 
) 

(defun my_append (a_list an_item) 
    `(,@a_list ,an_item) 
) 

(my_append (my_list 'a 'b 'c) 'd) 

我可能錯了,但我不知道任何替代方法來做成對,所以替代利弊似乎不可能。儘管如此,我對LISP世界還很陌生。

+0

你能提供一個關於代碼如何工作的簡單解釋:請參考 – 2010-11-18 14:24:39

+0

''這意味着你將寫的下一個符號將不會被評估,這就是我們創建列表的方式。 這意味着必須評估下一個符號(只能在反引號之後使用) @從列表/對中移除項目以枚舉它們(只能在a之後使用) – 2010-11-18 14:26:22

+0

以及什麼是' ''''''''&'是參考嗎? – 2010-11-18 14:27:38

0

如果你想爲原生應用程序的onces,你必須先從一些原始構造一個缺點,可能是缺點或點,對你的列表是相同的,和一些拉除了細胞(汽車,cadr)。其他人可以從中建立。

如果你想重新實現的東西都是功能(雙關語意)等同,見http://en.wikipedia.org/wiki/Cons#Not_technically_fundamental

+0

這些是「計劃」的實施。我認爲common-lisp的實現會有所不同。 – 2010-11-18 14:01:49

+0

是的,但概念仍然適用 – 2010-11-18 14:15:06

+0

是的,但是你能告訴我如何在不使用'list'和'append'的情況下實現'cons'嗎?我認爲實施會更加困難。 – 2010-11-18 14:16:54