Nemerle 1.0
nemerle.org> The world of statically typed languages has the same framework (Scala’s Lift). But the implementation for Nemerle is based on macros and recognized standards such as LINQ.
I can't stand it when people parade around the "recognized standards" some company made up and then recognized on their own.
Nemerle's coolest feature(or most evil, depending on your perspective) is its macros - it's one of the few modern languages that support them.
Exactly. AFAIK, it has small core language and all other constructions like if/else, while, for, foreach etc are made with macros.
I think that Nemerle is Lisp macros + static types + OCaml (algebraic data types, pattern matching) + .Net ecosystem (even Visual Studio support).
how does it square typing with macros? is it typed after macro application?
There are different "macro stages" to allow macro application on both typed and untyped source.
so if macros can operate on typed source and/or on the typed ast tree, do they (the macros) have a type system that guarantees that they will preserve correct typing? or are types still checked agan (globally?) after applying the macro?
what i'm really asking is, is there anything "smart" about how the macro works with the type system?
Macros are expending in the typing process. In macro you can use compiler API to type some untyped AST (for example, argument of macro).
For example, "foreach" macro use compiler API to infer type of collection. This macro generate specialized code for different collection kind (array/list/IEnumerable).
For example, see implementation of "lock" macro: http://code.google.com/p/nemerle/source/browse/nemerle/trunk...
yes, but macros can operate with typed AST too
Beautifully written intro that gave me a complete feel for the language. I think that it is a really difficult thing, to communicate that well.
All the best ! I hope Nemerle becomes a fantastic option on the .NET platform. Though, with the speed that Microsoft likes to develop C#, it might most probably end up looking like this.
It looks all nice and well, but why can't languages these days be compiled ? I reckon it's way harder to do, but there's no major impediment to achieve what can be achieved in a language based say on the CLR.
Compiled in native? CLR compile IL before execution.
In the next version of Nemerle we plan to create Interchangeable back-ends: http://code.google.com/p/nemerle-2/wiki/BackEnds?wl=en-US
As one of the variants we consider to create backend for LLVM. At least we think about it.
Why waste time writing a compiler when you can leverage much of the work already done to optimize .NET?
If the clients don't have it, make your installer download it and be done with it.
It's much harder to get enough of a .NET runtime together for a new platform than it is to lean on a platform compiler and binary toolchain which must already exist. It's all very well saying "just download the installer," but that won't get my nemerle code running on my phone.
What phone? Chances are Mono run there...
Nokia N900. Ok, so there's Mono for Maemo, so that's not a particularly convincing argument in itself. However, the point stands - replace Nemerle with Scala, for instance, and I'm stuffed (mostly).
It looks a lot like python + javascript.
Lambdas? LINQ? OOP? This looks nothing like js.
static typed python+javascript