A code completion tool built on n-grams could be very effective. Many special cases for types arise naturally from this.
`foo.` is probably a void method, whereas `await foo.` is an async method. `return foo.` and `x = foo.` probably have different properties too.
miniblog.
Related Posts
I love how JS makes project-specific imports unambiguous: `import "./project-dir/foo"` versus `import "installed-pkg/foo".
I've been doing the same in my PL. I've just realised that `import "/home/wilfred/project/foo"` now works too. It's weird but probably harmless?
Are there any developer experience advantages for `x := 1` over `let x = 1`?
A `let` keyword probably improves parsing error behaviour, and makes declarations more visible.
:= is more concise though.
Writing type params with <> (e.g. List<Int>) seems the most natural to me: probably because I encountered that syntax first.
Between C++, Java and TypeScript I think it's the most common too.
List[Int] seems to be next most common (Scala, Python) but TIL Gleam uses List(Int)!