[ghc-steering-committee] #682: Explicit Level Imports, recommendation: accept

Erik de Castro Lopo erikd at mega-nerd.com
Sat Jan 18 10:14:50 UTC 2025


Like Moritz, I am not a huge fan of TH, but do recognize its usefulness.
Any improvement to TH that impriove its clarity has my support.

+1

Cheers,
Erik


Moritz Angermann wrote:

> Hi all,
> 
> I'm generally in support of this proposal. As many of you know, I strongly
> believe TemplateHaskell is a major wart that Haskell has, for many
> reasons. This proposal tries to address at least one of those: adding more
> clarity and explicitness about dependencies. It may help with
> cross compilation in that we have a clearer idea of what we exactly need to
> load in iserv (alternatives where we implicit link a runnable for
> target evaluation, can rely on dead code elimination for this, but having
> this from the start would already be helpful).
> 
> I've recently been looking a lot at Zig's comptime, as they seem to have
> gone down almost the same route. Maybe there's some inspiration to
> be drawn from Zig's solution in the future. It is, however, WAY more
> restrictive than what we currently have in the form of TemplateHaskell.
> 
> +1 on this one.
> 
> Best,
>  Moritz
> 
> On Fri, 10 Jan 2025 at 18:19, Adam Gundry <adam at well-typed.com> wrote:
> 
> > Thanks Arnaud! With my "proposal co-author" hat on, I'd like to make a
> > few points inline...
> >
> >
> > On 09/01/2025 06:34, Arnaud Spiwack wrote:
> >  >
> > > On Thu, 9 Jan 2025 at 15:31, Arnaud Spiwack <arnaud.spiwack at tweag.io
> > > <mailto:arnaud.spiwack at tweag.io>> wrote:
> > >
> >  >     [...]
> > >
> > >     They introduce a new extension-XNoImplicitStagePersistence which
> > >     disables that, and a little bit of syntax to specify the stage of
> > >     imports. That's it.
> > >
> > >     But it comes with severe limitations, most importantly: you can't
> > >     ever use a symbol defined in the current module in a quote or splice
> > >     of this current module, typed template Haskell is turned off.
> >
> > Regarding typed TH, the proposal currently grants a bit of flexibility
> > to the implementation in suggesting that TTH might not be supported at
> > all, primarily because TTH has some existing unresolved issues around
> > constraints. We could alternately say that TTH remains available (but
> > also remains somewhat broken, because fixing it is out of scope of the
> > implementation of this proposal).
> >
> >
> > >     For these situations, the proposal kind of advertises using
> > >     `-XImplicitStagePersistence`. Which does seem like a fork-like
> > >     situation to me. Not cool.
> >
> > Rather than seeing ImplicitStagePersistence as creating a language fork,
> > I see it as necessary for backwards compatibility, but with the
> > intention that in the long term NoImplicitStagePersistence is the way to
> > go. This may still be difficult in some cases (e.g. codebases that make
> > heavy use of Lift), but the idea is to start with a simple, restrictive
> > baseline (NoImplicitStagePersistence) and then gradually add features
> > relaxing this as needed (ExplicitLevelImports being the first of these,
> > but perhaps later something for multiple levels within a single file).
> >
> > Cheers,
> >
> > Adam
> >
> >
> > --
> > Adam Gundry, Haskell Consultant
> > Well-Typed LLP, https://www.well-typed.com/
> >
> > Registered in England & Wales, OC335890
> > 27 Old Gloucester Street, London WC1N 3AX, England
> >
> > _______________________________________________
> > ghc-steering-committee mailing list
> > ghc-steering-committee at haskell.org
> > https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> >


-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/


More information about the ghc-steering-committee mailing list