> Hi, > > I've been getting into Haskell over the past few months and have just > come up against a bit of a brick wall when trying to encapsulate > some of the data structures in my code nicely. Basically what I > want to have, is a type class where one of the intermediate values > is opaque with respect to code using its implementations. This is > a simplified version of what I'm trying to accomplish: > > class Foo t where > encode :: String -> t > decode :: t -> String > > instance Foo Int where > encode = read > decode = show > > test = decode . encode > > This currently fails, because the type checker insists on trying to > figure out what its type should be - even though it shouldn't be > needed.
The intermediate type /is/ needed---it's a (hidden) parameter to your `encode' and `decode' functions. Why do you think it shouldn't be? <snip> Jon Cast _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe
