
On 07/04/2010 01:49 PM, Sjoerd Visscher wrote:
On Jul 4, 2010, at 11:31 AM, Andrew Coppin wrote:
type family F f a :: * class RFunctor f where (%) :: f a b -> (a -> b) -> F f a -> F f b
I have literally no idea what a type family is. I understand ATs (I think!), but TFs make no sense to me.
(For this reason, most if not all of the rest of this post doesn't make sense.)
I would have liked to use ATs here, like this:
class RFunctor f where type F f a :: * (%) :: f a b -> (a -> b) -> F f a -> F f b
But this isn't valid as ATs require all type variables to be in scope, and 'a' isn't. There's a GHC ticket for this: http://hackage.haskell.org/trac/ghc/ticket/3714
This works (on my ghc-6.12.2):
class Rfunctor f where type F f :: * -> * (%) :: f a b -> (a -> b) -> F f a -> F f b
[...]
-- Steffen