On Friday, 17 February 2012 at 07:21:32 UTC, Nick Sabalausky wrote:
"F i L" <[email protected]> wrote in message news:[email protected]...
I would use them over '||' and '&&' for the reasons bearophile gave. Highlighted as keywords, they're easily set appart, easier to type, and more distinguished... then again if I had my way I'd remove the '('/')' brackets, ending marks, and auto keyword; switched the definition name-type placement and change if/else/return/contract syntax...

    foo( a, b: float ): int

In other languages, I can live with JS-style "var:Type" but I've never really liked it. Just seems totally backwards to me:

1. When I declare a variable, I normally know the type I want before I know what to name it, so just typing it in is backwards.

This usually happens to me if I've been coding a lot of C# or Javascript then switch to the other; but i usually get accustom to the change pretty quick. However, I do agree some people feel more natural thinking in one way, so for readability, identifiers should be listed first, while the IDE should allow either to be typed first; rearranging the syntax as you type intelligently. Possibly the syntax should accommodate both, though I'm not sure of any conflicts that way.


2. With function definitions, why is the return type so rediculously far away from the function name? Should be "foo:int( a, b: float )". Besides, when you call the func and assign the return value to a variable, the return value is going to the left, not the right. In C-style, return values/types move "left". In JS-style, it's all willy-nilly.

I was thinking this would conflict with template derivitives, but on second thought, I think it would work better the way you say.

    Foo(T): struct { ... }
    Bar(U): Foo!U { ... }

Thanks!


3. Makes it harder to distinguish declarations from assignments at a glance. You have to look in the middle of the statement to see what the heck it is. With C-style you only have to look at the beginning (which are conveniently all lined up): Starts with a variable? Assignment. Starts with a type or attribute? Declaration. Starts with colored text? *Definitely* declaration. Don't see why languages keep trying to marginalize the idea of declarations.

Fair point. Though I personally don't find it difficult at all and think it lines up nicely with sequencial property sets:

    bar: = new Bar!int
    bar.name = "bar"
    bar.value = 10


4. Initializers are just downright goofy:

a:int = 5;

Looks like it's assigning 5 to "int" instead of to "a", which is completely nonsensical.

I think it makes sense. Just takes some getting use to if you're use to writing C-style code.

Reply via email to