2010-04-22 23 views
8

से कनेक्ट करना मेरे पास काफी हद तक शामिल है LispWorks Common Lisp मॉड्यूल जो RDNZL के माध्यम से कुछ .NET मॉड्यूल के ऊपर बैठता है।.NET से सामान्य लिस्प

यह आया है कि मुझे इसकी कुछ कार्यक्षमता किसी अन्य .NET अनुप्रयोगों को बेनकाब करने की आवश्यकता है, और मुझे यकीन नहीं है कि सी # में मॉड्यूल को दोबारा लिखने के बिना इसका सबसे अच्छा (सबसे छोटा) तरीका है। मुझे पता है कि कुछ सीएलआर लिस्प कार्यान्वयन हैं लेकिन ज्यादातर अनजान या अधूरे लगते हैं और ऐसी कई चीजें हैं जिन्हें योजना में त्रिकोणीय रूप से फिर से लिखा नहीं जा सकता है।

क्या कोई ऐसी सुविधा है जो आरडीएनजेडएल (.NET -> Common Lisp) को सक्षम करता है? क्या मैं डीएलएल वितरित करने के लिए आरडीएनजेडएल का उपयोग कर सकता हूं जो .NET ऑब्जेक्ट स्वीकार करता है?


मैं इस संपादन कर रहा हूँ कुछ विकल्प है कि लिस्प में रूचि रखने वाले सबसे अधिक संभावना है कि अगर वे विंडोज पर हैं के बारे में पता चल जाएगा शामिल करने के लिए, और क्यों वे काफी ऊपर दी गई आवश्यकताओं (जैसे पूरा नहीं करते हैं या कैसे, आपके उपयोगकर्ता, मैंने अपनी आवश्यकताओं को पर्याप्त रूप से व्यक्त नहीं किया :)।

  • IronScheme - अच्छा, तेज, बनाए रखा और तेजी से लेकिन यह कॉमन लिस्प
  • ClojureCLR नहीं है - आम नहीं लिस्प; बीटा, ~ 4secs लेता है मुझे शुरू करने के लिए (स्वीकार्य लंबे समय से चल अनुप्रयोगों के लिए, चीजें हैं जो ताजा instantiations और उसके बाद कुछ दर्जन कॉल की आवश्यकता के लिए नहीं)
  • LSharp - आम नहीं लिस्प, बनाए रखा
  • RDNZL नहीं - के लिए अनुमति देता है सीएल कॉलबैक प्रतिनिधियों को .NET कोड के साथ पंजीकृत करना है, लेकिन आपको सीएल में शुरू करना है, आपके सामान्य द्वारा बनाए गए "सी डीएलएल" में .NET ऑब्जेक्ट्स को पास करने के लिए कोई अपेक्षाकृत सरल तरीका नहीं है (कि मैं अब तक यह पता लगाने में सक्षम हूं) पसंद के लिस्प कार्यान्वयन।
  • Yarr - एलएसएचआरपी के शीर्ष पर निर्मित (डिफैक्रो और कुछ अन्य आवश्यकता-से-बचाव भी शामिल है)। कुछ समय के लिए अनजान लग रहा है लेकिन समय के लिए सबसे अच्छा विकल्प हो सकता है।
+0

शायद आप अपने सीएल-कोड को क्लोजर में बंद कर सकते हैं और क्लोजर-क्लियर का उपयोग कर सकते हैं? : –

उत्तर

5

"यह आ गया है कि मैं अपनी कार्यक्षमता में से कुछ कुछ अन्य NET अनुप्रयोगों को बेनकाब करने की जरूरत है"

