2009-07-10 7 views
7

यदि आपकी परवाह नहीं है और केवल प्रश्न देखना चाहते हैं तो पीछे की कहानी पीछे की ओर है।लिस्प और पैकेज के बारे में न्यूबी प्रश्न

तो मैं थोड़ी देर के लिए LISP में खेल रहा हूं। कुछ बुनियादी कार्य, कुछ वर्ग, और फ़ाइल IO। जब मैं इस लेख के पार चला:

http://www.adampetersen.se/articles/lispweb.htm

और मैं कोशिश करते हैं और एक वेब अनुप्रयोग के लिए तुतलाना उपयोग करने के लिए उत्साहित हूँ। मैं जाता हूं और संकुल डाउनलोड करता हूं, लेकिन मेरे जीवन के लिए मुझे नहीं पता कि उन्हें अपने एलेग्रो आईडीई में कैसे लोड किया जाए।

हम्म ... ठीक है, अच्छी तरह से hunchentoot साइट का कहना है कि बहुत सारे बुनियादी पैकेज LispWorks में हैं। तो मैं इसे डाउनलोड करता हूँ। अभी भी यह सुनिश्चित नहीं है कि इन आईडीई में डाउनलोड किए गए संकुल के स्रोत कैसे प्राप्त करें। प्रतीत होता है कि वे पैकेज के द्विआधारी हैं?

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

मैं कुछ और खोदता हूं और एएसडीएफ नामक इस कार्यक्रम को देखता हूं। ऐसा लगता है कि एएसडीएफ किसी प्रकार का पैकेज बिल्डर है? मुझे नहीं पता कि यह भ्रमित लगता है। मैं इस बिंदु पर हारने वाला हूं।


यदि आप अभी भी इसे पढ़ रहे हैं तो मेरा प्रश्न है।
1. मैं अपने पैकेज वातावरण में इन पैकेजों के लिए स्रोत कैसे लोड करूं? लिस्प सीखने की कोशिश करना बहुत कठिन नहीं रहा है लेकिन वातावरण के बारे में जानकारी दुर्लभ रही है। क्या मुझे एएसडीएफ के साथ डाउनलोड किए गए पैकेज बनाने की ज़रूरत है।
2. क्या किसी के लिए बस उठने और सभी उपकरणों को सीखने के लिए बड़ी मात्रा में गति के बिना लिस्पी में दौड़ने का कोई आसान तरीका है?

उत्तर

8

हम्म ... ठीक है, अच्छी तरह से hunchentoot साइट बुनियादी संकुल का एक बहुत LispWorks में हैं कहते हैं। तो मैं इसे डाउनलोड करता हूँ।

इसका मतलब यह है कि लेखक ने हुनचेनोट में बहुत सारे लिस्पवर्क-विशिष्ट कोड लिखे हैं। इसका मतलब यह नहीं है कि Hunchentoot केवल Lispworks पर काम करता है।

अभी भी यह सुनिश्चित नहीं है कि इन आईडीई में डाउनलोड किए गए पैकेजों के स्रोत को कैसे प्राप्त किया जाए।

आपको एएसडीएफ का उपयोग करने की आवश्यकता है।

उनके पास पैकेज की द्विआधारी प्रतीत होती है?

यह असंभव है।

ओह अच्छा एक ही समय में मेरी ubuntu सर्वर और उपयुक्त-मिल सभी संकुल और सेटअप कीचड़> (मैं यह पहले इस्तेमाल नहीं किया है क्योंकि मैं सिर्फ तुतलाना सीखना चाहता था। सीखना Emacs और तुतलाना को शायद बीमार स्विच असली चुनौती लग रहा था)।

तब ऐसा मत करें। आपको Emacs या कीचड़ का उपयोग करने की आवश्यकता नहीं है।

मुझे आवश्यक सभी पैकेज प्राप्त करने और कीचड़ को लोड करने के लिए उपयुक्त नहीं है और फिर एक ही समस्या उपलब्ध नहीं है। http://common-lisp.net/project/clbuild/

मैं कुछ और चारों ओर खुदाई और इस कार्यक्रम ASDF कहा जाता देखें:

त्वरित परिणामों के लिए clbuild प्रयास करें। ऐसा लगता है कि एएसडीएफ कुछ लिस्प के लिए पैकेज निर्माता का प्रकार है? मुझे नहीं पता कि यह भ्रमित लगता है।

एएसडीएफ सामान्य लिस्प अनुप्रयोगों के लिए मेकफ़ाइल की तरह थोड़ा सा है।

