
Hi Ertugrul,
if you look back earlier in this thread, you'll see that
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
allows me to write genuine one line definitions for each wrapper type.
Eg.
newtype Blog = Blog Obj deriving ToObj
There is no need to code the instances as GHC will do that for you.
Figuring out how to avoid writing the instances was the point of my
original post.
Kevin
On Sep 9, 11:10 am, Ertugrul Soeylemez
Kevin Jardine
wrote: My goal was to find a way to define all that was needed using Haskell's automatic instance deriving mechanism. Haskell can automatically derive Foldable, which is why I was looking at that.
However, that requires writing two lines for each wrapper newtype to get around the kind problem.
I wanted one line.
There:
newtype Blog = Blog { getBlogObj :: Obj } newtype Comment = Comment { getCommentObj :: Obj } newtype User = User { getUserObj :: Obj }
class GetObject a where getObject :: a -> Obj instance GetObject Blog where getObject = getBlogObject instance GetObject Comment where getObject = getCommentObject instance GetObject User where getObject = getUserObject
You shouldn't abuse Foldable for this purpose, unless you really mean it.
I agree that the Foldable solution was a bit of a kludge.
And not necessary either.
Greets, Ertugrul
-- nightmare = unsafePerformIO (getWrongWife >>= sex)http://ertes.de/
_______________________________________________ Haskell-Cafe mailing list Haskell-C...@haskell.orghttp://www.haskell.org/mailman/listinfo/haskell-cafe