2009-10-02 7 views
14

मैं सामान्य लिस्प में लिखे गए ब्राउज़र आधारित एप्लिकेशन का मूल्यांकन/परीक्षण कर रहा हूं। ब्राउज़र आधारित इंटरफ़ेस के अलावा, सॉफ़्टवेयर 'CL-User>' REPL प्रॉम्प्ट के साथ 'श्रोता' विंडो प्रदान करता है।सामान्य लिस्प आरईपीएल प्रॉम्प्ट से परिभाषित कार्यों की सूची की जांच कैसे करें

मैं आरईपीएल प्रॉम्प्ट से कार्यों, प्रतीकों और संकुलों की सूची की जांच करना चाहता हूं। ताकि मैं आरईपीएल के माध्यम से सामने आने वाली फ्रंटएंड कार्यक्षमता को सह-संबद्ध कर सकूं।

Google खोज मेरे लिए व्यर्थ है क्योंकि यह ट्यूटोरियल और संसाधनों की ओर जाता है जो लिप चरण-दर-चरण सिखाते हैं।

किसी भी संकेत, आरईपीएल के माध्यम से राज्य की जांच करने पर पॉइंटर्स की सराहना की जाएगी।

उत्तर

8

आप नहीं जानते, तो आप के लिए क्या प्रतीकों देख रहे हैं, लेकिन जानें कि आप कौन से पैकेज खोजना चाहते हैं, आप केवल उन विशिष्ट पैकेजों से प्रतीकों को सूचीबद्ध करके खोज की मात्रा को कम कर सकते हैं:

(defun get-all-symbols (&optional package) 
    (let ((lst()) 
     (package (find-package package))) 
    (do-all-symbols (s lst) 
     (when (fboundp s) 
     (if package 
      (when (eql (symbol-package s) package) 
       (push s lst)) 
      (push s lst)))) 
    lst)) 

(get-all-symbols 'sb-thread) ; returns all the symbols in the SB-THREAD package

लाइन (get-all-symbols 'sb-thread) बस यही है।

आप प्रतीकों की किस प्रकार आप देख रहे हैं के बारे में एक विचार है, और उनके नाम पर कोई अनुमान ले जाना चाहते हैं, तो आप इस

(apropos-list "mapc-") ; returns (SB-KERNEL:MAPC-MEMBER-TYPE-MEMBERS SB-PROFILE::MAPC-ON-NAMED-FUNS) 
(apropos-list "map" 'cl) ; returns (MAP MAP-INTO MAPC MAPCAN MAPCAR MAPCON MAPHASH MAPL MAPLIST)

(apropos-list) रिटर्न सभी प्रतीकों जिसका नाम स्ट्रिंग कर सकते हैं आप पास करते हैं, और खोज के लिए एक वैकल्पिक पैकेज लेता है।

जहाँ तक पता लगाना उन सभी प्रतीकों करना क्या के रूप में, ठीक है, इस प्रयास करें: http://www.psg.com/~dlamkins/sl/chapter10.html

+0

आहा (apropos-list) डॉक्टर ने क्या आदेश दिया। लिंक के लिए भी धन्यवाद। –

4
(let ((lst()))              
    (do-all-symbols (s lst) 
    (when (fboundp s) (push s lst))) 
    lst) 

here से काफी अधिक लिया गया है।

+0

मैं पेज तुम यहाँ पोस्ट करने से पहले गूगल खोज के माध्यम से सुझाव पर भूमि किया था। लेकिन उपरोक्त को अपने आप को समझने में सक्षम नहीं था। क्रिस्टल स्पष्ट कोड के लिए धन्यवाद। –

6

सभी संकुल (डुह) को सूचीबद्ध करने के:

(list-all-packages) 

एक विशेष पैकेज से निर्यात कार्यों ढूंढने के लिए:

(loop for x being the external-symbol of "CL" when (fboundp x) collect x) 
+0

'प्रक्रियात्मक रूप से खराब' के लिए एक लाइनर को समझना आसान है। धन्यवाद। –

6

सब कुछ सूचीबद्ध करने के लिए:

(apropos "") 

एक विशिष्ट पैकेज ऐड से सब कुछ को सूचीबद्ध करने के 'परियोजना का नाम:

(apropos "" 'quickproject) 
0

हो सकता है कि कुछ इस तरह:

(defun get-symbols-in-package (&optional (package *package*)) 
      (let ((lst())) 
      (do-symbols (s package) 
       (push s lst)) 
      lst)) 
या (get-symbols-in-package 'foo) रूप

उपयोग ...