Finally, contracts are overwhelming, and it's also a feature of
D that
nobody has seen before. When someone new to D encounters a
contract in
the docs, they no longer trust their ability to usefully
interpret the
documentation, and almost certainly become confused; nobody
expects to
see an 'if' statement in a function declaration.
I think that's a shame. The contract usually has no impact on
using
the function, or how it should be understood, is just applies
some
limitations to it's genericity.
I think contracts should be disconnected and listed separately,
as
additional information, or with some subtext that makes it
obvious
what that often confusing bit of text actually means.
Ironically, the string and algorithm functions are probably the
worst
offenders, but coincidentally, there is a high chance that
these are
the first functions anyone will ever reach for, so they present
a
terrible first impression.
I think you mean constraints, not contracts.