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