Van*_*uel 5 haskell existential-type
为什么我不能在这里推出Show?
{-# LANGUAGE ExistentialQuantification #-}
data Obj = forall a. (Show a) => Item_Obj {get :: a, rest :: Obj} | No_Obj deriving Show
xs :: Obj
xs = Item_Obj 1 $ Item_Obj "foo" $ Item_Obj 'c' $ No_Obj
main :: IO ()
main = putStrLn . show $ xs
Run Code Online (Sandbox Code Playgroud)
haskell-98数据类型中不允许使用此类上下文.读这个
当然,您可以使用StandaloneDeriving扩展来编写独立实例,让ghc完成其余的工作.
deriving instance Show Obj
Run Code Online (Sandbox Code Playgroud)