2009-07-09 10 views
16

के लिए एक काम कर रहे आम लिस्प पर्यावरण की स्थापना करना मैं लंबे समय तक यूनिक्स सिसडमिन रहा हूं, और शैल स्क्रिप्टिंग के साथ स्वचालित कार्यों से कुछ, कुछ हल्के PHP कार्य, और कुछ सरल सी प्रोग्राम, मैं ' प्रोग्रामिंग के रास्ते में कभी भी बहुत कुछ नहीं किया है। मैंने हाल ही में अपने दिमाग को थोड़ा सा खींचने और आम लिस्प सीखने का फैसला किया।महत्वाकांक्षी लिस्प न्यूबी

मैं टौरेट्स्की के "जेंटल इंट्रो" के माध्यम से आधे रास्ते में हूं और आई/ओ पर अध्याय तक पहुंचने के बाद, मैं आरईपीएल में सामान टाइप करने से आगे बढ़ना चाहता हूं क्योंकि मैं पुस्तक और अभ्यास के माध्यम से चलता हूं। समस्या यह है कि मुझे एक सभ्य, कामकाजी माहौल प्राप्त करने के लिए एक सभ्य कैसे/ट्यूटोरियल नहीं मिल रहा है।

मैंने एमएसीएस स्थापित किया है (जो स्वयं में एक कठिन बदलाव है, क्योंकि मैंने लगभग 20 वर्षों तक वीआई का उपयोग किया है), एसएलआईएमई और कई सीएल कार्यान्वयन। हालांकि, इन टुकड़ों में से किसी एक के लिए प्रलेखन बहुत बड़ा है, कभी भी तीनों के माध्यम से घूमने की कोशिश नहीं कर रहा है। मैंने कई मुफ्त ऑनलाइन सीएल किताबों को स्किम किया है और वे सभी पर्यावरण के लिए अज्ञेयवादी हैं, मानते हैं कि आप आरईपीएल या लोडिंग स्रोत फाइलों में सामान टाइप करेंगे।

यह वास्तव में इस अनुभव को और अधिक सुखद बना देगा यदि मुझे आम लिस्प के लिए एमाक्स पर्यावरण स्थापित करने का एक सभ्य परिचय मिल सके जो मुझे एक विंडो में लिस्प मोड में संपादित करने की अनुमति देता है (फ़ंक्शन और वेरिएबल ऑटो-पूर्णता वास्तव में होगी यहां अच्छा), एकल अभिव्यक्ति (आउटपुट और रिटर्न वैल्यू दोनों) का मूल्यांकन करने के परिणामों को देखें, साथ ही साथ पूरे बफर को मूल्यांकन करने और "रन" कहने में सक्षम होने के परिणामस्वरूप मैं कहीं नतीजे देख सकता हूं।

किसी भी और सभी पॉइंटर्स की सराहना की जाएगी।

संपादित करें: मेरा प्लेटफार्म फ्रीबीएसडी/एमएमडी 64 है, और मैं ओपन सोर्स सॉल्यूशंस पसंद करता हूं।

उत्तर

3

क्या आपने Lispbox को आजमाया था?

+0

मैं, प्रैक्टिकल कॉमन लिस्प के साथ आरंभ करने के लिए Lispbox उपयोग करने की कोशिश की है, लेकिन वे एक FreeBSD सेटअप नहीं था, और मैं था इसे अपने मंच पर चलाने की कोशिश करने में कठिनाई। मुझे आशा है कि जब मैं अधिक अनुभवी हो जाऊं, तो मैं "सज्जन परिचय" समाप्त करने के बाद फिर कोशिश कर सकता हूं। –

2

ठीक है, जानकारी पृष्ठों के executing lisp अनुभाग से शुरू होने के लिए एक अच्छी जगह होगी।