मैं इस बिंदु पर हारने वाला हूं।

यह सबसे बुरी चीज है जो आप कर सकते हैं (इस या किसी अन्य बिंदु पर)। मुझे खुशी है कि आपने इसके बजाय अपनी समस्याओं को पोस्ट करने का फैसला किया है।

  1. मैं अपने तुतलाना वातावरण में इन पैकेजों के लिए स्रोत लोड है। लिस्प सीखने की कोशिश करना बहुत कठिन नहीं रहा है लेकिन वातावरण के बारे में जानकारी दुर्लभ रही है। क्या मुझे एएसडीएफ के साथ डाउनलोड किए गए पैकेज बनाने की ज़रूरत है।

clbuild आप सभी की जरूरत देना चाहिए, लेकिन यहाँ कुछ संकेत दिए हैं कि आप इसे का उपयोग नहीं करना चाहते हैं:

  1. CLISP, SBCL: ASDF अपने लिस्प का हिस्सा है। (require :asdf) चलाएं। Lispworks, द्रुतगति: आप एएसडीएफ डाउनलोड और लोड करने की जरूरत है। कहीं भी asdf.lisp सहेजें (load "/path/to/asdf.lisp") चलाएं।
  2. प्रत्येक लाइब्रेरी/एप्लिकेशन (एएसडीएफ बोलने में "सिस्टम") के लिए आपको इसे किसी स्थान पर अनपैक डाउनलोड करने की आवश्यकता है। तब तक दोहराएं जब तक कि सभी निर्भरताएं संतुष्ट न हों। इन स्थानों (निर्देशिका) पर ध्यान दें।
  3. चरण # 2 से प्रत्येक स्थान के लिए स्थान ASDF रजिस्ट्री में जोड़ें: (push "/path/to/dir/" asdf:*central-registry*)। पिछला स्लैश मत भूलना।
  4. (asdf:oos 'asdf:load-op :system-name) का उपयोग कर सिस्टम लोड करें।
  1. वहाँ एक आसान तरीका है के लिए किसी को सिर्फ अग्रिम समय की एक बड़ी राशि सभी उपकरण सीखने लाने के लिए बिना ऊपर और तुतलाना में चल रहा है?

ऊपर देखें - क्लब्बिल्ड का उपयोग करें।

+1

चरण 4 अब हो सकता है (asdf: load-sys: system-name)। – Svante

6

उबंटू में सबसे तेज़ तरीका उस वितरण में शामिल संकुल का उपयोग करना है। यह "ठीक है" अगर आप कुछ चीजों को आजमा देना चाहते हैं, लेकिन ये संस्करण अक्सर तुलनात्मक रूप से पुराने होते हैं। मैं sbcl और slime पैकेजों की अनुशंसा करता हूं। यदि आप अभी तक emacs नहीं जानते हैं, तो आप इसके अंतर्निहित ट्यूटोरियल (C-h t (प्रेस कंट्रोल-एच, रिलीज, फिर टी दबाएं) के माध्यम से उसमें तेजी से पहुंच सकते हैं।

आप फिर emacs शुरू कर सकते हैं, कीचड़ शुरू कर सकते हैं (M-x slime के माध्यम से), एक lisp फ़ाइल खोलें (C-x C-f ~/lisp/first-try.lisp), और आप जाने के लिए तैयार हैं। लिस्प के लिए एक ट्यूटोरियल के रूप में, मुझे लगता है कि प्रैक्टिकल कॉमन लिस्प एक बहुत अच्छी किताब है, और यह स्वतंत्र रूप से उपलब्ध है।

अब, जब आप लिस्प की तरह आते हैं, तो आप अधिक अद्यतित पैकेज चाहते हैं। मैं इसके लिए clbuild का उपयोग करने की अनुशंसा करता हूं (एफएक्यू सहित अधिक जानकारी के लिए लिंक देखें)। फिर आप एक नया एसबीसीएल भी बना सकते हैं (वितरण के संस्करण द्वारा बूटस्ट्रैप)।

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

(asdf:operate 'asdf:load-op 'foo) 

ऊपर load-sys इस का उपयोग आम तौर लिए एक आशुलिपि है: एक सरल

(asdf:load-sys 'foo) 

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

जब आप कोई स्रोत फ़ाइल लोड करते हैं, तो यह स्वचालित रूप से संकलित होता है (.fasl फ़ाइलें (फास्ट-लोड) का उत्पादन) ताकि लोडिंग अगली बार बहुत तेज हो।

2

शायद शुरू करने के सबसे तेज़ तरीकों में से एक है Lisp in a Box (या स्पिनऑफ LispBox) का उपयोग करना। ये आपकी हर चीज के पूर्ण सेट हैं।

आप Lisp Resource Kit को भी आजमा सकते हैं, जो कि लिस्प टूल और दस्तावेज़ीकरण के साथ बूट करने योग्य सीडीरॉम है, जो आपके लिए पहले से ही सेट है। बस इसे अपने सीडीरॉम ड्राइव में रखें और बूट करें!

2

ये सभी उत्तर अच्छे हैं, हालांकि वे क्विकलिस्प की नई लोकप्रियता से थोड़ा पुराना हो गए हैं। बहुत कम बोलने वाला, quicklisp asdf के मेक के लिए पैकेज मैनेजर है। एक बार Quicklisp एक सिस्टम पर स्थापित हो जाने के बाद, आप उस लाइब्रेरी को अपने लिस्प पर्यावरण में लोड करने के लिए (ql:quickload "name of lisp library") का उपयोग कर सकते हैं, जिसमें इसे डाउनलोड करने और यदि आवश्यक हो तो इसकी किसी भी निर्भरता को शामिल कर सकते हैं। उदाहरण के लिए, Hunchentoot और इसकी सभी निर्भरताओं को डाउनलोड, इंस्टॉल और लोड करने के लिए, (ql:quickload "hunchentoot") का उपयोग करें। बाद में लिस्प सत्रों में, (ql:quickload "hunchentoot") को कॉल करने से पहले ही डाउनलोड और स्थापित संस्करण को लोड कर दिया जाएगा, ql:quickload स्थानीय या दूरस्थ रूप से उपलब्ध किसी लाइब्रेरी को लोड करने का एक आसान तरीका है। क्विकलिस्प स्थापित करने के लिए, मैं आपको quicklisp.org पर संदर्भित करता हूं।

अधिक विस्तृत विवरण

लिस्प जब यह पुस्तकालयों के लिए आता है थोड़ा अलग तरह से अन्य भाषाओं से काम करता है।पहली बात यह जानना है कि भाषा स्वयं लगभग कोई लाइब्रेरी कार्यक्षमता प्रदान नहीं करती है- इसमें load है (जो फ़ाइल में प्रत्येक पंक्ति को चलाता है और चलाता है जैसे कि आप उन्हें आरईपीएल में टाइप करेंगे) और compile-file (जो "तेज़ लोड बनाता है "फ़ाइल, फ़ाइल का एक प्रीकंपिल्ड संस्करण जो load एस और बहुत तेज प्रदर्शन कर सकता है)। लाइब्रेरी लोड करने के लिए, मूल भाषा क्या प्रदान करती है, इसका उपयोग करके आपको अपनी प्रत्येक फाइल और load पर जाना होगा (या (load (compile-file "filename")), बेहतर लोड गति/प्रदर्शन के लिए)। यह थकाऊ हो गया, इसलिए पुस्तकालयों के लोडिंग के प्रबंधन के लिए विभिन्न पुस्तकालयों का निर्माण किया गया था, और फिलहाल asdf राजा है (इतना है कि कई लिस्प कार्यान्वयन वास्तव में इसे बंडल करते हैं)। Asdf शब्दावली में, पुस्तकालयों को "सिस्टम" कहा जाता है और .asdf फ़ाइलें उन्हें लोड करने में शामिल सभी मेटाडेटा का वर्णन करती हैं- वे सिस्टम जिन पर वे निर्भर करते हैं और अधिकतर फाइलों को लोड करने का ऑर्डर, लेकिन वे अभी भी काफी जटिल हो सकते हैं। क्विकलिस्प, तब, asdf के शीर्ष पर बैठता है। असल में, जब asdf पता चलता है कि यह किसी सिस्टम का पता नहीं लगा सकता है, तो Quicklisp में कदम उठाएं और जांचें कि यह सिस्टम क्विकलिस्प के ऑनलाइन भंडारों में से एक से उपलब्ध है या नहीं, और यदि ऐसा है तो इसे डाउनलोड करें और इसके बाद asdf जारी रहेगा। ql:quickload मूल रूप से एक सिस्टम लोड करने के लिए asdf मशीनरी के चारों ओर एक रैपर है जो आवश्यकतानुसार मदद करने के लिए quicklisp सक्षम बनाता है।