module FunDep where
import Maybe
class C a b | a->b where f :: a->b
instance C [a] a where f = head
instance C a b => C (Maybe a) (Maybe b) where f = fmap f
--instance (Functor f,C a b) => C (f a) (f b) where f = fmap f
instance C Bool Int where f = fromEnum
instance C Int String where f = show
f2 x = f (f x)
z = f False
s = f2 False