एलएफई (प्रोग्रामिंग भाषा)

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

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

विर्डिंग ने मार्च 2008 में एर्लांग प्रश्न मेल सूची पर एलएफई की पहली विमोचन की घोषणा की। एलआईएफई की यह विमोचन बहुत सीमित थी: यह पुनरावर्ती,  ,  , या   को संभाल नहीं पाई; यह लिस्प शेल का भी समर्थन नहीं करता था।

एलएफई का प्रारंभिक विकास डेल एक्सपीएस लैपटॉप पर एर्लैंग के संस्करण आर12बी-0 के साथ किया गया था।

उद्देश्य
रॉबर्ट विर्डिंग ने कहा है कि एलएफई प्रोग्रामिंग भाषा प्रारम्भ करने के कई कारण थे:


 * उन्हें लिस्प में प्रोग्रामिंग का पूर्व अनुभव था।
 * अपने पूर्व अनुभव को देखते हुए, वह अपना स्वयं का लिस्प लागू करने में रुचि रखते थे।
 * विशेष रूप से, वह एरलांग में एक लिस्प को लागू करना चाहता था: न केवल वह यह देखने के लिए उत्सुक था कि यह कैसे चलेगा और एरलांग के साथ एकीकृत होगा, वह यह भी देखना चाहता था कि यह कैसा दिखेगा।
 * एर्लांग प्रोग्रामिंग भाषा बनाने में मदद करने के बाद से, उनका लक्ष्य एक लिस्प बनाना था जो विशेष रूप से बीईएएम पर चलने के लिए अभिकल्पित किया गया था और एर्लांग/ओटीपी के साथ पूरी तरह से बातचीत करने में सक्षम था।
 * वह एर्लैंग पर दूसरी भाषा संकलक के साथ प्रयोग करना चाहते थे। इस प्रकार, उन्होंने एलएफई को कोर एरलांग उत्पन्न करके और इसे एरलांग संकलनकर्ता के बैकएंड में प्लग करके इसका पता लगाने के साधन के रूप में देखा था।

विशेषताएँ

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

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

सूचियाँ
एलएफई में, सूची डेटा प्रकार को उसके तत्वों के साथ रिक्त स्थान से अलग करके और कोष्ठक से घिरा हुआ लिखा जाता है। उदाहरण के लिए, एक सूची है जिसके तत्व पूर्णांक  और  हैं, और परमाणु फू|. ये मान अंतर्निहित रूप से मुद्रलेखन किए गए हैं: वे क्रमशः दो पूर्णांक और एक लिस्प-विशिष्ट डेटा प्रकार हैं जिन्हें प्रतीकात्मक परमाणु कहा जाता है, और उन्हें इस तरह घोषित करने की आवश्यकता नहीं है।

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

संचालक
एलएफई-ईआरएलएएनजी संचालक का उपयोग उसी तरह किया जाता है। अभिव्यक्ति 42 का मूल्यांकन करता है। एर्लांग और एलएफई में फलन के विपरीत, लिस्प में अंकगणित संचालक विविध फलन (या एन-एरी) हैं, जो किसी भी संख्या में तर्क लेने में सक्षम हैं।

लैम्ब्डा अभिव्यक्ति और फलन परिभाषा
एलएफई में कॉमन लिस्प की तरह ही लैम्ब्डा है। हालाँकि, इसमें अनाम फलन कॉल में एर्लैंग की प्रतिरूप-मिलान क्षमताओं को ध्यान में रखते हुए लैम्ब्डा-मिलान भी है।

एलएफई में एर्लांग मुहावरे
यह खंड एर्लांग और एलएफई के बीच पूर्ण तुलना का प्रतिनिधित्व नहीं करता है, लेकिन इसे एक अनुभव देना चाहिए।

प्रतिरूप मिलान
एरलांग: एलएफई:

सूची समझ
एरलांग: एलएफई: या इडिओमाटिक फंक्शनल शैली:

गार्ड
एरलांग: एलएफई:

फलन शीर्षों में सहमति
एरलांग: एलएफई: या कंस्ट्रक्टर प्रपत्र के स्थान पर ``cons`` शाब्दिक का उपयोग करना:

फलन शीर्षों में अभिलेख मिलान
एरलांग: एलएफई:

संदेश प्राप्त करना
एरलांग: एलएफई: या:

एर्लैंग अंतरप्रचालनीयता
एर्लांग फलन के लिए कॉल स्वरुप लेते हैं (<मॉड्यूल>:<फलन> ... ):

फंक्शनल प्रतिमान
एकरमैन फलन को परिभाषित करने के लिए रिकर्सन का उपयोग करना: रचना कार्य:

समवर्ती
एरलांग की हल्की-फुल्की प्रक्रियाओं के साथ संदेश भेजना: एकाधिक एक साथ एचटीटीपी अनुरोध:

बाहरी संबंध

 * एलएफई क्विक स्टार्ट
 * एलएफई यूजर गाइड
 * एलएफई ऑन रोसेटा कोड
 * एलएफई यूजर गाइड
 * एलएफई ऑन रोसेटा कोड