2012-04-28 15 views
13

क्रिश्चियन क्विननेक ने एलआईएसपी इन छोटे टुकड़े नामक एक उत्कृष्ट कृति लिखी है, जिसमें ग्यारह लिस्प इंटरप्रिटर और दो लिस्प कंपाइलर हैं। -छोटे टुकड़ों में LISP - कोड चलाने के लिए सबसे अच्छा LISP पर्यावरण?

जब आप वेबसाइट here से कोड डाउनलोड करने के लिए जाना यह टिप्पणी:

The programs of this book are available on the net. 
These programs used to run with some Scheme systems around 1994. 

किसी भी विचार:

(क) योजना सिस्टम इन समय में भाग गया, और अधिक महत्वपूर्ण बात;

(बी) आज कौन सी योजना प्रणाली चलती है?

+1

आप क्यों नहीं बस रैकेट स्थापित नहीं करते देखें और कार्यक्रमों के कुछ ही चलाने के लिए प्रयास? –

+0

मैं guile https://en.wikipedia.org/wiki/GNU_Guile या Kawa https://en.wikipedia.org/wiki/Kawa_(Scheme_implementation) – jcubic

+0

@jcubic का उपयोग करता हूं तो इस पुस्तक के कार्यक्रम आपके लिए काम करते हैं? – hawkeye

उत्तर

7

वहां बहुत सारे कार्यक्रम हैं। मैंने यह देखने के लिए कुछ परीक्षण किए कि मैं व्यक्तिगत रूप से कोशिश किए बिना इसका कितना अच्छा जवाब दे सकता हूं। ".scm" एक्सटेंशन के साथ टैरबॉल में 131 फ़ाइलें हैं। हालांकि .bgl जैसे अन्य एक्सटेंशन के साथ योजना कार्यक्रम प्रतीत होते हैं। तो मैंने पहली पांच पंक्तियों में 'एल आई एस पी' वाली फाइलों की खोज की। इससे 173 फाइलें मिलती हैं। मैंने इन सभी को my preferred Scheme implementation पर चलाने की कोशिश की। इनमें से 31 बिना त्रुटि के दौड़ते हैं। इनमें से लगभग सभी "src" निर्देशिका में हैं। तो भाषा-विशिष्ट कार्यक्रम वास्तव में भाषा-विशिष्ट प्रतीत होते हैं। आइए उन src/फ़ाइलों में से एक को देखें जो असफल हो गए, "chap9z.scm"। यह define-abbreviation पर चकित है। मुझे इस प्रतीक की उत्पत्ति नहीं पता है, लेकिन यह गुइल में कहीं भी परिभाषित नहीं है। लेकिन इसके सभी उपयोग गुइल के syntax-rules द्वारा किए जा सकते हैं।

+0

मैं शर्त लगाता हूं कि 'परिभाषित-संक्षेप' को स्रोत में कहीं और मैक्रो के रूप में परिभाषित किया गया है। –

+0

मैंने देखा लेकिन इसे नहीं मिला है। मुझे एक सेक्स-आधारित (लाइन-आधारित) grep की आवश्यकता है! – gcbenison

+0

@gcbeison, ऐसा लगता है कि प्लेटफ़ॉर्म-विशिष्ट भागों में परिभाषित किया गया है। उदाहरण के लिए, 'elk/book.elk' देखें, जहां इसे कॉल के माध्यम से' विस्तार-वाक्यविन्यास 'में परिभाषित किया गया है। –

5

कुछ योजना कार्यान्वयन है कि 1994 में ही अस्तित्व में अभी भी अभी भी चारों ओर हैं और बनाए रखा: Scheme 48, Chez Scheme, Gambit, Bigloo, MIT Scheme और SCM

शायद लीएसपी का कोड अन्य आधुनिक योजना प्रणालियों जैसे Guile या Larceny में चलाएगा।