आम तौर पर, जब आप Emacs में एक व्याख्या की गई भाषा के साथ काम करते हैं, तो आप स्रोत फ़ाइलों को संपादित करते हैं, और एक निम्न प्रक्रिया (Emacs द्वारा उत्पन्न एक नई प्रक्रिया, इस मामले में एक लिस्प प्रक्रिया) के साथ बातचीत करते हैं। आप सरल कीस्ट्रोक के साथ एक लिंग (संतुलित अभिव्यक्ति), क्षेत्र, या पूरे बफर का मूल्यांकन कर सकते हैं। वे आदेश कोड को लिस्पी प्रक्रिया में भेजते हैं और इसका मूल्यांकन करते हैं।

यह प्रयोग मॉडल के गोले के लिए काम करता है, Tcl तुतलाना, एक दुभाषिया के साथ कुछ भी ...

wiki has a lot of good information

+0

एसएलईएमई Emacs द्वारा उत्पन्न अन्य "निम्न" दुभाषियों की तुलना में कहीं अधिक पूर्ण है। अधिकांश चीजें आपकी संपादन विंडो में एकीकृत होती हैं, इसलिए आपको वास्तविक दुभाषिया ('* अवरक्त लिप *') को संदर्भित करने की आवश्यकता नहीं होगी। – jrockway

+1

मिठाई, -2 किसी विशेष कारण के लिए। क्या मुझे -3 मिल सकता है? उपयोगी संदर्भों के लिए –

+0

+1 धन्यवाद। –

-2

मैं कह सकता हूं कि इमाक्स लिस्प लिखने के लिए एक अच्छा वातावरण है, क्योंकि मैंने इसे कॉलेज में अंत में उपयोग किया था। *scratch* बफर परीक्षण कोड के लिए एक अच्छी जगह प्रदान करता है। कंपाइलर दस्तावेज़ों को यह कहना चाहिए कि उन्हें कैसे कॉल करें, ताकि आप डिस्क पर अपनी फाइलें लिख सकें और फिर उन्हें खोल विंडो में चला सकें, या एम्पैक मोड में से एक को संपादित-संकलन-और-रन को एकीकृत करने के लिए उपयोग कर सकते हैं। (क्षमा करें, मैं अधिक विशिष्ट नहीं हूं, यह 15 साल हो गया है।)

+0

'* स्क्रैच *' बफर Emacs Lisp के लिए है, सामान्य लिस्प नहीं। हालांकि, आपको सीएल स्क्रैच बफर देने के लिए एक एसएलआईएमई कॉन्ट्रिब एक्सटेंशन है। – jrockway

+0

इसके अलावा, कोई भी Emacs और कमांड लाइन के साथ Lisp विकसित करता है। सब कुछ एसएलईएमई के अंदर किया जा सकता है। – jrockway

+0

मैं यह नहीं कहूंगा कि 'कोई भी' टेक्स्ट एडिटर और कमांड लाइन का उपयोग करके विकसित नहीं होता है - मुझे हैकर्स पता है जो इसके साथ सहज हैं। यह सिर्फ 'सामान्य लिस्प पर्यावरण' नहीं बनाता है। –

29

मान लीजिए कि आपके पास emacs चल रहा है और सीवीएस से SLIME की जांच की है और इसे इंस्टॉल किया है। यह किसी भी लिनक्स distro के साथ आसान होना चाहिए; apt-get install emacs slime यह मेरे लिए करता है। (आपको एसबीसीएल, सर्वश्रेष्ठ कॉमन लिस्प कार्यान्वयन भी स्थापित करना चाहिए।)

बॉक्स से बाहर एसएलईएमई अब और कुछ नहीं करता है, इसलिए इसे कॉन्फ़िगरेशन की आवश्यकता है। Emacs को कॉन्फ़िगर करना आपके ~/.emacs फ़ाइल में किया जाता है। उस फ़ाइल पर जाएं (C-x C-f ~/.emacs)।मैं कुछ इस तरह, जो उपहार की एक किस्म को लोड करता है:

