JVM पर हास्केल?


83

मुझे आश्चर्य हो रहा है कि JVM (संकलित या व्याख्या) पर हास्केल को चलाने का कोई तरीका है?

Sourceforge पर JHaskell मौजूद है लेकिन यह खाली और मृत प्रतीत होता है।

जीएचसी एलएलवीएम को संकलक बैकएंड के रूप में उपयोग करता है। क्या यह एक अच्छा विचार है या Java bytecode में LLVM संकलन करना संभव है? या शायद एक अलग संकलक बैकएंड का उपयोग करें?



4
और यह पूरा धागा हैस्केल-कैफे पर।
जोश ली

3
टेल कॉल ऑप्टिमाइज़ेशन अभी भी एक खुला मुद्दा लगता है। इसीलिए क्लोजर जैसी अन्य कार्यात्मक jvm भाषाओं को विशेष निर्माणों ( recur) की आवश्यकता होती है ।
जेह

13
@ जेहा: नाह, टीसीओ आसान है। सिपाही इसे करता है, एरजंग इसे करता है, कावा और जेवीएम पर अन्य सभी योजना कार्यान्वयन करते हैं। जेवीएम में अपवाद हैं, जो मूल रूप से वही हैं GOTO, जिनका उपयोग TCO को लागू करने के लिए किया जा सकता है। या आप ट्रैंपोलिन का उपयोग करते हैं। या आप JVM कॉल स्टैक का उपयोग बिल्कुल भी न करें और बस अपना स्वयं का कार्यान्वयन करें। क्लोजर और स्काला केवल सीमित TCO प्रदान करते हैं (मूल रूप से, केवल पूंछ पुनरावृत्ति को अनुकूलित किया गया है) इसका कारण यह है कि वे JVM कॉल स्टैक का उपयोग इंटरऑपरेबिलिटी और प्रदर्शन कारणों के लिए करना चाहते हैं । रिच हिकी के रूप में, क्लीजुर के डिजाइनर ने कहा: इंटरोप, गति, टीसीओ - पिक दो।
जोर्ग डब्ल्यू मित्तग

3
मैं कल्पना नहीं कर सकता कि हास्केल को जेवीएम के लिए संकलित करना कठिन होगा यदि आपने प्रदर्शन के बारे में बिल्कुल भी परवाह नहीं की और केवल हास्केल भाषा की आवश्यकता पर ध्यान केंद्रित किया। Jorg उल्लेख के रूप में trampolines का उपयोग करें। उन्हें लागू करना आसान है। सबसे सरल डेटा संरचनाओं का उपयोग करें जो काम करते हैं। अनुकूलन को परेशान मत करो। मुझे यकीन है कि अगर वह वास्तव में परवाह करता है तो कोई व्यक्ति एक सप्ताह के भीतर काम और पूर्ण कार्यान्वयन को हैक कर सकता है।
थॉमस ईडिंग सेप

जवाबों:


80

आप फ्रीज की जांच करना चाह सकते हैं । उस पृष्ठ से उद्धरण:

"फ्रीज हास्केल की भावना में एक गैर-सख्त, शुद्ध कार्यात्मक प्रोग्रामिंग भाषा है।"

"फ्रीज कार्यक्रमों को जावा में संकलित किया जाता है और एक जेवीएम में चलाया जाता है।"

भाषा विनिर्देश के संक्षिप्त विवरण के आधार पर, फ्रीज लगभग हास्केल क्लोन प्रतीत होता है। शायद वाक्यांश "हास्केल की भावना में" उचित अपेक्षा को निर्धारित करने के लिए simpy है।


1
लगता है कि उन्होंने अपने पृष्ठ को थोड़ा अद्यतन किया है - अब यह पढ़ता है "फ्रीज जेवीएम के लिए एक हास्केल है।" जो एक बहुत मजबूत दावा है IMO।
माइकल एंडरसन

25

हास्केल जेवीएम पर खूबसूरती से काम करता है। एटा को देखें , जो एक परियोजना है जो टाइप-सुरक्षित जावा इंटरॉप के साथ जेवीएम पर पूर्ण जीएचसी 7.10.3 हास्केल लाता है।


12

एकमात्र भाषा जो मुझे पता है कि JVM में हैसेल के करीब है CAL है। CAL भारी हैस्केल पर आधारित है, लेकिन इसमें सभी हैसेल की विशेषताएं नहीं हैं। प्रकार प्रणाली हास्केल 98 के समान है, और doसंकेतन चीनी की तरह संकेतन गायब है।

यहाँ हास्केल और CAL की तुलना की गई है: Haskell प्रोग्रामर्स के लिए CAL

ग्रहण प्लगइन बहुत पॉलिश और उपयोगी है।

ध्यान दें कि CAL ओपन क्वार्क फ्रेमवर्क का हिस्सा है।


वास्तव में मैं "असली वाला" ढूंढ रहा हूं। मैं CAL के बारे में निर्णय नहीं ले सकता। लेकिन लगता है कि CAL टाइप btw है। पहली छाप वास्तव में बहुत हकीश है।
जेह

CAL में वास्तव में प्रकार की कक्षाएं होती हैं - यह हास्केल 98 माइनस सटिक शुगर का एक अच्छा सा हिस्सा है।
tgdavies

अतिरिक्त जानकारी के लिए धन्यवाद tgdavies, मैं खुद CAL प्रोग्रामर नहीं हूँ
islon

कुछ दिनों के लिए मैं हॉक प्रोग्रामर्स दस्तावेज़ के लिए CAL प्राप्त करने का प्रयास करता हूं। आपके द्वारा प्रदान किया गया लिंक मदद के लिए प्रतीत नहीं होता है। क्या कोई व्यक्ति पीडीऍफ़ में काम करने का लिंक पोस्ट कर सकता है?
इंगो

@Ingo: उपयोगकर्ता की मार्गदर्शिका का यह लिंक काम करना चाहिए, लेकिन शायद यह नवीनतम नहीं है: resource.businessobjects.com/labs/cal/cal_users_guide.pdf
jeha

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.