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

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

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

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

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

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


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

विशेषताएँ

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

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

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

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

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

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

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

पैटर्न मिलान
एरलांग: एलएफई:

सूची समझ
एरलांग: एलएफई: या मुहावरेदार कार्यात्मक शैली:

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

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

फ़ंक्शन शीर्षों में रिकॉर्ड मिलान
एरलांग: एलएफई:

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

एर्लैंग इंटरऑपरेबिलिटी
एर्लांग फ़ंक्शंस के लिए कॉल फॉर्म लेते हैं (<मॉड्यूल>:<फ़ंक्शन> ... ):

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

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

बाहरी संबंध

 * LFE Quick Start
 * LFE User Guide
 * LFE on Rosetta Code
 * LFE User Guide
 * LFE on Rosetta Code