Nemerle,是微软公司提出的.NET平台上的新语言,由Wrocław大学的Kamil Skalski、Michał Moskal、Prof. Leszek Pacholski、Paweł Olszt等人发明。
一个传统的"Hello World!"可以被写成C#-like的风格:
class Hello { static Main () : void { System.Console.WriteLine("Hello, world!"); }}
或更简捷:
System.Console.WriteLine("Hello, world!");
宏的例子
宏可以让你拥有自己的模板(boilerplate),具有静态检查功能。
例如,使用Nemerle macros可以将SQL可成:
ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,{ System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) });
取代
string sql = "SELECT firstname, lastname FROM employee WHERE firstname = :a";NpgsqlCommand dbcmd = new NpgsqlCommand(sql, dbcon, dbtran);dbcmd.Parameters.Add("a", myparm);NpgsqlReader reader = dbcmd.ExecuteReader();while(reader.Read()) { string firstname = reader.GetString (0); string lastname = reader.GetString (1); System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) }reader.Close();dbcmd.Dispose();
上述的代码不仅只是隐藏部分的动作,更可增加编译器在查询字符串上的效率。这里使用的变量,由数据库回传行资料(columns)。ExecuteReaderLoop宏会产生一些你想要的粗略的代码。而且,链接数据库并检查SQL语法是否合法。
使用Nemerle宏(macros)可以产生更新式的语法(syntax):
macro ReverseFor(i, begin, body) syntax("ford", "(", i, ";", begin, ")", body){ <>}
定义一个宏ford(EXPR ; EXPR)EXPR syntax可被写成
ford(i ; n)print (i);
Nemerle结合ASP.NET
Nemerle可以被直接嵌入ASP.NET:
<%@ Page Language="Nemerle" %> <script runat="server"> Page_Load(_ : object, _ : EventArgs): void { Message.Text = $"You last accessed this page at: $(DateTime.Now)"; } EnterBtn_Click(_ : object, _ : EventArgs): void { Message.Text = $"Hi $(Name.Text), welcome to ASP.NET!"; } </script> <html> <body> <form runat="server"> Please enter your name: <asp:TextBox ID="Name" runat="server" /> <asp:Button OnClick="EnterBtn_Click" Text="Enter" runat="server" /> <p><asp:Label ID="Message" runat="server" /></p> </form> </body> </html>
...或者储成单一文件格式,一行完成:
<%@ Page Language="Nemerle" Src="test.n" Inherits="Test" %>
PInvoke
Nemerle有更多原生平台库(native platform libraries)。风格非常类似C#'s和其它.NET平台上的语言。下面是最简单的例子: