[Haskell-cafe] Random thoughts about typeclasses
fuzxxl at gmail.com
Mon May 16 14:10:37 CEST 2011
I found out, that GHC implements typeclasses as an extra argument, a
record that stores all functions of the typeclass. So I was wondering,
is there a way (apart from using newtype) to pass a custom record as the
typeclass record, to modify the behavior of the typeclass? I thought
about something like this:
f :: Show a => [a] -> String
f = (>>= show)
-- So, f becomes something like this?
__f :: ClassShow a -> [a] -> String
__f (ClassShow __show) x = x >>= __show
-- And if I call the function, it looks somewhat like this:
g :: [Int] -> String
g = f
__g = __f instanceShowInt
-- But is it possible to do something like this?
g2 = __f (ClassShow (return . fromEnum))
Tis is just a random thought, some compilers like JHC implement them by
another way. But would this theoretically be possible?
More information about the Haskell-Cafe