[Haskell-cafe] Re: Are type synonym families really equivalent to fundeps?

Chris Smith cdsmith at twu.net
Mon Sep 3 22:44:32 EDT 2007

ChrisK wrote:
> -- You need to help GHC more here:
> type instance A_T () = <explicit type you actually use with ()>
> type instance A_T (Var x) = <explicit type you actually use with (Var x)>
> type instance A_T [t] = t
> type instance A_T (RHS (Var x) a) = <explicit type you actually use ...>
> type instance A_T (RHS [t] a) = t

Chris, this actually isn't workable.  The problem is that there is no 
such thing as "explicit type you actually ue with ()".  If the type 
variable 'a' gets matched to () or (Var x), then t can be any type.  
That works currently.  I don't want to fix the type of 't', as this code 
goes in a library where different applications are using different types 
for 't'.

As I said, this is probably not really right, since () really doesn't 
determine a value for a; but it does work right now.

Just for kicks, I tried this:

   type instance A_T () = forall t. t

it didn't work.

Chris Smith

More information about the Haskell-Cafe mailing list