Tom,
 
Yes of course it is simplified for clarity.
 
Here is a modified version where fb does something (a bit more usefull)
 
   
class PP m where
    create :: a -> m a
 
data A a = A a
instance PP A where
    create a = A a

class CB a where
    fb :: a -> a
 
data B m a = B (m a)
instance (PP m) => PP (B m) where
    create a =  let a' = fb a
                in B (create a')
 
class PP' m a where
    create' :: a -> m a
   
instance (PP m) => PP' m a where
    create' = create   

instance (PP m, CB a) => PP' (B m) a where
    create' a = let a' = fb a
                in B (create a')
 
Actually I ran into that problem when trying to add a kind of rule engine layer above the Persistent typeclass. Given the complexity of these typeclass, I think it is more practical to reason about a simpler form of the same problem.
 
Thanks
 
J-C 

On Tue, Apr 8, 2014 at 9:42 AM, Tom Ellis <tom-lists-haskell-cafe-2013@jaguarpaw.co.uk> wrote:
On Tue, Apr 08, 2014 at 09:25:17AM +0200, jean-christophe mincke wrote:
> instance (PP m) => PP (B m) where
>     create a =  let _ = fb a
>                 in B (create a)

Your use of 'fb' here is baffling.  Am I right in thinking you have tried to
simplify your problem for clarity?  If so I think you have simplified too
far!

Could you give an example where the use of 'fb' actually matters?

Tom
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe