Thanks! Good point.
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.
-BenRI
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: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/bugs.html#typechecking-of-recursive-binding-groups
On Tue, Oct 12, 2021, 3:37 PM Benjamin Redelings <benjamin.redelings@gmail.com> wrote:
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.