2012-06-05 12 views
6

में सभी उपयोगकर्ता-निर्धारित वेरिएबल अजगर में मैं dir() और रैकेट में (5.2) का उपयोग कर सकते मैंसूची योजना

(require xrepl) 
,apropos 

कर सकते हैं सब परिभाषित चरों की सूची प्राप्त करने के लिए। सभी योजनाओं में ऐसा करने के लिए क्या पोर्टेबल विधि मौजूद है? ऐसा करने के बाद, मैं सभी सिस्टम और मॉड्यूल चर को कैसे फ़िल्टर करूं? वैरिएबल की पूरी सूची रैकेट में बल्कि कठिन है।

+0

"सिस्टम और मॉड्यूल चर" से आपका क्या मतलब है? कौन सा * आप * देखना चाहते हैं? –

+0

सभी योजनाओं में ऐसा करने का कोई तरीका नहीं है। –

+0

मैं केवल उपयोगकर्ता चर देखना चाहता हूं, अन्य मॉड्यूल द्वारा या सिस्टम द्वारा परिभाषित सामग्री नहीं। – BnMcGn

उत्तर

6

रैकेट में किसी विशिष्ट मॉड्यूल द्वारा निर्यात किए गए नाम प्राप्त करने के लिए module->exports का उपयोग करें। अन्य कार्यान्वयन के लिए, आपको इसे दस्तावेज़ में देखना होगा।

> (module->exports 'racket/list) 
'((0 
    (add-between()) (append*()) (append-map()) 
    (argmax())  (argmin())  (cons?()) (count()) 
    (drop())  (drop-right()) (eighth()) (empty()) 
    (empty?())  (fifth())  (filter-map()) 
    (filter-not()) (first())  (flatten()) 
    (fourth())  (last())  (last-pair()) 
    (make-list()) (ninth())  (partition()) 
    (range())  (rest())  (second()) 
    (seventh())  (shuffle()) (sixth()) 
    (split-at()) (split-at-right()) (take()) 
    (take-right()) (tenth()) (third()))) 
'((0 (remove-duplicates()))) 
+0

यह दिलचस्प और उपयोगी है, लेकिन यह मेरी इच्छा के विपरीत है। मैं उन सभी को फ़िल्टर करना चाहता हूं और देख रहा हूं कि क्या बचा है। – BnMcGn

+1

रैकेट आरईपीएल में, आप शायद वर्तमान में सुलभ सभी बाइंडिंग की सूची प्राप्त करने के लिए * नेमस्पेस-मैप्ड-प्रतीकों * का उपयोग कर सकते हैं, और फिर भाषा से बाइंडिंग घटा सकते हैं। कुछ * (सेट-> सूची (सेट-घटाएं (सूची-> सेट (नेमस्पेस-मैप-सिंबल)) (सूची-> सेट (नेमस्पेस-मैप-सिंबल (मॉड्यूल-> नेमस्पेस 'रैकेट)))) *। – dyoo

+0

@dyoo आपका कोड उतना करीब आता है जितना मैं उचित रूप से प्राप्त कर सकता हूं (यानी xrepl और geiser जैसे विभिन्न वातावरण में काम करता है)। यदि आप इसे उत्तर के रूप में पोस्ट करते हैं तो मैं इसे स्वीकार करूंगा। – BnMcGn

2

ठीक है, यहाँ कैसे guile में यह करने के लिए है (v> = 2.0।):

[email protected](guile-user)> ,binding 
%module-public-interface #<variable 9e55e98 value: #<interface (guile-user) 9df6678>> 

[email protected](guile-user)> (define foo 'bar) 

[email protected](guile-user)> ,binding 
foo      #<variable a06fe28 value: bar> 
%module-public-interface #<variable 9e55e98 value: #<interface (guile-user) 9df6678>> 

आप संदर्भों को बदलने बाइंडिंग कुछ मॉड्यूल द्वारा निर्यात पाने के लिए कर सकते हैं:

[email protected](guile-user)> (use-modules (srfi srfi-1)) 
[email protected](guile-user)> ,module (srfi srfi-1) 
[email protected](srfi srfi-1)> ,binding 
reduce-right   #<variable 9ead2d0 value: #<procedure reduce-right (f ridentity lst)>> 
delete     #<variable 9eb7aa8 value: #<procedure delete (_ _ #:optional _)>> 
lset-xor!    #<variable 9eb7c90 value: #<procedure lset-xor! (= . rest)>> 
take!     #<variable 9ead640 value: #<procedure take! (lst i)>> 
... 
+0

अच्छा! हां, xrepl नहीं है, बाध्यकारी – BnMcGn

संबंधित मुद्दे