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 {
}
}
由于nemerle本身没有什么特殊限制(这里用了想java的方法,nemerle允许;但如果使用像AS3那样的语法,nemerle也会支持),因此也可以用这种方法写helloworld:
由于nemerle是一种嵌入型很强的脚本语言,因此也可以访问数据库,例如:
{
}
nemerle也可以嵌入aspx,例如:
Page_Load(_ : object, _ : EventArgs) : void {
}
EnterBtn_Click(_ : object, _ : EventArgs) : void {
}
也可以使用加src属性的方法嵌入(nemerle脚本的后缀名为n):