<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Thanks! Good point.</p>
<p>For kind inference, I think that point won't come in to play
unless I add CUSK's, which are not yet on the radar. For
type-inference though that is a good point.<br>
</p>
<p>-BenRI<br>
</p>
<div class="moz-cite-prefix">On 10/13/21 8:58 AM, David Feuer wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAMgWh9tCemTuTqQ+fagTdZb3duezZO5ZoSdg5B1tCJokdrS7ug@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="auto">Haskell 2010 defines virtually the same language
as Haskell 98. The differences are too trivial to worry about.
One spot you may wish to follow GHC (and I think Hugs, at least)
rather than the Report: <a
href="https://ghc.gitlab.haskell.org/ghc/doc/users_guide/bugs.html#typechecking-of-recursive-binding-groups"
moz-do-not-send="true" class="moz-txt-link-freetext">https://ghc.gitlab.haskell.org/ghc/doc/users_guide/bugs.html#typechecking-of-recursive-binding-groups</a></div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Oct 12, 2021, 3:37 PM
Benjamin Redelings <<a
href="mailto:benjamin.redelings@gmail.com"
moz-do-not-send="true" class="moz-txt-link-freetext">benjamin.redelings@gmail.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
1. I'm looking for resources that describe how to implement
kind Haskell <br>
98 checking. Does anyone have any suggestions?<br>
<br>
* I've looked at the PolyKinds paper, but it doesn't cover
type classes.<br>
<br>
* I've looked at the source code to GHC, but it is hard to
follow for a <br>
variety of reasons. It isn't laid out like an algorithm
description, <br>
and the complexity to handle options like PolyKinds and
DataKinds makes <br>
the code harder to follow.<br>
<br>
<br>
2. One question that came up is how to handle type variables
that are <br>
present in class methods, but are not type class parameters.
If there <br>
are multiple types/classes in a single recursive group, the
kind of such <br>
type variables might not be fully resolved until a later
type-or-class <br>
is processed. Is there a recommended approach?<br>
<br>
I can see two ways to proceed:<br>
<br>
i) First determine the kinds of all the data types, classes,
and type <br>
synonyms. Then perform a second pass over each type or class
to <br>
determine the kinds of type variables (in class methods) that
are not <br>
type class parameters.<br>
<br>
ii) Alternatively, record the kind of each type variable as it
is <br>
encountered -- even though such kinds may contain unification
kind <br>
variables. After visiting all types-or-classes in the
recursive group, <br>
replace any kind variables with their definition, or with a *
if there <br>
is no definition.<br>
<br>
I've currently implement approach i), which requires doing
kind <br>
inference on class methods twice. Is this the recommended
approach?<br>
<br>
<br>
3. Also, is Haskell 98 kind checking the same as Haskell 2010
kind checking?<br>
<br>
-BenRI<br>
<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a
href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe"
rel="noreferrer noreferrer" target="_blank"
moz-do-not-send="true" class="moz-txt-link-freetext">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to
post.</blockquote>
</div>
</blockquote>
</body>
</html>