[ghc-steering-committee] #380 GHC2021: What's wrong with Functional dependencies

Iavor Diatchki iavor.diatchki at gmail.com
Fri Dec 4 16:11:19 UTC 2020


I like functional dependencies but I don't think they should be on by
default.  My main reason is that I don't know what's a good way to check FD
consistency:  I find the original FD consistency check to be a bit too
conservative, and the liberal coverage condition turned out to be unsound
(e.g. See Tom Schrijvers's paper about FDs).   I guess in part for such
reasons GHC has been very conservative about how it uses them (e.g., it
won't use them on given constraints).  This has led to a bunch of confusion
about what *is* a FD at all...  So I don't think their
design/implementation is in its final form, which is why I don't think the
extension should be on by default.

On Fri, Dec 4, 2020 at 6:29 AM Simon Peyton Jones via
ghc-steering-committee <ghc-steering-committee at haskell.org> wrote:

> Can you elaborate? I don't understand where you are coming from yet.
>
>
>
> In haste,
>
>    - Many open tickets about fundeps
>    <https://gitlab.haskell.org/ghc/ghc/-/issues?label_name=FunctionalDependencies>…
>    still open because of lack of agreement about what the Right Thing is, not
>    because the implementation is difficult
>    - As originally proposed they are quite restrictive (the Coverage
>    Condition).  Many uses of fundeps use a more liberal coverage condition,
>    currently enabled by UndecidableInstances.  I’m not sure if “Many” means
>    “most” or just “a minority”; data needed.
>    - Fundeps affect unification in type inference, and have no effect in
>    Givens, unlike type families. Nothing inherently wrong with that, but it
>    feels unsatisfying that we can know that t1~t2 (from a fundep between two
>    givens) but can’t exploit that fact.
>
>
>
> They are undoubtedly useful. I’m not arguing for removal.  They have just
> never felt as solid to me as other parts of our type system.
>
>
>
> Simon
>
>
>
> *From:* Spiwack, Arnaud <arnaud.spiwack at tweag.io>
> *Sent:* 04 December 2020 14:13
> *To:* Simon Peyton Jones <simonpj at microsoft.com>
> *Cc:* GHC Steering Committee <ghc-steering-committee at haskell.org>
> *Subject:* Re: [ghc-steering-committee] #380 GHC2021: What's wrong with
> Functional dependencies
>
>
>
> On Fri, Dec 4, 2020 at 3:07 PM Simon Peyton Jones <simonpj at microsoft.com>
> wrote:
>
> But fundeps – because they don’t carry evidence, as they stand – feel less
> solidly rooted.
>
>
>
> Can you elaborate? I don't understand where you are coming from yet.
>
>
>
> (for the record: I'm not applying just “guarded by their own syntax” as a
> criterion, for me, this criterion is a sufficient condition for “no
> surprising new errors”. I also believe (believed?) that functional
> dependencies were quite standard and expected them to be here forever. I
> took TypeFamilyDependency to be a mild extension. I'm perfectly willing to
> be convinced otherwise.)
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20201204/b396adc4/attachment.html>


More information about the ghc-steering-committee mailing list