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