A type checker plugin for row types

Iavor Diatchki iavor.diatchki at gmail.com
Mon Sep 11 07:14:14 UTC 2017

Hello Nick,

very nice!  Do you have any thoughts on how to use rows in class/type
family declarations (i.e. how do we match on them)?  For example, if I was
to use the rows to make up some sort of record, system (i.e. declare `Rec
:: Row -> Type`), how might I define the `Show` instance for `Rec`?


On Mon, Sep 11, 2017 at 12:10 AM Ara Adkins <me at ara.io> wrote:

> Glad I could be of help! I just gave it a read and that generated core is
> much better than I expected. I’d still have some concerns regarding certain
> uses (e.g. named arguments) having more performance overhead than hoped,
> but at this stage it’s far better than I would’ve initially thought!
> Definitely a useful addition to the wiki page.
> _ara
> On 10 Sep 2017, at 23:58, Nicolas Frisby <nicolas.frisby at gmail.com> wrote:
> Whoops! I forgot about that section of my draft. I added a little blurb
> ("Performance?") Thanks Ara!
> On Sun, Sep 10, 2017 at 3:41 PM Ara Adkins <me at ara.io> wrote:
>> Just given this a read!
>> It looks like you’ve put a fantastic amount of effort into this so far,
>> and I can certainly see how it’s finding its legs! I’m very much looking
>> forward to seeing this develop further. I can definitely foresee some uses
>> for polykinded column types, and the possibility for named arguments is
>> certainly interesting (though I have some concerns about performance —
>> though none are relevant at such an early stage).
>> Unfortunately I don’t think I can answer any of the questions that I
>> spotted on my read-through.
>> Again, I’m looking forward to seeing this develop, and the naming of
>> `coxswain` and `sculls` gave me a giggle.
>> _ara
>> On 10 Sep 2017, at 23:24, Nicolas Frisby <nicolas.frisby at gmail.com>
>> wrote:
>> Hi all. I've been spending my free time for the last couple months on a
>> type checker plugin for row types. The free time waxes and wanes; sending
>> an email like this one was my primary goal for the past couple weeks.
>> At the very least, I hoped this project would let me finally get some
>> hands on experience with OutsideIn. And I definitely have. But I've also
>> made more progress than I anticipated, and I think the plugin is starting
>> to have legs!
>> I haven't uploaded the code yet to github -- it's not quite ready to
>> share. But I did do a write up on the dev wiki.
>> https://ghc.haskell.org/trac/ghc/wiki/Plugins/TypeChecker/RowTypes/Coxswain
>> I would really appreciate and questions, comments, and --- boy, oh boy
>> --- answers.
>> I hope to upload within a week or so, and I'll update that wiki page and
>> reply to this email when I do.
>> Thanks very much. -Nick
>> P.S. -- I've CC'd and BCC'd people who I anticipate would be specifically
>> interested in this (e.g. plugins, row types, etc). Please feel free to
>> forward to others that come to mind; I know some inboxes abjectly can't
>> afford default list traffic.
>> P.P.S. -- One hold up for the upload is: which license? I intend to
>> release under BSD3, mainly to match GHC since one ideal scenario would
>> involve being packaged with/integrated into GHC. But my brief recent
>> research suggests that the Apache license might be more conducive to
>> eventual widespread adoption. If you'd be willing to advise or even just
>> refer me to other write ups, please feel free to email me directly or to
>> start a separate thread on a more appropriate distribution list (CC'ing me,
>> please). Thanks again.
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20170911/5358a9b8/attachment.html>

More information about the ghc-devs mailing list