10 class Makeable s where
13 instance Makeable Foo1 where
16 instance Makeable Foo2 where
19 class (Makeable f) => Foo f where
22 class (Makeable b) => Bar b where
25 class (Makeable b) => Baz b where
28 class (Makeable b) => Bim b where
31 instance Foo Foo1 where
34 instance Bar Foo2 where
37 instance (Bar b) => Baz b where
40 instance Bim Foo1 where
43 instance (Baz b) => Bim b where
49 useBim :: Bim b => (forall a. b a -> a) -> a -> [a]
50 useBim doit x = [doit (make x), bim (make x :: Foo1 a)]