नेमर्ले: Difference between revisions
No edit summary |
No edit summary |
||
Line 44: | Line 44: | ||
def myList = List(); // generic List[T], type T is deduced from the usage in the next line | def myList = List(); // generic List[T], type T is deduced from the usage in the next line | ||
myList.Add(x); // compiler deduces type of T as int making myList type of List[int] | myList.Add(x); // compiler deduces type of T as int making myList type of List[int] | ||
</syntaxhighlight | </syntaxhighlight> | ||
=== सब एक अभिव्यक्ति है === | === सब एक अभिव्यक्ति है === | ||
Line 77: | Line 72: | ||
false // x = false | false // x = false | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===टुपल्स === | ===टुपल्स === | ||
<syntaxhighlight> | <syntaxhighlight> | ||
def k = (1, "one"); // k : (int * string) | def k = (1, "one"); // k : (int * string) | ||
def (a, b) = k; // a = 1, b = "one" | def (a, b) = k; // a = 1, b = "one" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== पैटर्न मिलान === | === पैटर्न मिलान === | ||
<syntaxhighlight> | <syntaxhighlight> | ||
Line 122: | Line 87: | ||
| _ => "more than one" | | _ => "more than one" | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
डीईएफ़ परिणाम = मैच (संख्या) | डीईएफ़ परिणाम = मैच (संख्या) | ||
{ | { | ||
Line 187: | Line 154: | ||
WriteLine(mult(2, 2)); // 4 | WriteLine(mult(2, 2)); // 4 | ||
WriteLine(fibonacci(10)); // 55 | WriteLine(fibonacci(10)); // 55 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 0 => 0 | | 0 => 0 | ||
| 1 => 1 | | 1 => 1 | ||
| अन्य => फाइबोनैचि (i - 1) + फाइबोनैचि (i - 2) | | अन्य => फाइबोनैचि (i - 1) + फाइबोनैचि (i - 2) | ||
=== प्रकार === | === प्रकार === | ||
वेरिएंट (एसएमएल और [[OCaml|ओकैमल]] में डेटा प्रकार या [[योग प्रकार]] कहा जाता है) कई अलग-अलग प्रकार के डेटा को व्यक्त करने के रूप हैं: | वेरिएंट (एसएमएल और [[OCaml|ओकैमल]] में डेटा प्रकार या [[योग प्रकार]] कहा जाता है) कई अलग-अलग प्रकार के डेटा को व्यक्त करने के रूप हैं: | ||
<syntaxhighlight> | |||
variant RgbColor { | variant RgbColor { | ||
| Red | | Red | ||
Line 220: | Line 173: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== मेटाप्रोग्रामिंग === | === मेटाप्रोग्रामिंग === | ||
नेमर्ले का मैक्रो प्रणाली संकलन के समय प्रोग्राम संहिता बनाने, विश्लेषण करने और संशोधित करने की अनुमति देता है। मैक्रोज़ का उपयोग विधि कॉल के रूप में या नई भाषा निर्माण के रूप में किया जा सकता है। भाषा के अंदर कई निर्माण मैक्रोज़ (यदि, के लिए, प्रत्येक के लिए, अपितु, आदि का उपयोग करके) का उपयोग करके कार्यान्वित किए जाते हैं।<syntaxhighlight> | नेमर्ले का मैक्रो प्रणाली संकलन के समय प्रोग्राम संहिता बनाने, विश्लेषण करने और संशोधित करने की अनुमति देता है। मैक्रोज़ का उपयोग विधि कॉल के रूप में या नई भाषा निर्माण के रूप में किया जा सकता है। भाषा के अंदर कई निर्माण मैक्रोज़ (यदि, के लिए, प्रत्येक के लिए, अपितु, आदि का उपयोग करके) का उपयोग करके कार्यान्वित किए जाते हैं।<syntaxhighlight> | ||
Line 259: | Line 200: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== ब्रेसलेस सिंटैक्स === | === ब्रेसलेस सिंटैक्स === | ||
Line 291: | Line 205: | ||
बाद में [[स्काला (प्रोग्रामिंग भाषा)|स्काला(प्रोग्रामिंग भाषा)]] में जोड़े गए ब्रेसलेस सिंटैक्स के समान, नेमर्ले प्रोग्रामर को वैकल्पिक रूप से पायथन (प्रोग्रामिंग लैंग्वेज) के समान ऑफ-साइड नियम के आधार पर एक श्वेत रिक्ति-संवेदनशील सिंटैक्स का उपयोग करने की अनुमति देता है। | बाद में [[स्काला (प्रोग्रामिंग भाषा)|स्काला(प्रोग्रामिंग भाषा)]] में जोड़े गए ब्रेसलेस सिंटैक्स के समान, नेमर्ले प्रोग्रामर को वैकल्पिक रूप से पायथन (प्रोग्रामिंग लैंग्वेज) के समान ऑफ-साइड नियम के आधार पर एक श्वेत रिक्ति-संवेदनशील सिंटैक्स का उपयोग करने की अनुमति देता है। | ||
निम्नलिखित कर्ली-ब्रेस स्निपेट: | निम्नलिखित कर्ली-ब्रेस स्निपेट:<syntaxhighlight> | ||
using System.Console; | using System.Console; | ||
Line 323: | Line 231: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight> | |||
using System.Console; | using System.Console; | ||
Line 364: | Line 252: | ||
foo | foo | ||
</syntaxhighlight>के रूप में फिर से लिखा जा सकता है: | </syntaxhighlight>के रूप में फिर से लिखा जा सकता है: | ||
विशेष रूप से, बैकस्लैश का उपयोग किए बिना कई पंक्तियों में मैचों में अभिव्यक्तियों या वैकल्पिक खंडों को तोड़ना संभव नहीं है <code>\</code>: | विशेष रूप से, बैकस्लैश का उपयोग किए बिना कई पंक्तियों में मैचों में अभिव्यक्तियों या वैकल्पिक खंडों को तोड़ना संभव नहीं है <code>\</code>: | ||
// यह संकलित नहीं होगा ... | // यह संकलित नहीं होगा ... | ||
Line 463: | Line 327: | ||
पारंपरिक हैलो वर्ल्ड! प्रोग्राम अधिक सी #-जैसी फैशन में कार्यान्वित किया जा सकता है: | पारंपरिक हैलो वर्ल्ड! प्रोग्राम अधिक सी #-जैसी फैशन में कार्यान्वित किया जा सकता है: | ||
=== मैक्रोज़ के उदाहरण === | === मैक्रोज़ के उदाहरण === | ||
Line 484: | Line 333: | ||
==== स्ट्रिंग स्वरूपण ==== | ==== स्ट्रिंग स्वरूपण ==== | ||
स्ट्रिंग स्वरूपण मैक्रो $ संकेतन का उपयोग करके चर कोतंत्रिकाजोड़तोड़ के लिए सरल करता है: | स्ट्रिंग स्वरूपण मैक्रो $ संकेतन का उपयोग करके चर कोतंत्रिकाजोड़तोड़ के लिए सरल करता है: | ||
==== घोषणात्मक संहिता पीढ़ी ==== | ==== घोषणात्मक संहिता पीढ़ी ==== | ||
संरचनात्मक समानता, मेमोइज़, जेसन, और मैक्रोज़ हैं जो संकलन समय में संहिता उत्पन्न करते हैं। चूंकि उनमें से कुछ (संरचनात्मक समानता, मेमोइज़) सी# विशेषताओं की तरह दिख सकते हैं, संकलन के समय, उन्हें संकलक द्वारा जांचा जाएगा और उनके मैक्रोज़ द्वारा पूर्वनिर्धारित तर्क का उपयोग करके उपयुक्त संहिता में बदल दिया जाएगा। | संरचनात्मक समानता, मेमोइज़, जेसन, और मैक्रोज़ हैं जो संकलन समय में संहिता उत्पन्न करते हैं। चूंकि उनमें से कुछ (संरचनात्मक समानता, मेमोइज़) सी# विशेषताओं की तरह दिख सकते हैं, संकलन के समय, उन्हें संकलक द्वारा जांचा जाएगा और उनके मैक्रोज़ द्वारा पूर्वनिर्धारित तर्क का उपयोग करके उपयुक्त संहिता में बदल दिया जाएगा। | ||
====डेटाबेस पहुंच ==== | ====डेटाबेस पहुंच ==== | ||
Line 533: | Line 342: | ||
एसक्यूएल के लिए नेमर्ले मैक्रोज़ का उपयोग करके आप लिख सकते हैं: | एसक्यूएल के लिए नेमर्ले मैक्रोज़ का उपयोग करके आप लिख सकते हैं: | ||
और यह केवल लाइब्रेरी में कुछ संचालन छुपा नहीं रहा है, किंतु जिज्ञासा तंत्रिका(क्वेरी स्ट्रिंग) को समझने के लिए संकलक द्वारा किया गया अतिरिक्त कार्य, वहां उपयोग किए जाने वाले चर, और स्तम्भ डेटाबेस से लौटाए गए हैं। ExecuteReaderLoop(रीडरलूप निष्पादित करें) मैक्रो आपको मैन्युअल(स्वनिर्मित) रूप से अंकित करने के लिए सामान्यतः समतुल्य संहिता उत्पन्न करेगा। इसके अतिरिक्त, यह जाँचने के लिए संकलन समय पर डेटाबेस से जुड़ता है कि आपकी एसक्यूएल जिज्ञासा वास्तव में समझ में आती है। | और यह केवल लाइब्रेरी में कुछ संचालन छुपा नहीं रहा है, किंतु जिज्ञासा तंत्रिका(क्वेरी स्ट्रिंग) को समझने के लिए संकलक द्वारा किया गया अतिरिक्त कार्य, वहां उपयोग किए जाने वाले चर, और स्तम्भ डेटाबेस से लौटाए गए हैं। ExecuteReaderLoop(रीडरलूप निष्पादित करें) मैक्रो आपको मैन्युअल(स्वनिर्मित) रूप से अंकित करने के लिए सामान्यतः समतुल्य संहिता उत्पन्न करेगा। इसके अतिरिक्त, यह जाँचने के लिए संकलन समय पर डेटाबेस से जुड़ता है कि आपकी एसक्यूएल जिज्ञासा वास्तव में समझ में आती है। | ||
Line 564: | Line 347: | ||
==== नई भाषा का निर्माण ==== | ==== नई भाषा का निर्माण ==== | ||
नेमर्ले मैक्रोज़ के साथ आप भाषा में कुछ नए सिंटैक्स भी प्रस्तुत कर सकते हैं: | नेमर्ले मैक्रोज़ के साथ आप भाषा में कुछ नए सिंटैक्स भी प्रस्तुत कर सकते हैं: | ||
=== एएसपी.नेट के साथ नेमेर्ले === | === एएसपी.नेट के साथ नेमेर्ले === | ||
नेमर्ले को या तो सीधे एएसपी.नेट(ASP.NET) में एम्बेड किया जा सकता है: | नेमर्ले को या तो सीधे एएसपी.नेट(ASP.NET) में एम्बेड किया जा सकता है: | ||
=== पी इनवोक === | === पी इनवोक === | ||
नेमेर्ले वास्तविक मंच पुस्तकालय का लाभ उठा सकता है। सिंटैक्स सी# और अन्य '''.'''NET भाषाओं के समान है। यहाँ सबसे सरल उदाहरण है: | नेमेर्ले वास्तविक मंच पुस्तकालय का लाभ उठा सकता है। सिंटैक्स सी# और अन्य '''.'''NET भाषाओं के समान है। यहाँ सबसे सरल उदाहरण है: | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 20:57, 4 March 2023
Paradigm | Multi-paradigm: aspect-oriented, event-driven, functional, generic, imperative, meta, object-oriented, reflective |
---|---|
परिवार | C# |
द्वारा डिज़ाइन किया गया | Kamil Skalski, Michał Moskal, Prof. Leszek Pacholski, Paweł Olszta at Wrocław University |
Developer | JetBrains (formerly) RSDN |
पहली प्रस्तुति | 2003 |
Stable release | 1.2.507.0[1]
/ 6 August 2016 |
टाइपिंग अनुशासन | Inferred, nominal, static, strong |
प्लेटफॉर्म | CLI |
फ़ाइल नाम एक्सटेंशनएस | .n |
वेबसाइट | nemerle |
Major implementations | |
Nemerle | |
Influenced by | |
C#, Lisp, ML |
नेमर्ले एक सामान्य-उद्देश्य, उच्च स्तरीय, वैधानिक रूप से स्थिर टाइपिंग की गई प्रोग्रामिंग भाषा है। कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर अर्थात सामान्य भाषा अवसंरचना(.NET/Mono) का उपयोग करने वाले प्लेटफार्मों के लिए डिज़ाइन किया गया है। यह कार्यात्मक प्रोग्रामिंग, वस्तु-उन्मुख, पहलू-उन्मुख प्रोग्रामिंग, चिंतनशील प्रोग्रामिंग और अनिवार्य प्रोग्रामिंग सुविधाएँ प्रदान करता है। इसमें एक साधारण सी-शार्प (प्रोग्रामिंग लैंग्वेज) अर्थात सी#-जैसे सिंटैक्स और एक शक्तिशाली मेटाप्रोग्रामिंग प्रणाली है।
जून 2012 में, चेक सॉफ्टवेयर डेवलपमेंट कंपनी जेटब्रेन्स द्वारा नेमर्ले के मुख्य डेवलपर्स को काम पर रखा गया था। यज टीम नाइट्रा(नित्रा) को विकसित करने पर ध्यान केंद्रित कर रही थी, जो आधुनिक और नई प्रोग्रामिंग भाषाओं को प्रयुक्त करने के लिए एक रूपरेखा है।[2][3][4] नेमर्ले भाषा और नाइट्रा दोनों को जेटब्रेन्स द्वारा छोड़ दिया गया है अथवा यह बंद कर दिया गया है; नाइट्रा को 2017 के बाद से इसके मूल रचनाकारों द्वारा अपडेट नहीं किया गया है और नेमर्ले को अब पूरी तरह से रूसी सॉफ्टवेयर डेवलपमेंट नेटवर्क, जेटब्रेन्स से स्वतंत्र रूप से बनाए रखा गया है, चूंकि अभी तक कोई बड़ा अपडेट जारी नहीं किया गया है और विकास बहुत धीमी गति से आगे बढ़ रहा है। जेटब्रेन्स द्वारा वर्षों से न तो नेमेर्ले और न ही नाइट्रा का उल्लेख या संदर्भ दिया गया है।
नेमेर्ले का नाम आर्कमेज नेमेर्ले के नाम पर रखा गया है, जो उर्सुला के. ले गिनी द्वारा फंतासी उपन्यास पृथ्वीसमुद्र का एक जादूगर(विजार्ड ऑफ अर्थसी) में एक पात्र है।
विशेषताएं
नेमर्ले की सबसे उल्लेखनीय विशेषता प्रोग्रामिंग की शैलियों को मिलाने की क्षमता है जो वस्तु उन्मुख और कार्यात्मक हैं। प्रोग्राम को वस्तु उन्मुख अवधारणाएँ जैसे वर्ग और नाम-स्थान का उपयोग करके संरचित किया जा सकता है, अपितु विधियों को एक कार्यात्मक शैली में लिखा जा सकता है। अन्य उल्लेखनीय विशेषताओं में सम्मिलित हैं:
- शक्तिशाली प्रकार का निष्कर्ष
- एक लचीला मेटाप्रोग्रामिंग उपप्रणाली (मैक्रोज़ का उपयोग करके)
- सी#, जावा (प्रोग्रामिंग लैंग्वेज), और सी++ की शैली में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग अथवा वस्तु उन्मुख कार्यकर्म(ओओपी) के लिए पूर्ण समर्थन
- एमएल (प्रोग्रामिंग भाषा), ओकैमल, और हास्केल (प्रोग्रामिंग भाषा) की शैली में कार्यात्मक प्रोग्रामिंग के लिए पूर्ण समर्थन, इसकी विशेषताओं के साथ:
- उच्च क्रम के कार्य
- पैटर्न मिलान
- बीजगणितीय प्रकार
- स्थानीय कार्य
- ट्यूपल्स और अज्ञात प्रकार
- कार्यों का आंशिक अनुप्रयोग
एक उच्च-स्तरीय प्रोग्रामिंग भाषा जावा(प्रोग्रामिंग भाषा) है। मेटाप्रोग्रामिंग प्रणाली प्रोग्रामर्स से जितना संभव हो उतना बोझ उठाने के लिए एक उच्च-स्तरीय दृष्टिकोण लेते हुए, महान संकलक विस्तारशीलता, डोमेन-विशिष्ट भाषाओं को एम्बेड करने, आंशिक मूल्यांकन और पहलू-उन्मुख प्रोग्रामिंग की अनुमति देता है। भाषा पैरामीट्रिक बहुरूपता, बेनामी प्रकार्य, विस्तार विधियों आदि सहित सभी सामान्य भाषा अवसंरचना (सीएलआई) मानक सुविधाओं को जोड़ती है। .NET या मोनो प्लेटफ़ॉर्म में सम्मिलित पुस्तकालयों तक पहुँचना सी# जितना सरल है।
प्रकार का निष्कर्ष
def x = 1; // int
def myList = List(); // generic List[T], type T is deduced from the usage in the next line
myList.Add(x); // compiler deduces type of T as int making myList type of List[int]
सब एक अभिव्यक्ति है
def x =
{ // similar to x = 3
def y = 1;
def z = 2;
y + z // this last statement is a block return value
};
def x =
if (DateTime.Now.DayOfWeek == DayOfWeek.Monday) // if, using, try are also expressions
"Monday"
else
"other day";
def x = try int.Parse(someString)
catch { | FormatException() => 0 };
def x = returnBlock :
{
foreach (i in [1, 2, 3])
when (i > 2)
returnBlock(true); // exit block (x = true)
false // x = false
};
टुपल्स
def k = (1, "one"); // k : (int * string)
def (a, b) = k; // a = 1, b = "one"
पैटर्न मिलान
def result = match (number)
{
| 0 => "zero"
| 1 => "one"
| x when x < 0 => "negative"
| _ => "more than one"
}
डीईएफ़ परिणाम = मैच (संख्या)
{
| 0 => शून्य | 1 => एक | x जब x <0 => ऋणात्मक | _ => एक से अधिक
} </वाक्यविन्यास हाइलाइट>
Type matching with variable binding:
def check (o : object) {
match (o)
{
| i is int => $"An int: $i"
| s is string => $"A string: $(s.ToUpper())"
| _ => "Object of another type"
}
}
Tuple pattern matching:
match (tuple)
{
| ( 42, _ ) => "42 on first position"
| ( _, 42 ) => "42 on second position"
| ( x, y ) => $"( $x, $y )"
}
Regexp matching:
using Nemerle.Text;
regexp match (str) {
| "a+.*" => printf("a\n");
| @"(?<num : int>\d+)-\w+" => printf("%d\n", num + 3);
| "(?<name>(Ala|Kasia))? ma kota" =>
match (name)
{
| Some (n) => printf("%s\n", n)
| None => printf("noname?\n")
}
| _ => printf("default\n");
}
कार्यात्मक प्रकार और स्थानीय प्रकार्य
using System.Console; // classes and modules (static classes) can be put in namespaces
def next(x) { x + 1 }; // the type of x argument and other function arguments can be deduced from usage
def mult(x, y) { x * y };
def fibonacci(i)
{
| 0 => 0
| 1 => 1
| other => fibonacci(i - 1) + fibonacci(i - 2)
};
WriteLine(next(9)); // 10 similar to "Console.WriteLine(next(9));"
WriteLine(mult(2, 2)); // 4
WriteLine(fibonacci(10)); // 55
| 0 => 0 | 1 => 1 | अन्य => फाइबोनैचि (i - 1) + फाइबोनैचि (i - 2)
प्रकार
वेरिएंट (एसएमएल और ओकैमल में डेटा प्रकार या योग प्रकार कहा जाता है) कई अलग-अलग प्रकार के डेटा को व्यक्त करने के रूप हैं:
variant RgbColor {
| Red
| Yellow
| Green
| Different {
red : float;
green : float;
blue : float;
}
}
मेटाप्रोग्रामिंग
नेमर्ले का मैक्रो प्रणाली संकलन के समय प्रोग्राम संहिता बनाने, विश्लेषण करने और संशोधित करने की अनुमति देता है। मैक्रोज़ का उपयोग विधि कॉल के रूप में या नई भाषा निर्माण के रूप में किया जा सकता है। भाषा के अंदर कई निर्माण मैक्रोज़ (यदि, के लिए, प्रत्येक के लिए, अपितु, आदि का उपयोग करके) का उपयोग करके कार्यान्वित किए जाते हैं।
macro @if (cond, e1, e2)
syntax ("if", "(", cond, ")", e1, Optional (";"), "else", e2)
{
/*
<[ ]> defines an area of quasi-quotation, the Nemerle compiler transforms the code in it
to an AST, such transformations are somewhat similar to an Expression compiling in C#
*/
<[
match ($cond : bool)
{
| true => $e1
| _ => $e2
}
]>
}
// using this macro in code:
def max = if (a > b) a else b;
// during a compile time the upper line will be transformed to this:
def max = match (a > b)
{
| true => a
| _ => b
}
ब्रेसलेस सिंटैक्स
बाद में स्काला(प्रोग्रामिंग भाषा) में जोड़े गए ब्रेसलेस सिंटैक्स के समान, नेमर्ले प्रोग्रामर को वैकल्पिक रूप से पायथन (प्रोग्रामिंग लैंग्वेज) के समान ऑफ-साइड नियम के आधार पर एक श्वेत रिक्ति-संवेदनशील सिंटैक्स का उपयोग करने की अनुमति देता है।
निम्नलिखित कर्ली-ब्रेस स्निपेट:
using System.Console;
[Qux]
class FooBar {
public static Main(): void {
WriteLine("Hello")
}
static Foo (x: int): void {
if (x == 3) {
def y = x * 42;
Foo (x)
} else {
[x].Map (fun (x) {
x * 2
})
}
}
static Bar(): int {
def foo = 2 + 7 * 13;
foo
}
}
using System.Console;
[Qux] \
class FooBar
public static Main(): void
WriteLine("Hello")
static Foo (x: int): void
if (x == 3)
def y = x * 42;
Foo (x)
else
[x].Map (fun (x) {
x * 2
})
static Bar(): int
def foo = 2 + 7 * 13
foo
के रूप में फिर से लिखा जा सकता है:
विशेष रूप से, बैकस्लैश का उपयोग किए बिना कई पंक्तियों में मैचों में अभिव्यक्तियों या वैकल्पिक खंडों को तोड़ना संभव नहीं है \
:
// यह संकलित नहीं होगा ...
स्टेटिक बार (): इंट
डेफ फू = 2 + 7 * 13 फू
मिलान
| ए | आ => 1 | बी | बी बी => 2 | _ => 0
// किन्तु यह होगा:
स्टेटिक बार (): इंट
डेफ फू = 2 \ + 7 \ * 13 फू
मिलान
| ए \ | आ => 1 | बी \ | बी बी => 2 | _ => 0
</वाक्यविन्यास हाइलाइट>
// This will not compile ...
static Bar(): int
def foo = 2
+ 7
* 13
foo
match (s)
| "a"
| "aa" => 1
| "b"
| "bb" => 2
| _ => 0
// But this will:
static Bar(): int
def foo = 2 \
+ 7 \
* 13
foo
match (s)
| "a" \
| "aa" => 1
| "b" \
| "bb" => 2
| _ => 0
इस सिंटैक्स को सक्रिय करने के लिए, उपयोगकर्ता को जोड़ना होगा फ़ाइल के शीर्ष पर #pragma indent
या संकलक विकल्प-i
का उपयोग करें।
आईडीई
नेमर्ले को एकीकृत विकास पर्यावरण(आईडीई) विजुअल स्टूडियो 2008 में एकीकृत किया जा सकता है।इसमें विजुअल स्टूडियो 2008 शेल (विजुअल स्टूडियो एक्सप्रेस संस्करण की तरह) और SharpDevelop या तीव्र विकास(लिंक टू प्लगइन सोर्स संहिता ) पर आधारित पूरी तरह से मुफ्त आईडीई भी है।[5]
ऐड-इन्स और एक्सटेंशन(विस्तार) का उपयोग करके नेमर्ले को विजुअल स्टूडियो (2017 तक) में भी एकीकृत किया जा सकता है।[6]
उदाहरण
हैलो, विश्व!
पारंपरिक हैलो वर्ल्ड! प्रोग्राम अधिक सी #-जैसी फैशन में कार्यान्वित किया जा सकता है:
मैक्रोज़ के उदाहरण
मैक्रोज़ संकलक द्वारा किए गए अतिरिक्त स्थिर चेक के साथ बॉयलरप्लेट संहिता उत्पन्न करने की अनुमति देते हैं। वे हाथ से लिखे जाने वाले संहिता की मात्रा को कम करते हैं, संहिता पीढ़ी(कोड जेनरेशन) को सुरक्षित बनाते हैं, और स्रोत संहिता को अपेक्षाकृत छोटा और पठनीय रखते हुए प्रोग्राम को संकलक चेक के साथ संहिता उत्पन्न करने की अनुमति देते हैं।
स्ट्रिंग स्वरूपण
स्ट्रिंग स्वरूपण मैक्रो $ संकेतन का उपयोग करके चर कोतंत्रिकाजोड़तोड़ के लिए सरल करता है:
घोषणात्मक संहिता पीढ़ी
संरचनात्मक समानता, मेमोइज़, जेसन, और मैक्रोज़ हैं जो संकलन समय में संहिता उत्पन्न करते हैं। चूंकि उनमें से कुछ (संरचनात्मक समानता, मेमोइज़) सी# विशेषताओं की तरह दिख सकते हैं, संकलन के समय, उन्हें संकलक द्वारा जांचा जाएगा और उनके मैक्रोज़ द्वारा पूर्वनिर्धारित तर्क का उपयोग करके उपयुक्त संहिता में बदल दिया जाएगा।
डेटाबेस पहुंच
एसक्यूएल के लिए नेमर्ले मैक्रोज़ का उपयोग करके आप लिख सकते हैं:
और यह केवल लाइब्रेरी में कुछ संचालन छुपा नहीं रहा है, किंतु जिज्ञासा तंत्रिका(क्वेरी स्ट्रिंग) को समझने के लिए संकलक द्वारा किया गया अतिरिक्त कार्य, वहां उपयोग किए जाने वाले चर, और स्तम्भ डेटाबेस से लौटाए गए हैं। ExecuteReaderLoop(रीडरलूप निष्पादित करें) मैक्रो आपको मैन्युअल(स्वनिर्मित) रूप से अंकित करने के लिए सामान्यतः समतुल्य संहिता उत्पन्न करेगा। इसके अतिरिक्त, यह जाँचने के लिए संकलन समय पर डेटाबेस से जुड़ता है कि आपकी एसक्यूएल जिज्ञासा वास्तव में समझ में आती है।
नई भाषा का निर्माण
नेमर्ले मैक्रोज़ के साथ आप भाषा में कुछ नए सिंटैक्स भी प्रस्तुत कर सकते हैं:
एएसपी.नेट के साथ नेमेर्ले
नेमर्ले को या तो सीधे एएसपी.नेट(ASP.NET) में एम्बेड किया जा सकता है:
पी इनवोक
नेमेर्ले वास्तविक मंच पुस्तकालय का लाभ उठा सकता है। सिंटैक्स सी# और अन्य .NET भाषाओं के समान है। यहाँ सबसे सरल उदाहरण है:
संदर्भ
- ↑ Nemerle 1.2.507.0
- ↑ "Twitter / orangy: We've decided to bring Nemerle". Twitter.com. Retrieved 2013-09-05.
- ↑ "JetBrains .NET Tools Blog » JetBrains and Nemerle". Blogs.jetbrains.com. 2012-06-27. Retrieved 2013-09-05.
- ↑ "Google Discussiegroepen". Retrieved 2013-09-05.
- ↑ Nemerle Studio Microsoft Setup Installer can be installed after installing Visual Studio Shell 2008 Isolated
- ↑ Visual Studio 2010 add-in
अग्रिम पठन
- Publications about नेमर्ले in RSDN Magazine, Russian official science magazine
- Moskal, Michał (27 June 2005). "Type Inference with Deferral" (PDF). Institute of Computer Science, University of Wrocław.
{{cite journal}}
: Cite journal requires|journal=
(help) - Presentation "नेमर्ले is notable" by Denis Rystsov
- Article "Unconventional languages for unconventional supercomputers" by Andrey Adinetz