Content deleted Content added
Restored from draft |
Fix typo in spelling of Nim ("Nimr") |
||
Line 24:
== Description ==
Nim's syntax is an unusual blend between Python and Pascal<ref>{{Cite web|url = http://www.drdobbs.com/jvm/the-rise-and-fall-of-languages-in-2013/240165192|title = The Rise And Fall of Languages in 2013|date = 2014-01-07|accessdate = |website = |publisher = Dr. Dobb's|last = Binstock|first = Andrew}}</ref>. The language shares many syntactical similarities to Python<ref name="pichetablog">{{cite web|url=http://picheta.me/articles/2013/10/about-nimrods-features.html|title=About Nimrod's features|first=Dominik|last=Picheta|work=Blog|date=2013-10-27|accessdate=2014-07-20}}</ref> (for example the <code>if</code> and <code>for</code> statements are practically identical), Nim however differs greatly when it comes to semantics: for a start
Nim supports compile-time metaprogramming features such as AST macros and term rewriting macros,<ref name="manual">{{cite web|url=http://nim-lang.org/manual.html|title=Nimrod Manual|work=Official website|accessdate=2014-07-20}}</ref> the combination of these features is largely unique to Nimrod.<ref name="trforum">{{cite web|url=http://forum.nimrod-lang.org/t/70|title=Term rewriting macros|last=Araq|work=Nimrod Forum|date=2012-09-10|accessdate=2014-07-20}}</ref> Term rewriting macros enable library implementations of common data structures such as bignums and matrixes to be implemented with an efficiency as if they would have been builtin language facilities. Iterators are supported and can be used as first class entities<ref name="manual"/> in the language as can functions, these features allow for [[functional programming]] to be used. Object oriented programming is supported by inheritance and [[multiple dispatch]]. Functions can be generic and can also be overloaded, generics are further enhanced by the support for type classes. Operator overloading is also supported.<ref name="manual"/>
== Examples ==
|