Nemerle
Nemerle,是微軟公司提出的.NET平台上的新語言,由Wrocław大學的Kamil Skalski、Michał Moskal、Prof. Leszek Pacholski、Paweł Olszt等人發明。
编程范型 | 多范型: 函数式, 指令式, 元编程, 面向对象 |
---|---|
設計者 | Kamil Skalski, Michał Moskal, Prof. Leszek Pacholski, Paweł Olszta 于弗羅茨瓦夫大學 |
實作者 | JetBrains |
发行时间 | 2003年 |
当前版本 |
|
型態系統 | 类型推论, 名称, 静态, 强类型 |
系统平台 | CLI |
文件扩展名 | .n |
網站 | nemerle |
主要實作產品 | |
Nemerle | |
啟發語言 | |
C#, Lisp, ML |
範例编辑
Hello, World!编辑
一個傳統的"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){ <[ for($i = $begin; $i >= 0; $i--)$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平台上的語言。下面是最簡單的例子:
using System;using System.Runtime.InteropServices;class PlatformInvokeTest{ [DllImport("msvcrt.dll")] public extern static puts(c : string): int; [DllImport("msvcrt.dll")] internal extern static _flushall() : int; public static Main() : void { _ = puts("Test"); _ = _flushall(); }}
外部連結编辑
🔥 Top keywords: Baike: 首页Special:搜索胖猫跳江事件背着善宰跑九龍城寨之圍城逆天奇案2璩静淚之女王歌手2024Energy (組合)新生 (网络剧)习近平匈牙利邊佑錫劉俊謙 (香港)金智媛神耆小子塞尔维亚金秀賢 (男演員)母亲节猩球崛起:王國誕生九龍寨城馴鹿寶貝家族榮耀之繼承者Seventeen (組合)六四事件不夠善良的我們张维为楊佩潔TripleS支配物种庆余年郭葦昀洪若潭命案金惠奫2024年英雄联盟季中邀请赛春色寄情人BABYMONSTER笑看風雲乘風2024排球少年!!角色列表破墓徐巧芯中华人民共和国中華民國打天下2WIND BREAKER—防風少年—习明泽排球少年!!彭丽媛磁暴ILLIT贾斯汀·比伯逆天奇案BOYNEXTDOOR猿人爭霸戰:猩凶革命張書偉我的婆婆怎麼那麼可愛我獨自升級怪獸8號謝坤達IVE (組合)與鳳行關於我轉生變成史萊姆這檔事角色列表黃道十二宮福建號航空母艦虽然不是英雄葉乃文五月天張員瑛草榴社区張文傑2024年花蓮地震极光香緹·摩爾迷宮飯呂家愷搜查班長1958日本劉德華海莉·鮑德溫蕭景鴻越位 (足球)葬送的芙莉蓮周處除三害 (電影)毛泽东願榮光歸香港林峯周雨彤伍允龍羅毓儀香港Baike: 分類索引沒有秘密猩球崛起:終極決戰角質層唐振剛柯佳嬿文化大革命