Having `:` as return type for func/proc is actually consistent. Seeing ":" 
means afterward "there's a type for it".

It's the consistent with `var ident: ThisIsTheType` or change that `var`, 
`let`, `const` etc.

To reinforce that observation, the argument of function also has `:` for its 
type symbol.

Of course there's like `block:` or `if...:` or `for ... :`, but then the block 
body can return something that has type like for example
    
    
    from std/sugar import dump
    from std/random import randomize, sample
    
    proc main =
      randomize()
      let marble = block:
        let marbles = ["red", "blue", "green", "yellow", "purple"]
        let pick = sample(marbles)
        pick
      dump marble.type
    
    main()
    
    
    Run

So the marble has type, because block has type, with that you can immediately 
know (or glancing to the last line) to see what kind of type it could have.

Since I often need to look for the last block, traversing the cursor position 
for `:` not at fast as `{` in others but it's just a small annoyance.

Visually-wise, it's consistent. Much more consistent than random `->`. I'm 
desperately avoiding arrow that could hit me on knee.

Reply via email to