I was the one who asked how BitC would be different from Nemerle. I'm with you that it's hard to piece together without a formal language spec, but working from your list, it's notable that Nemerle has at least a few of your wishlist items....
> 2. Attributes on local variables. > 3. Attributes on types, not just on variables > More generally, if we can stick attributes into types in the > right places, we can use the attribute mechanism to explore > potential enhancements to the type system. Not only can Nemerle meta-attributes appear where you want them to, you can actually encode the compile-time checks right into the meta-attribute so it will run in the Nemerle compiler automatically without an external tool. The meta-attribute code can generate compiler errors or warnings, and/or inject macro code for runtime checks. This article walks through the creation of a [NotNull] meta-attribute which has both compile-time and run-time checking.. http://nemerle.org/wiki/index.php?title=Macros_-_extended_course._Part_3 > 5. readonly properly enforced, plus shallow and deep readonly. > 10. Direct support for immutable types and effect-free code. AFAIK, Nemerle has truly immutable fields. I suspect deep-readonly could be implemented as a compiler macro or meta-attribute, though I have not tried. > 8. Top-level functions (this is just a sugaring change). Nemerle supports "using" declarations on classes, which brings their members into the top-level namespace. https://github.com/rsdn/nemerle/wiki/Grok-Namespaces#Making-long-names-short > The entire LINQ idea should have been implemented with [compiler macros]. Agreed. Nemerle implements LINQ using their syntax macros. https://github.com/rsdn/nemerle/tree/master/Linq https://groups.google.com/d/msg/nemerle-dev/mbnc_iBKV44/SeFWBWaYtDIJ ---- Here are some other concise overviews of nemerle. https://github.com/rsdn/nemerle/wiki/CSharp-similarities-and-differences http://dj1.willowmail.com/~jeske/_drop/nemerleisnotable-110403152807-phpapp02.pdf As for their syntax... ...I like some of their choices (pattern matching, <- object modifier macro, separating up-and-down casts, using-classes) ...while I dislike others (droppping "new" keyword, ++ as statements, [] instead of <> for type paramaters, [] ) as always, c'est la vie.
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