व्यक्तिगत रूप से, मैं Racket का उपयोग करने की अनुशंसा करता हूं। सबसे अधिक संभावना है कि कोड में से कोई भी #lang racket में कोई बदलाव नहीं करेगा, और [] का उपयोग करने की कोई आवश्यकता नहीं है (लेकिन आपका कोड पढ़ना आसान हो सकता है :)। जो चीजें काम नहीं करती हैं उन्हें ठीक करना आसान होता है, और आप रैकेट द्वारा प्रदान किए गए आर 5 आरएस भाषा कार्यान्वयन का भी उपयोग कर सकते हैं जो संभवतः सभी कोड के लिए काम करेगा।

+0

कोड (कम से कम 1 से) कोड # लांग रैकेट में 'as-is' नहीं चलाता है क्योंकि कॉन कोशिकाएं उत्परिवर्तनीय नहीं होती हैं। – PuercoPop

+1

आप शायद इसे 'r5rs' मोड में चला सकते हैं (या तो ड्रैकेट में उस भाषा का चयन करें,' plt-r5rs 'निष्पादन योग्य' का उपयोग करें, या फ़ाइल के शीर्ष पर '# lang r5rs' जोड़ें)। –

2

शामिल README फ़ाइल कहता है:

इन फ़ाइलों को एक योजना दुभाषिया एक परीक्षण-सुइट ड्राइवर (tester.scm) के साथ संवर्धित साथ परीक्षण किया गया, परिभाषित-वाक्य रचना और परिभाषित-संक्षिप्त नाम मैक्रो (का उपयोग करते हुए डाइबविग का वाक्यविन्यास-केस पैकेज), और एक ऑब्जेक्ट सिस्टम: Meroonet (meroonet.scm)।

बिगलू, योजना-> सी, गैंबिट, एल्क या एससीएम का उपयोग किया जा सकता है। पहले तीन बेहतर हैं क्योंकि एक विशेष दुभाषिया बनाया जा सकता है जिसमें संकलित मेरुनेट और संकलित स्वच्छ मैक्रोज़ शामिल हैं।

3

(क) योजना सिस्टम इन लेखक की वेबसाइट से source tarball में समय पर भाग गया

Makefile bigloo तहत कोड को चलाने के लिए लक्ष्य है, एल्क, चाल, mit- योजना, योजना 2 सी, और एसएमएम।

मेकफ़ाइल एससीएम 4e1 और बिग्लू 1.9 डी का उल्लेख ज्ञात संस्करणों के रूप में उल्लेख करता है, हालांकि मैंने उन्हें स्वयं परीक्षण नहीं किया है। मुझे अन्य योजनाओं के लिए विशिष्ट संस्करणों का कोई उल्लेख नहीं मिला।

(बी) आज कौन सी योजना प्रणाली चलती है?

this github repo में कोड bigloo, चाल, और एमआईटी-योजना के संस्करणों (06/2014) के रूप में वर्तमान के साथ इतना है कि लगभग सभी शामिल टेस्ट स्वीट पास में परीक्षणों के अद्यतन किया गया है।

यदि आप सिर्फ कोड चलाने और पुस्तक के साथ अनुसरण करने में सक्षम होना चाहते हैं, तो उन योजनाओं में से एक आपके लिए काम करना चाहिए।

[पूर्ण प्रकटीकरण: मैं रेपो का मालिक हूं और मैं एक योजना नोब हूं। रेपो में कोड WOMM प्रमाणित है, लेकिन आपका माइलेज भिन्न हो सकता है।]

यदि दूसरी तरफ, आप bigloo/gambit/mit-scheme का उपयोग करने के लिए सामग्री नहीं हैं, तो यह बहुत कठिन नहीं होना चाहिए यहां गुइल/रैकेट/डालने-पसंदीदा-योजना के लिए समर्थन जोड़ें। शुरुआती बिंदु के रूप में book.* फ़ाइलों में से एक का उपयोग करें, उदा। gambit/book.scm या mitscheme/book.mit। यदि आप अपनी पसंदीदा योजना में लोड करने के लिए book.scm का संस्करण प्राप्त कर सकते हैं, तो test.interpreters लक्ष्य बनाएं, और आखिर में grand.test लक्ष्य को सत्यापित करने के लिए लक्ष्य कार्य कर रहे हैं।