निम्नलिखित वास्तव में क्या आप के लिए पूछ रहे हैं नहीं है, लेकिन अगर आप एक पल के लिए बॉक्स से बाहर निकलना चाहते हैं, तो मुझे लगता है कि शायद मैसेजिंग का उपयोग करना सबसे आसान होगा (यह पूरी तरह ऊपर उद्धृत बयान पर आधारित है)। कुछ ZeroMQ की तरह, जिसमें सामान्य लिस्प के साथ-साथ नेट दोनों के लिए बाइंडिंग है। फिर यह एक प्रश्न नहीं होगा कि इसे बनाने के लिए मॉड्यूल को फिर से लिखना कैसे है। संगत संगत, लेकिन मॉड्यूल में मैसेजिंग को एकीकृत करने के लिए एक स्वतंत्र .Net ऐप को उपभोग करने के लिए कैसे करें। वार्तालाप के दोनों पक्षों को संदेश प्रारूप पर सहमत होना होगा, लेकिन मेरे दिमाग में जो आपके पोस्ट में आपके द्वारा विचार किए जाने वाले मार्ग से आसान है।

यदि आपको इसे एक से अधिक एप्लिकेशन बनाना है, तो शायद एक पब/उप आर्किटेक्चर आपकी आवश्यकता के अनुरूप होगा।

+0

खैर, मैं मानता हूं कि यह शायद इस विशेष उदाहरण के लिए आसान होगा, लेकिन मुझे लगता है कि सीएल-एर्स के लिए यह काफी सकारात्मक बात होगी कि उनके कोड का उपयोग बड़े पैमाने पर करने का विकल्प हो। इसके अलावा, इसके लिए सीएल रैपर एलजीपीएल के तहत जारी किया जाता है जो आम तौर पर [एलएलजीपीएल] (http: // के पक्ष में) [http://common-lisp.net/faq.shtml#lgpl) है। opensource.franz.com/)। मैं इसके बारे में लेखक से संपर्क कर सकता हूं। – JPanest

+0

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

+0

ठीक है, इसके बारे में सोचने के लिए केवल कुछ ही है। निश्चित रूप से आपको सबसे अच्छा तरीका मिल जाएगा जो आपके लिए काम करता है। मैंने केवल इसे 1 कारण लाया है: ऐसा लगता है कि आपके पास कई ऐप्स होंगे और 2: मेरे अपने अनुभव से यह आसान है कि छोटे, अत्यधिक विशिष्ट ऐप्स हों जो संदेशों के माध्यम से बड़े ऐप्स/मॉड्यूल होने की बजाय संदेश के माध्यम से बात करते हैं सभी उपभोक्ताओं के लिए चीजें। वह और मैं व्यक्तिगत रूप से पोर्टिंग कोड (क्लोजर सुझाव की तरह) से नफरत करता हूं, इसलिए यह उस तरह का मानसिक टूलसेट है जिस पर मैं पहुंचता हूं। YMMV। – Shaun

0

आप कुछ ब्याज LSharp की LSharp मिल सकती है Iron Scheme वहाँ भी Xronos, whihc एक लिस्प बोली होने का दावा करता है भी है।

मैं पर पर अपने कोड को पोर्ट करने के लिए कितना मुश्किल लगेगा, लैंगेज लिस्पे से अधिक है। लिस्प में निश्चित रूप से कुछ संरचनाएं हैं, मुझे स्पष्ट रूप से F # में दबाया जाना मुश्किल लगेगा।

+0

हां, मैंने हाल ही में अन्य कारणों से एफ # पर कई किताबें उठाई हैं। वर्तमान प्रणाली मैक्रोज़ का काफी भारी उपयोग करती है और कुछ संबंधित डीएसएल का खुलासा करती है जो एक गैर-लिस्प में व्यक्त करना मुश्किल होता है (या, कम से कम पुनर्लेखन पर)। – JPanest

+0

एक्स्रोनोस दिलचस्प लग रहा है लेकिन ऐसा लगता है कि इसमें 7 महीने में कोई काम नहीं है और 13 में कोई मेलिंग सूची पोस्ट नहीं है। मुझे यह इंगित करने के लिए धन्यवाद, मैंने इसे पहले नहीं देखा था। – JPanest

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