On Sunday, 20 May 2018 at 14:35:21 UTC, I love Ice Cream wrote:
On Sunday, 20 May 2018 at 02:34:38 UTC, Neia Neutuladh wrote:
D is very hard to make an IDE for that would actually tell you
what type the return value is.
This might sound a little hard, but that's probably a
fundamental failure of the D language and explains some of the
poor tooling around the language.
This is specifically when metaprogramming is going on.
Most programming languages these days fall into one of three
categories:
* They don't support metaprogramming.
* They support metaprogramming by reflection only, like Java and
Go. As soon as you use any metaprogramming, your IDE can't tell
you what types things are; you've got interface{} or Object and
you're calling Field.get() and Method.invoke().
* They support metaprogramming by merit of being a dynamic
language. As soon as you write a line of code, your IDE can't
tell you what types things are.
If you write D without any metaprogramming, it's as easy to write
an IDE for that as for Java.
The problem is that metaprogramming is useful, and in D it's not
that hard, so we use it a lot. There are proposals floating
around for "concepts" or "signatures" (basically, compile-time
interfaces) that would help out a lot, but nobody's driven one of
those proposals to completion, as far as I know.