Jon Cast wrote:...The intermediate type /is/ needed---it's a (hidden) parameter to your `encode' and `decode' functions. Why do you think it shouldn't be?
Because I couldn't see the woods for the trees. I think I had almost figured out what I was asking (the impossible) before your message appeared.
Don't forget that this is the toplevel business, not a universal
"disease". GHCi says
Prelude> :t (show . read)
(show . read) :: String -> String
and doesn't complain. But if you define
bz = show . read
the attempt to load this definition (file: ctest.hs) results in:
ctest.hs:3:
Ambiguous type variable `a' in these top-level constraints:
`Read a' arising from use of `read' at ctest.hs:5
`Show a' arising from use of `show' at ctest.hs:5
Failed, modules loaded: none.
Prelude>
So, as one of my friends used to say: it should be obvious for
everybody that what is obvious for one, need not be obvious for
the others...
Jerzy Karczmarczuk
_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe