Nemerle

Nemerle是Microsoft的研究項目之一,由 Wrocław 大學的Kamil Skalski、Michał Moskal、Prof. Leszek Pacholski、Paweł Olszt等人發明。

簡介,特點,語法,

簡介

目前最新版本是1.0。
Nemerle是一種多范型的語言(面向對象和函式式),完全支持編譯器宏(後來更多的是Lisp的變種,而不是C++),以及許多其他的東西。Nemerla與VS2010里發布的F#不同,後者是純函式式語言。Nemerle提供了與C#近似的語法和強大的元編程系統。

特點

Nemerle語言具有與C#近似的語法,無疑這使得學習曲線大幅下降。
這裡和C#不同的地方,首先我們通過關鍵字def定義了一個值sr,我們並沒有聲明它的類型,編譯器會根據上下文自動賦予類型,我們稱之為類型推斷(Type Inference)。而且new關鍵字也不需要了。
文本檔案有多少行,read_lines()函式就要執行幾次,像使用while循環一樣,只不過稍微換了一種思路。這時候可能您會考慮到使用遞歸而影響效率的問題,事實是當一個函式主體在調用另一個函式後執行完畢,沒有創建任何新的堆疊,這被稱作尾端調用(Tail Call),所以這段代碼和while循環在效率上一樣的。Nemerle尤其注重將循環寫成遞歸的深入的理解.
使用 Nemerle 宏(macros)可以產生新的語法。在Nemerler IDE中,添加一個macro project,並在你的程式里引用這個macro project.

語法

最簡單的helloworld(很像C#和java):
class Hello {
static Main () : void {
System.Console.WriteLine ("Hello, world!");
}
}
由於nemerle本身沒有什麼特殊限制(這裡用了想java的方法,nemerle允許;但如果使用像AS3那樣的語法,nemerle也會支持),因此也可以用這種方法寫helloworld:
System.Console.WriteLine("Hello, world!");
由於nemerle是一種嵌入型很強的腳本語言,因此也可以訪問資料庫,例如:
ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,
{
System.Console.WriteLine ("Name: {0} {1}", firstname, lastname)
}
nemerle也可以嵌入aspx,例如:
<%@ 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), hello!";
}
</script>
也可以使用加src屬性的方法嵌入(nemerle腳本的後綴名為n):
<%@ Page Language="Nemerle" Src="test.n" Inherits="Test" %>

相關詞條

熱門詞條

聯絡我們