Any definition of what it is for DH to be ‘finished’.
Π-types and function promotion. We get that and we’re in dependent types land.
Any timescale for delivery.
No timescale and no promises. We’re doing it as a series of incremental improvements, so if development stops one day, it’s still a net positive for the language.
Any enumeration of non-DH features/fixes or extensions that would be paused or for how long.
None. Zero. I don’t get where you get this idea that DH interferes with development of other features. This is not a resource allocation problem where I either work on DH or some other Haskell feature. I’m interested in DH specifically, so it’s either that or nothing at all.
So in effect there was a whole backlog of accepted enhancement requests that were just nuked.
That never happened. If there’s some accepted GHC proposal that you’d like implemented, the way forward is to step up and submit a patch.
The GHC Steering Committee does not hand out tasks to contributors, it simply approves or rejects language changes that volunteers want to implement. No volunteers – no implementation.
how much more complex GHC’s internals would get, such that any later attempts to revive those features would turn out to be greater effort than if GHC had never done DH
What makes you believe the internals are getting more complex? They’re getting simpler. There’s already a plan to merge types and terms, at least syntactically – that’s less code duplication, more uniformity.
and which I suspect will be more difficult to engineer in DH-riddled GHC
The work I do on DH goes through many rounds of code review. We’re not getting a “DH-riddled GHC”, the engineering quality is as high as ever. Rather, we’re getting “DH-enhanced GHC”, and it doesn’t preclude the work on any other feature, even when it comes to very ambitious features like LinearTypes
.
if you’re sure you don’t want a language with Dependent Typing, now is the time to get off the bus
The opt-in principle is enshrined in #378, and we follow it. I challenge you to show a program that you can no longer write due to the work on DH done so far, or that you imagine will be invalidated by future work.
we should not expect that “crawl over cut razor-wire and landmines” attitude of new Haskellers
That’s what we have today. The razor wire beginners have to crawl over is well-documented in the Hasochism paper (2013), and it took me a detour to Agda before I figured out how to use GADTs and TypeFamilies effectively. The entire idea of DH is to sidestep all of that with a proper implementation of dependent types.
I repeat: the work on DH is conducted as a series of incremental improvements. Worst case scenario is that the language is improved moderately instead of improved greatly.
specifically the error messaging suggesting
AllowScopedTypeVariables
There’s no such extension. You either mean AllowAmbiguousTypes
or ScopedTypeVariables
, and neither extension is part of DH. You can nuke both of them from orbit, or at least remove them from error message suggestions, and it won’t affect DH in the slightest.
Any other concerns I could address?