[Haskell-cafe] Re: Are type synonym families really equivalent to
fundeps?
ChrisK
haskell at list.mightyreason.com
Mon Sep 3 20:00:55 EDT 2007
Ah... I see that I have a bug in my proposal, perhaps corrected below.
>> 2. In the second and fourth instances, the type variable x appears twice
>> in the parameters of the type function built from the fundep (a b -> c).
>> This causes an error. If I try adding (x ~ x') to the context and
>> making one of them x' instead of x, I get different errors.
I see the problem with the x parameter now:
>>
>> I'm starting to this this is an example of using functional dependencies
>> that has no translation to type families. Can anyone free me of such
>> thoughts?
>>
>> Code with fundeps is:
>>
>> data Var a = Var Int (Maybe String)
>> data RHS a b = RHS a b
>>
>> class Action t a b c | a -> t, a b -> c, a c -> b
>> instance Action t () y y
>> instance Action t (Var x) (x -> y) y
>> instance Action t [t] y y
>> instance (Action t a b c) => Action t (RHS (Var x) a) (x -> b) c
>> instance (Action t a b c) => Action t (RHS [t] a) b c
>>
>
> I have never used associated types or type families. I assume you cannot rely
> on GHC lazy goodwill for the a->t constraint. You will have to be explicit.
> Not using associated types but type families I think the syntax should be:
>
> [snip]
> type instance A_C_B (RHS (Var x) a) c = x -> A_C_B a c
The above is the corrected line. I had forgotten the (x->) on the RHS.
> [snip]
More information about the Haskell-Cafe
mailing list