I'm designing a syntax for templates/generics. The C++ family languages use angle brackets for this, but I'm looking at using a separator character instead. For example, where in Java you might write:
Map<String, Foo> foos = new HashMap<String, Foo>();
I'm aiming for:
.foos = hmap*string*foo
I'm trying to decide what the separator character will be; it can't literally be *, because that's already in use for multiplication (not that I couldn't overload it, but the precedence would be wrong). Looking at the available characters, some options are
.foos = hmap!string!foo
.foos = hmap$string$foo
.foos = hmap?string?foo
.foos = hmap^string^foo
.foos = hmap`string`foo
.foos = hmap|string|foo
.foos = hmap~string~foo
As this is to some extent an aesthetic question, I figured I'd take a poll: which option do you like best? Is there another option that would be preferable? (As usual with questions like this, if your answer has already been posted, please upvote rather than duplicate.)
Also, on a standard US keyboard, ` is unshifted, each of the others requires the shift key. Is there a difference on international keyboards? Are there any keyboard layouts on which any of the above candidates are particularly easy or difficult to type?
(As this is a question without a single right answer, should it be a community wiki?)