May 2008 Entries

Collection initializer expressions, redux

WARNING: This is a speculative post. Caveat emptor. When we last left collection initializers, we were discussing default types for collection initializers. Since then we've thought further about the feature and are considering changing the design. The problem is that as nice as type inference is, as we started to dig into what that practically meant it started to become more and more difficult to figure out what a particular collection initializer might mean. Because the meaning of the initializer in the original design depends on the context, it's meaning could change dramatically in different contexts. Of particular difficulty...

Reserved words: what are they good for? (Absolutely nothing?)

Random musing for the day: I was thinking about reserved words in programming languages and whether they're really necessary at a lexical level. As you know, most programming languages define in their lexical grammar a set of words that cannot be used anywhere in the language except when explicitly specified in the grammar. For example, VB reserves the word "Object". So you can't just say: ' Error: Keyword is not valid as an identifier. Sub Object() End Sub Many languages (such as VB) allow you to work around this by providing some...

Collection initializer expressions

WARNING: This is a speculative post. Caveat emptor. Well, I appear to be on a rhythm of about once a month posts, which seems OK for the moment. Moving on to another "future" topic, one of the most annoying things that we cut (at least, from my perspective) from VB 2008 was collection initializers. Collection initializers were a little different than the corresponding C# feature, because our plan was to introduce stand-alone initializers that didn't have any intrinsic type. Instead the initializers "snap to" a particular type when they're converted to it, just like lambdas and AddressOf expressions. For...