[Haskell-cafe] Data structure containing elements which are instances of the same type class
Heinrich Apfelmus
apfelmus at quantentunnel.de
Sun Aug 12 09:24:17 CEST 2012
Antoine Latter wrote:
> It should be pretty easy to write an adapter function of type "String ->
> (Show a => a)".
The type needs to be
String -> (exists a. Show a => a)
which is equivalent to
String -> (forall a. Show a => a -> c) -> c
Here is the implementation of the adapter
newtype ExistsShow = E { showE :: String }
instance Show ExistsShow where
show = showE
withShow :: String -> (forall a. Show a => a -> c) -> c
withShow s f = f (E s)
Essentially, the point is that the types are equivalent
ExistsShow == exists a. Show a => a
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
More information about the Haskell-Cafe
mailing list