Does this, and should this type check on GHC 6.10.x ?
Ahn, Ki Yung
kyagrd at gmail.com
Fri Jun 26 16:30:55 EDT 2009
Tom Schrijvers wrote:
>
> Have you first, before you turn to GHC< considered whether this code
> should be well-typed in any type system?
>
>> Review3.lhs:67:29:
>> Could not deduce (Expandable (Tuple (Map ((,) t2) ys)))
>> from the context (xs ~ t2 ::: ts2, Expandable t2)
>> arising from a use of `:::' at Review3.lhs:67:29-59
>
> At first sight, it looks like this constraint
>
> Expandable (Tuple (Map ((,) t2) ys))
> is indeed one that's required to hold in order to make the code
> well-typed. Do you agree?
>
> Yet I see no instance of Expandable for Tuple. So why do you
> think this constraint should hold anyway?
I agree with you. I think the code is not supposed to type check, and
that's what I experience from GHC so far.
One problem that bothers us is that, as I mentioned in my original
message, there were at least two reports that they were possible to type
check in GHC, which we cannot reproduce. So, I'm just wondering what
version and settings that makes it type check (if such version or
setting exists, its good for GHC type system developers to be aware of
it), and just double check if there is any other typing rules/theories
that I am not aware of makes the code type check (if such version of GHC
exists and it is not a bug).
Another problem, which I haven't mentioned, I have when I tried to make
additional type family instance declarations that latest (stable)
distributions of GHC 6.10.x does not let me declare instances of
(Expandable (Tuple (Map ((,) t2) ys))). When you try declaring such an
instance something like this:
> instance Expandable (Tuple (Map ((,) t2) ys)) where
> ...
GHC will give me an error message that type synonyms are not allowed in
instance declarations:
kyagrd at kyavaio:~/tmp$ ghci -fglasgow-exts -XUndecidableInstances
Review3.lhs
GHCi, version 6.10.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( Review3.lhs, interpreted )
Review3.lhs:62:2:
Illegal type synonym family application in instance:
Tuple (Map ((,) t2) ys)
In the instance declaration for `Expandable (Tuple (Map ((,) t2) ys))'
Failed, modules loaded: none.
So, my impression is that there is little hope even I try fixing this by
adding more instance declarations, even if this was an incomplete code
because of space restrictions of the review. But I still wanted to
double check and discuss this matter with mailing list readers since
there were few reports (which we fail to reproduce) that this type
checks in their installation of GHC.
More information about the Glasgow-haskell-users
mailing list