Unfortunately, the simple fact is that one can be handed a JSON document with non-existent keys, and one can be handed a database row with a null column. Often, the programmer may handed a schema from a third party they have no control over: opening a semantics debate is likely not a good course of action.
I guess since basic types, like an int or double, cannot be null, I understand why these cannot be null. This unfortunately limits their usefulness, but it's a carryover from the underlying properties of the basic type.
Value types will be optionally null. What java will introduce to the tooling is narrowing of nullness types. Hence Foo! <: Foo? <: Foo. This will assist in enabling safe domains or scope in code that are null-restricted with ease. Hence we can model around such a type system rule.
My last impression of Bangladesh was the fire accord stuff, i.e. build emergency exits and get garment factory owners to stop locking their workers inside since they keep going up in flames.
Maybe they've grown. Is Bangladesh at the stage where they outsource labour to other countries yet?
Bangladesh's Human Development Index (HDI) has shown a consistent upward trend, reaching 0.685 in the 2023/2024 report, ranking 130th out of 193 countries. It remains in the "Medium Human Development" category, marking a 72.5% increase in HDI value since 1990 due to significant improvements in life expectancy, education, and GNI per capita.
Yes, hence the "at least a few years ago". But perhaps I'm misremembering and confusing it with applicative functors, it has been a few years.
> I guess they went with a non-breaking feature introduction.
Sure, but functors aren't exactly novel, are they? Although it has contributed a lot to programming language design in general, Haskell didn't exactly invent the concept of a generic "map". So why wasn't it there in the first place, and why was it - despite its obvious prominence - not deemed important enough for a (what seems to be tiny) breaking change?
> Anyway, it could be worse. You could be working in a language that can't even express the functor/map interface.
Are those still around? I thought even Go eventually started supporting generics?
The polymorphism looks a little half-missing as well (checker.c):
/* generalize: check if vars in t are free (not bound in env).
For now, a simplified version that just returns the type as-is. */
CkType *ck_generalize(CkTypeEnv *env, CkType *t) {
So the identity func (id x = x) stays a monotype?
Also, I'm not seeing any more or less safety in this code than the surrounding code:
Are multiple type-checking threads blasting through this at the same time?
The most interesting claim that this file makes is that it does HM-inference as well as subtyping. I'm smart enough to parrot "that's undecidable" even if I'm too dumb to know why.
HM is hard enough without taking the sizeof pointers and mallocing every few lines.
The comparison isn’t meaningless. (The headline is nonsense.)
> comparison between the two would be economic activity
I almost hate comparing revenue to GDP more than market cap! Production measures finished goods. Revenue mixes intermediate and finished goods. So yes, you’re comparing two flows, but the complexity hidden therein is actually less intuitive to wrap one’s head around than a stock-versus-flow comparison, which we all understand with speed-versus-distance.
reply