I'd also add that language-server protocols by providing more
immediate feedback, rather than an
edit, save, compile, test loop. Now when errors happen the point of
the cursor is often in a position relevant
to the error. This has really given both interactive theorem provers,
and static languages a significantly
improved UX.
There is also a question of whether foundational capability types like
sealer/unsealers impose any significant generic/higher order types
which are the typical problem with static type usability. I know i've
done some higher order typed capability patterns which *do* add
significant overhead, such as by using branded sealers/unsealers, and
branded sealed boxes, so you can prove statically that the sealed box
was sealed by the sealer with the same brand which is part of a pair
associated with the unsealer.
That is to say you cannot give someone a "fake"/constant unsealer,
which is like `lambda box => "completely ignores the box so given any
sealed box return this string or something silly"`
Given the relationship between sealer/unsealer pairs and public key
crypto
http://cap-lore.com/CapTheory/Dist/PubKey.html
doing that sort of thing you need a type system strong enough to
implement a kind of "perfect" form of public key crypto.
The Emily sealers/unsealers didn't use this kind of higher order
typing, just used normal lambdas and opaque sealed types as boxes.
allowing you to spoof unsealers.
What I'm getting at is that the cost of these guarantees is the more complex UX.
One of the UX issues with static types is that they give an equality
test, but the type system doesn't know which is wrong.
The type of the value does not fit the declaration, but whether the
declaration's type is wrong, or the value is actually the wrong type
isn't
something the compiler itself can tell you. So as the types get more
complex and parametric it increases the burden.
So at least in that sealer/unsealer example, while there is a cost to
using more advanced types,
there is also a tangible benefit in the sense that we can eliminate
some unwanted behavior.
So at least it's not just complexity for complexity's sake.
> To view this discussion visit
https://groups.google.com/d/msgid/cap-talk/CAK-_AD5%3Do%3DbPcL1wAB95nUP9DKrDbUSWMtM6hu0KFJ1cX1obEw%40mail.gmail.com.