我正在嘗試將一些Common Lisp代碼轉換爲Scheme代碼。 Common Lisp代碼有deftype
。 Scheme中的deftype
與Common Lisp中的deftype
相同嗎?如何將Common Lisp中的deftype
翻譯成Scheme中的等效代碼?Common Lisp和Scheme中deftype之間的區別
3
A
回答
1
Common Lisp deftype
沒有完全相同的Scheme。您必須手動翻譯類型定義,或者根據系統中可用的任何Scheme記錄庫編寫deftype
宏。
Bare Scheme根本沒有用戶定義的類型。在R5RS系統中,您必須查找相關的SRFI(例如SRFI-9 (Record types),SRFI-57 Records,SRFI-99 ERR5RS records),並查看您的特定Scheme系統實施的SRFI和語言擴展; Scheme系統在實現超出最小Scheme方案標準的任何東西時通常不是非常一致。 R6RS計劃有記錄in its standard library。
3
安東說,沒有確切的計劃等同於Common Lisp deftype
。請參閱CLHS:Type Specifiers以獲取有關Common Lisp中類型說明符的描述。這些用於聲明,數組類型規範,結構和CLOS插槽規範,泛型函數參數專用化等等。將此移植到Scheme通常將是一個巨大的挑戰。您最大的希望是deftype
定義的類型只能用於平凡(或根本不用!)。
相關問題
- 1. Clojure,Scheme/Racket和Common Lisp之間有什麼區別?
- 2. Emacs Lisp和Common Lisp之間的主要區別是什麼?
- 3. Scheme或Common Lisp?
- 4. Scheme vs Common Lisp
- 5. Scheme和Common Lisp之間的實際區別是什麼? (或Lisp的任何其他兩種方言)
- 6. let *和set之間的區別?在Common Lisp
- 7. postgresql-common和postgresql-contrib之間的區別
- 8. 將Common Lisp的代碼轉換爲Scheme
- 9. 服務器端的Common Lisp或Scheme?
- 10. Lisp和Scheme中的WebSockets庫?
- 11. Lisp中1和'1之間有什麼區別?
- 12. Common Lisp中的eq,eql,equal和equalp有什麼區別?
- 13. Common Lisp中的原子和符號有什麼區別?
- 14. Lisp的源代碼美化(Common Lisp,Scheme,Clojure)
- 15. Common Lisp中「flet」和「labels」有什麼區別?
- 16. common lisp和emacs
- 17. FUNCALL和#'function-name in common lisp有什麼區別?
- 18. Scheme/Common Lisp/Clojure中的自動差異庫
- 19. 在Scheme中是否有Common Lisp的* print-circle *等價物?
- 20. Scheme或Common Lisp中的牛頓平方根法
- 21. asdf building和Common Lisp
- 22. Common Lisp中
- 23. 與Common Lisp中
- 24. lisp加號和減號之間的區別
- 25. Emacs Lisp:(function(lambda ...))和(lambda ...)之間的區別?
- 26. Common Lisp:列表和數組之間的轉換
- 27. 的#ifndef Common Lisp中
- 28. Common Lisp a Lisp-n?
- 29. Lisp:'nil和nil之間是否有區別?
- 30. 之間的〜/和的區別../
你在想'defstruct'嗎? – 2009-08-08 00:34:11
我沒有考慮任何具體的事情。如果您只需要簡單的記錄類型,則可以在半小時內將基於數組的記錄放入宏中。 – 2009-08-08 07:22:30