Languages

Fsharp
ActionScript
xBase
Clean
GPSS
PureBasic
Sieve
Erlang
JOVIAL
Mercury
Linda
DataFlex
PostScript
FoxPro2
VFP
Cobol
Prolog
Jython
Awk
VisualBasic
JavaScript
Matlab
ASP
Haskell
Csharp
D
Smalltalk
Nemerle
Pixilang
Java
SQL
Python
ObjectPascal
Ruby
Perl
Pascal
Assembler
PHP
C
Functions  Add function  Users  Exit  Profile  About  ASCII Table  Our helpers

Nemerle

Nemerle is a high-level statically-typed programming language for the .NET (see also Mono) platform. It offers functional, object-oriented and imperative features. It has a simple C#-like syntax and a powerful metaprogramming system.

It has been named after the mage Nemmerle from "A Wizard of Earthsea" by Ursula K. Le Guin (spelling with a single m is a design decision).

Features

Probably the most important feature of Nemerle is the ability to mix object oriented and functional programming styles. The top-level program structure is object oriented, while in the body of methods one can (but is not forced to) use functional style. This is very handy in some programming problems. The feature set here include functional values, variants and pattern matching.

Another very important feature is taking a high-level approach in all aspects of the language—trying to lift as much of the burden from the programmer as possible. Features like macros and type inference fit here.

Features that come from the functional land are variants (aka algebraic data types), pattern matching, type inference and parameter polymorphism (aka generics). The metaprogramming system allows great compiler extensibility, embedding domain specific languages, partial evaluation and aspect-oriented programming.

Last but not least, the usage of more mundane library stuff from the .NET is as easy as (or easier than) in C#.


Examples

Hello, World!

The traditional "Hello World!" can be implemented in a more C#-like fashion:
class Hello {
static Main () : void {
System.Console.WriteLine ("Hello, world!");
}
}

or more simply:
System.Console.WriteLine("Hello, world!");


Examples of macros

Macros allow you to have boilerplate code generated for you under the hood, with additional static checks performed by the compiler. They give you the power to programatically generate code.


Database accessibility

For example, using Nemerle macros for SQL you can write:
ExecuteReaderLoop ("SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon,
{
System.Console.WriteLine ("Name: {0} {1}", firstname, lastname)
});

instead of
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();

and this is not just hiding some operations into a library, but additional work performed by compiler to understand the query string, variables used there, and columns returned from the database. The ExecuteReaderLoop macro will generate code roughly equivalent to what you would have to type manually. Moreover, it connects to the database at compilation time to check that your SQL query really makes sense.


New language constructs

With Nemerle macros you can also introduce some new syntax into the language:
macro ReverseFor (i, begin, body)
syntax ("ford", "(", i, ";", begin, ")", body)
{
<[ for ($i = $begin; $i >= 0; $i--) $body ]>
}

defines a macro introducing the ford (EXPR ; EXPR) EXPR syntax and can be used like
ford (i ; n) print (i);


Nemerle with ASP.NET

Nemerle can be either embedded directly into 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>

...Or stored in a separate file and entered with a single line:
<%@ Page Language="Nemerle" Src="test.n" Inherits="Test" %>


PInvoke

Nemerle can take advantage of native platform libraries. The syntax is very similar to C#'s and other .NET languages. Here is the simplest example:
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();
}
}
http://en.wikipedia.org/wiki/Nemerle - more information
For edit this page click here

Revisiting Chicxulub

An artist's rendering of the moment of impact at the end of the Cretaceous.

For decades, scientists have accumulated ever-larger datasets that suggest an enormous space rock crashed into the ocean off the Yucatan Peninsula more than 65 million years ago, resulting in the Cretaceous-Paleogene (K-Pg) extinction.

Recent research, supported in part by the National Science Foundation (NSF), suggested that the impact could have occurred 300,000 years prior to the K-Pg extinction, and that another cause--perhaps a second impact, or the long-lasting volcanic activity ...

More at http://www.nsf.gov/news/news_summ.jsp?cntn_id=116480&WT.mc_id=USNSF_51&WT.mc_ev=click


This is an NSF News item.

PycckaR
BepcuR


Articles
Articles


Library
Library


Downloads
Downloads

Google Chrome Golf 6
 © Internet, books, teachers and Rudevich Alexander brains.