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).
> 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.
So far Scala is the only language I have looked at that does a decent job of mixing object oriented and functional constructs without making your eyes bleed. Nemerle seems pretty nifty based on it's feature list but I'm wondering what programmers they are targeting. .NET programmers seem pretty happy with C#/F# so they don't have much incentive to adopt another language.
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.
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.
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).
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.
23 comments
[ 0.18 ms ] story [ 71.8 ms ] threadI think that Nemerle is Lisp macros + static types + OCaml (algebraic data types, pattern matching) + .Net ecosystem (even Visual Studio support).
what i'm really asking is, is there anything "smart" about how the macro works with the type system?
For example, "foreach" macro use compiler API to infer type of collection. This macro generate specialized code for different collection kind (array/list/IEnumerable).
I can't stand it when people parade around the "recognized standards" some company made up and then recognized on their own.
If the clients don't have it, make your installer download it and be done with it.
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.
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.