[Haskell-cafe] [External] Resources on how to implement (Haskell 98) kind-checking?

Brandon Allbery allbery.b at gmail.com
Thu Oct 14 14:28:55 UTC 2021


At this point you might want to ask on ghc-devs. They might ask you to
document what you find out, though.

On Thu, Oct 14, 2021 at 10:25 AM Benjamin Redelings <
benjamin.redelings at gmail.com> wrote:

> Thanks!  Yes, that introduces the idea that requires kind inference.
>
> Interestingly, it contains a (kind-aware) type-inference algorithm, but no
> kind inference algorithm!
>
> Perhaps kind-inference is considered too "obvious" to require an
> algorithm.  The closest it comes is the rule:
>
> C :: k' -> k   and   C' :: k'  => C C' :: k
>
> This is helpful, but it would probably be beneficial for better
> documentation to exist SOMEWHERE.
>
> -BenRI
> On 10/13/21 3:49 PM, Ingle, Apoorv N wrote:
>
> Along with what Emil suggests,
> Sec 4. of A system of constructor classes: overloading and implicit
> higher-order polymorphism[1] may also be useful.
>
> — Apoorv
>
> [1]:  http://web.cecs.pdx.edu/~mpj/pubs/fpca93.pdf
>
>
> On Oct 13, 2021, at 14:22, Emil Axelsson <78emil at gmail.com> wrote:
>
> Maybe Typing Haskell in Haskell
> <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.7274&rep=rep1&type=pdf>
> is what you're looking for?
>
> / Emil
>
> Den 2021-10-12 kl. 21:35, skrev Benjamin Redelings:
>
> Hi,
>
> 1. I'm looking for resources that describe how to implement kind Haskell
> 98 checking.  Does anyone have any suggestions?
>
> * I've looked at the PolyKinds paper, but it doesn't cover type classes.
>
> * I've looked at the source code to GHC, but it is hard to follow for a
> variety of reasons.  It isn't laid out like an algorithm description, and
> the complexity to handle options like PolyKinds and DataKinds makes the
> code harder to follow.
>
>
> 2. One question that came up is how to handle type variables that are
> present in class methods, but are not type class parameters. If there are
> multiple types/classes in a single recursive group, the kind of such type
> variables might not be fully resolved until a later type-or-class is
> processed.  Is there a recommended approach?
>
> I can see two ways to proceed:
>
> i) First determine the kinds of all the data types, classes, and type
> synonyms.  Then perform a second pass over each type or class to determine
> the kinds of type variables (in class methods) that are not type class
> parameters.
>
> ii) Alternatively, record the kind of each type variable as it is
> encountered -- even though such kinds may contain unification kind
> variables.  After visiting all types-or-classes in the recursive group,
> replace any kind variables with their definition, or with a * if there is
> no definition.
>
> I've currently implement approach i), which requires doing kind inference
> on class methods twice.  Is this the recommended approach?
>
>
> 3. Also, is Haskell 98 kind checking the same as Haskell 2010 kind
> checking?
>
> -BenRI
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
brandon s allbery kf8nh
allbery.b at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20211014/b845677a/attachment.html>


More information about the Haskell-Cafe mailing list