import Stuff

interface Functor f where
    map : (a -> b) -> f a -> f b

Functor List where
  map f [] = []
  map f (x :: xs) = f x :: map f xs

data Test : Type -> Type -> Type -> Type where
     MkTest : a -> b -> c -> Test a b c

Functor (Test c d) where
  map = ?foo

-- Checking we can cope with the clash between the a,b here and the
-- a,b in 'map' (the names here get priority, and the ones in map get
-- renamed)
Functor (Test a b) where
  map = ?bar

