5

ここで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
4

2 に答える 2

9

この種のコンテキストは、haskell-98データ型では許可されていません。これを読む

もちろん、StandaloneDeriving拡張機能を使用してスタンドアロンインスタンスを作成し、残りの作業をghcに任せることができます。

deriving instance Show Obj
于 2012-09-17T02:35:05.460 に答える
2

基本的には、GHCの頭が爆発するからです。言い換えれば、実存型のインスタンスを導出する方法は単に教えられていません。いくつかのバージョン番号が通過するのを待ってから、再試行してください。

于 2012-09-17T02:31:10.190 に答える