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

Reply via email to