0
A
回答
2
這些是一個讀取時間條件化設施:#+
和#-
讓您根據Feature Expressions根據read
決定什麼表達式。
例如,
#+:allegro (require :osi)
#+:sbcl (require :sb-executable)
意味着allegro
下運行時,該模塊:osi
將被加載,但sbcl
下運行時,該模塊:sb-executable
將由require
被加載。
在所有其他實施中require
根本不會被調用,因爲read
將跳過表單。
您可以檢查不只是實現的名字,而是一個特定的功能,例如,
#+(<= (integer-length most-positive-fixnum) 32)
code for a 32-bit lisp
#+(> (integer-length most-positive-fixnum) 32)
code for a 64-bit lisp
除了根據具體的情況選擇的代碼,這使人們可以輕鬆地「註釋掉」你的代碼段(即,下一SEXP):
#+(or) (this code will be skipped over by any lisp reader
because (or) returns nil)
1
這是基於該列表特徵上讀者宏,這個宏指示來執行的形式或不如果符號存在於特徵列表
顯示功能列表:
CL-USER> *features*
(:SWANK :QUICKLISP :QUICKLISP-SUPPORT-HTTPS :ROS.INIT :ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-MACOSX :OS-UNIX :ASDF-UNICODE :PRIMARY-CLASSES :COMMON-LISP :OPENMCL :CCL :CCL-1.2 :CCL-1.3 :CCL-1.4 :CCL-1.5 :CCL-1.6 :CCL-1.7 :CCL-1.8 :CCL-1.9 :CCL-1.10 :CCL-1.11 :CLOZURE :CLOZURE-COMMON-LISP :ANSI-CL :UNIX :OPENMCL-UNICODE-STRINGS :IPV6 :OPENMCL-NATIVE-THREADS :OPENMCL-PARTIAL-MOP :MCL-COMMON-MOP-SUBSET :OPENMCL-MOP-2 :OPENMCL-PRIVATE-HASH-TABLES :STATIC-CONSES-SHOULD-WORK-WITH-EGC-IN-CCL :X86-64 :X86_64 :X86-TARGET :X86-HOST :X8664-TARGET :X8664-HOST :DARWIN-HOST :DARWIN-TARGET :DARWINX86-TARGET :DARWINX8664-TARGET :DARWINX8664-HOST :64-BIT-TARGET :64-BIT-HOST :DARWIN :LITTLE-ENDIAN-TARGET :LITTLE-ENDIAN-HOST)
在我來說,我是運行:
CL-USER> (lisp-implementation-type)
"Clozure Common Lisp"
CL-USER> (lisp-implementation-version)
"Version 1.11-r16635 (DarwinX8664)"
讓我們執行的形式,如果我使用CCL
CL-USER> #+CCL (1+ 1)
2
它的工作原理,因爲我的CCL上的功能列表
CL-USER> #-CCL (1+ 1)
; No value
這行的也工作,因爲我有CCL在功能列表
或者你能想到的oppsite,如果我不」只有執行,在格蘭功能列表
CL-USER> #-calimero (1+ 1)
2
你可以添加任何符號:單詞的功能列表,你也可以添加邏輯
讓我們執行,如果我在CCL上,並使用達爾文主機(即MAC OS X)
CL-USER> #+(and ccl darwin-host) (1+ 1)
相關問題
- 1. In Common Lisp什麼是印刷表示?
- 2. Common Lisp:什麼是#+零?
- 3. Emacs Lisp和Common Lisp之間的主要區別是什麼?
- 4. FUNCALL和#'function-name in common lisp有什麼區別?
- 5. (Random)in Common Lisp Not So Random?
- 6. common lisp和emacs
- 7. Common Lisp的包定義
- 8. 什麼| 5E |在Common Lisp中是什麼意思?
- 9. Common Lisp a Lisp-n?
- 10. asdf building和Common Lisp
- 11. 什麼是Lisp Cons Cell的定義?
- 12. Common Lisp可以做些什麼?
- 13. Common Lisp Binary Tree
- 14. Scheme vs Common Lisp
- 15. Common Lisp Timer
- 16. Common Lisp中的「functor中的非法參數」是什麼意思?
- 17. 什麼是python的argparse的common-lisp模擬?
- 18. 爲什麼是Common Lisp的Web程序的執行我不能
- 19. 與Common Lisp中
- 20. Common Lisp中
- 21. * in * ngFor in angular2中的含義是什麼?
- 22. Common Lisp的:包含字符串 「\ n」
- 23. 關於Common Lisp中
- 24. 的#ifndef Common Lisp中
- 25. Common-Lisp/Java互操作性的可能方法是什麼?
- 26. 什麼是一些推薦的Common Lisp Web服務器選項?
- 27. 什麼是Scheme默認對象的Common Lisp等價物?
- 28. Step Eval Common Lisp
- 29. Common Lisp流?
- 30. 規則Common Lisp中
http:// stackoverflow。com/q/29849954/124319 – coredump