(eval-after-load "slime" 
    '(progn 
    (setq slime-lisp-implementations 
      '((sbcl ("/usr/bin/sbcl")) 
      (ecl ("/usr/bin/ecl")) 
      (clisp ("/usr/bin/clisp")))) 
    (slime-setup '(
        slime-asdf 
        slime-autodoc 
        slime-editing-commands 
        slime-fancy-inspector 
        slime-fontifying-fu 
        slime-fuzzy 
        slime-indentation 
        slime-mdot-fu 
        slime-package-fu 
        slime-references 
        slime-repl 
        slime-sbcl-exts 
        slime-scratch 
        slime-xref-browser 
        )) 
    (slime-autodoc-mode) 
    (setq slime-complete-symbol*-fancy t) 
    (setq slime-complete-symbol-function 
    'slime-fuzzy-complete-symbol))) 

(require 'slime) 

आप है कीचड़ अपने "साइट निर्देशिका" में स्थापित नहीं करते हैं, तो आप भी उन पंक्तियों से पहले इस जोड़ना चाहें,:

(add-to-list 'load-path "~/elisp/slime/") 
(add-to-list 'load-path "~/elisp/slime/contrib") 

(सही स्थान पर इन रास्तों, निश्चित रूप से बदलें।)

महत्वपूर्ण हिस्सा कीचड़-सेटअप है, इस आरईपीएल सहित वैकल्पिक मॉड्यूल, की एक किस्म लोड करता है। (मैं भी कल्पना खरोज, और autodoc आवश्यक मानते हैं।)

वैसे भी, आप M-x eval-buffer के साथ अपने चल Emacs में इस लोड कर सकते हैं, या प्रत्येक sexp अंदर बिंदु डालने और C-M-x दबाकर। इस बिंदु पर (आप भी sexp के अंत की ओर इशारा कर सकते हैं और C-x C-e दबाएँ। तरीके Emacs, में Emacs लिस्प का मूल्यांकन करने के लिए कई तरह के होते हैं लेकिन यह है कि सीएल सीखने के वास्तव में प्रासंगिक नहीं है।)

, आपको चाहिए M-x slime टाइप करने में सक्षम हो और पर अपने आरईपीएल पर ले जाया जा सके। ऐसा होने से पहले, आपका लिस्पी लोड हो जाएगा, एसएलईएमई इसे स्वैंक (एसएलआईएमई के सीएल पक्ष) को संकलित करने के लिए बताएगा, और आप देखेंगे कि होता है। यह केवल एक बार होता है, हालांकि, अगली बार SLIME तेज शुरू करेगा।

आरईपीएल पर, आप सामान्य लिस्प कमांड टाइप कर सकते हैं और का परिणाम उनके मूल्यांकन देख सकते हैं। कुछ पूरा करने के लिए टैब दबाकर संभावित पूर्णता की विंडो लाएगी; यह स्मार्ट पूर्णता है, इसलिए टाइपिंग "डी-बी" जैसी कुछ सूची "विनाशकारी-बाइंड" वाली एक सूची लाएगी। बहुत उपयोगी। एम-/ प्रतीकों को भी पूरा करेगा जो आपने पहले से ही Emacs के अंदर टाइप किया है; एक और महान समय सेवर। (यह Emacs, BTW में हर जगह काम करता है, और इसे "डायनामिक संक्षेप विस्तार" कहा जाता है।)

इससे पहले आपने कहा था कि आरईपीएल उबाऊ था, तो चलिए एक असली फाइल खोलें। C-x C-f test.lisp दबाएं। आश्चर्य की बात नहीं है, यह बफर संपादन test.lisp खोल देगा, जिसे पहली बार फ़ाइल (C-x C-s) सहेजने पर बनाया जाएगा। यह लिस्प फ़ाइल एसएलआईएमईई से अवगत है, इसलिए आपके द्वारा टाइप किए जाने वाले कुछ भी आसानी से चल रहे लिस्प द्वारा सत्यापित किए जा सकते हैं। टैब पूर्णता, कक्षा निरीक्षण, इंटरैक्टिव परीक्षण, आदि सभी उपलब्ध हैं।

उदाहरण के तौर पर, (+ 1 2) जैसे कुछ टाइप करें और C-x C-e दबाएं। आप विंडो के नीचे पर चल रहे लिस्प द्वारा मूल्यांकन किए गए परिणाम देखेंगे। यह आपको व्यक्तिगत अभिव्यक्तियों का परीक्षण करने देता है क्योंकि आप उन्हें फ़ाइल में टाइप करते हैं।

अगले कदम के लिए एक पूर्ण समारोह, शायद लिखना है:

(defun my-1+ (x) 
    (+ x 1)) 

आप विभिन्न तरीकों से में चल लिस्प में इस समारोह लोड कर सकते हैं; मैं आमतौर पर C-M-x का उपयोग करता हूं।अब आप आरईपीएल बफर (C-x b *slime-repl sbcl* या इसी तरह) पर वापस बदल सकते हैं और (my-1+ 42) टाइप करें और परिणाम 43 मुद्रित देखें।

चल रहे लिस्प में कार्यों को लाने का एक और तरीका संकलित करना है और C-c C-k के साथ पूरी फ़ाइल लोड करना है।

वैसे भी, यह एसएलईएमई और एमएक्स का उपयोग करने की मूल बातें है। स्पष्ट रूप से कई और सुविधाएं उपलब्ध हैं, लेकिन इससे आपको एसएलईएमई के साथ लिस्प प्रोग्रामिंग का स्वाद देना चाहिए। एक आखिरी बात जिसका मैं उल्लेख करूंगा, Emacs बड़े पैमाने पर स्वयं-दस्तावेज है, इसलिए यदि आप और जानना चाहते हैं, तो Emacs आपकी मदद कर सकता है। आपके लिस्प बफर में रहते हुए, प्राप्त करने के लिए आप C-h m टाइप कर सकते हैं, जो आप लिस्प को संपादित करते समय उपयोग कर सकते हैं। आप प्रत्येक समारोह के बारे में अधिक जानकारी प्राप्त करने के लिए लिंक पर क्लिक कर सकते हैं।

मज़े करो!

+0

+1 बहुत उपयोगी। बीटीडब्लू, मैंने यह नहीं कहा कि आरईपीएल "उबाऊ" था - बस मुझे नहीं लगता था कि यह बड़ी मात्रा में सामानों को संपादित करने के लिए उपयुक्त था। शायद मैं पूरी तरह से अनजान हूं कि कैसे वास्तविक परियोजनाओं पर लिस्प कोडर काम करते हैं यह पर्यावरण बीटीडब्ल्यू, कार्यों में टाइप करने और आरईपीएल में चर निर्दिष्ट करने के बाद, क्या वहां देखने के लिए एक तरीका है कि आपको वहां क्या मिला है? बेसिक में "सूची" के बराबर। (मुझे पता है, मुझे पता है ... eeeeew!) –

+0

@ गेफ फ्रिट्ज: यह शायद आपकी खोज से आगे हो रहा है, लेकिन यदि आप काम करने के लिए अपना स्वयं का पैकेज (नेमस्पेस) बनाते हैं, और आरईपीएल में इसका उपयोग करते हैं, तो आप उस पैकेज में परिभाषित सभी प्रतीकों को प्रोग्रामेटिक रूप से सूचीबद्ध कर सकते हैं , देखें कि उनमें से कौन से कार्यों के अनुरूप हैं, और इस तरह की अन्य आत्मनिर्भर चीजें करते हैं। (यह आपके स्वयं के पैकेज में मदद करता है, क्योंकि डिफ़ॉल्ट सीएल-यूजर पैकेज में आपके काम से बहुत अधिक होगा।) मैं सीधे आरपीएल में बहुत कोडिंग नहीं करता हूं, मैं एक अलग बफर में संपादित करता हूं और मूल्यांकन करें (फ्रांज के ईएलआई को छोड़कर, यहां एसएलआईएमई सुझाव की तरह)। – khedron

+3

जबकि एसबीसीएल बहुत अच्छा है, मैं यह नहीं कहूंगा कि यह "सर्वश्रेष्ठ" है। – Svante

3

Lispbox & कीचड़ ठीक उत्तर दिए गए हैं, लेकिन अगर आप सिर्फ साथ खेलने के लिए कुछ भी सरल, चाहते हैं, आप LispWorks Personal या Allegro CL Free Edition का नि: शुल्क संस्करण पर विचार करें। मैंने या तो लिनक्स पर खुद का उपयोग नहीं किया है, लेकिन वे दोनों जीयूआई के साथ आते हैं। ढेर आकार या अन्य सीमाएं होंगी (क्योंकि पूर्ण संस्करण मुक्त नहीं हैं), लेकिन इन्हें गोता लगाने में आसान हो सकता है।

+0

सुझाव के लिए धन्यवाद, मेरा मंच फ्रीबीएसडी खरीदें। –

+0

@ गेफ फ़्रिट्ज: लिस्वावर्क्स व्यक्तिगत और एलेग्रो सीएल दोनों का कहना है कि वे फ्रीबीएसडी के लिए उपलब्ध हैं। http://www.lispworks.com/support/system-requirements.html http://franz.com/downloads/ – khedron

+0

मैंने पास्कल कोस्टान्ज़ा इन में से एक का उपयोग किया है, और वे मूल रूप से Emacs + SLIME की तरह काम करते हैं । बेशक, संपादक Emacs नहीं है। वे एक त्वरित शुरुआत के लिए अच्छे हैं, लेकिन मुझे मुफ्त कार्यान्वयन की तुलना में कम कार्यक्षमता के लिए भुगतान करने का कोई कारण नहीं दिखता है। (यदि आप विंडोज़ पर हैं, तो समीकरण बदलता है, लेकिन आपने कहा कि आप फ्रीबीएसडी पर हैं, इसलिए ...) – jrockway

5

वीआई/विम को न छोड़ें क्योंकि स्लिम जैसे लोगों का एक बड़ा प्रतिशत।

मैंने एसओ पर इससे पहले इस बारे में लिखा है। इन की जाँच करें:

मैं यहाँ जुड़े प्रश्नों का उत्तर देने में खुशी होगी।

2

मैन्युअल दृष्टिकोण से आउट-ऑफ-द-बॉक्स इंस्टॉलर तक, लिस्प पर्यावरण स्थापित करने के विभिन्न तरीके हैं। मान लें कि आप Emacs है और SBCL पहले से ही स्थापित है, तो निम्न आप ऊपर हो जाता है और कीचड़ के साथ चल रहा

:

निम्नलिखित जवाब clbuild है, जो हमेशा आप के लिए सभी संकुल की ब्रांड नए संस्करणों को डाउनलोड के लिए है। (आप भी बैश, darcs, सीवीएस, आदि की जरूरत है, लेकिन FreeBSD बंदरगाहों इन सब, के रूप में तक मुझे पता है शामिल हैं।)

$ darcs get --set-scripts-executable http://common-lisp.net/project/clbuild/clbuild 
$ ./clbuild/clbuild install slime 
$ ./clbuild/clbuild slime 

आप की जरूरत नहीं है (वास्तव में, नहीं होना चाहिए) आपके .emacs संशोधित इसके लिए। यदि आपने पहले एसएलईएमई की मैन्युअल स्थापना के साथ खेला है, तो .emacs से पुराने परिवर्तनों को साफ़ करें। clbuild आपके लिए कीचड़ सेटअप करता है।

यदि आप चाहें, clbuild भी आप के लिए प्राप्त कर सके और निर्माण हाल ही में एक SBCL:

$ ./clbuild/clbuild install sbcl 
$ ./clbuild/clbuild compile-implementation sbcl 
# afterwards you can uninstall the FreeBSD-provided Lisp used for bootstrapping 

अपने उपयोग प्रश्नों के लिए के रूप में:

  • Cx 5 2 आप के साथ खेलने के लिए दूसरी खिड़की देता है
  • सीसी सीके संकलन & वर्तमान बफर
  • लोड होने पर टैब पूर्णता है, लेकिन अन्य पूर्णता सुविधाएं भी हैं। व्यक्तिगत रूप से मैं सी-सी एम-आई अस्पष्ट समापन से प्यार करता हूं।
  • jrockway के जवाब Emacs आदेशों पर अतिरिक्त अच्छा सुझाव दिए गए जिसे मैंने यहां दोहराना नहीं होगा