d = Dictionary of (int, String)()
In fact, early versions of Cobra used "List(of int)" but then I made this mistake all the time:
someList = List(of int) # expecting a list, but really made a reference to a type
Something about the presence of the parens made be think the subsequent parens for the call were already there. When I switched to angle brackets, I stopped doing that:
someList = List<of int>()
I think this was before Cobra was widely announced in 2008.
Regarding aliases, I don't have anything against them, but haven't needed them much and often get by with:
class FooCache inherits Dictionary<of int, List<of String>>
pass
This can also lead to adding convenience methods to the class and making the code even more readable.
But I can still see how aliases would be useful and in some cases such as name collisions between namespaces, very useful. I would prefer this syntax:
alias SomeFoo<of T> = Some.Freaking.Long.Named.Type<of T>
alias IntMap<of T> = Dictionary<of int, T>
# form:
alias NewAlias = ExistingNameSpaceOrType