[Haskell-cafe] Functional dependencies *not* part of the next Haskell standard?

Tom Schrijvers Tom.Schrijvers at cs.kuleuven.be
Fri Jul 13 06:13:35 EDT 2007


>>> | I think the implementation is some 90% complete though, in GHC head.
>>> | Certainly you can write many associated types programs already -- the
>>> | missing part is finishing off associated type synonyms, iirc.
>>
>>> ...and we have a working implementation of that too, thanks to Tom
>>> Schrijvers.  It's not in the HEAD yet, but it will be in a few weeks.
>>
>> so it will be a part of 6.8? great news! afaiu, ATS, rather than AT,
>> is direct substitution for FD?
>
> Functional dependencies desugar to indexed type families, an extension
> of the original associated, in GHC head already. For the full story,
> see the wiki page.
>
>    http://haskell.org/haskellwiki/GHC/Indexed_types
>
> which includes an example of porting functional dependencies to
> associated types
>
>    http://haskell.org/haskellwiki/GHC/Indexed_types#A_associated_type_synonym_example

It's really simple to replace a functional dependency with a type 
function.

A class declaration

 	class C a b | a -> b

becomes:

 	class FD a ~ b => C a b where
           type FD a

and an instance

 	instance C [x] x

becomes

 	instance C [x] x where
           type FD [x] = x

That's it: only class and instance declarations have to be modified.

Now you can start to drop dependent parameters, if you want.

There are a few examples in my slides as well (if you don't mind 
the pptx): http://www.cs.kuleuven.be/~toms/Research/talks/Tyfuns.pptx

Cheers,

Tom

--
Tom Schrijvers

Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium

tel: +32 16 327544
e-mail: tom.schrijvers at cs.kuleuven.be


More information about the Haskell-Cafe mailing list