我有類似如下:保證型的家庭將獲得一定的類
{-# LANGUAGE TypeFamilies #-}
class Configuration c where
data Pig c
data Cow c
parsePig :: GenParser Char st (Pig c)
parseCow :: GenParser Char st (Cow c)
data Farm c =
{ pigs :: [Pig c]
, cows :: [Cow c]
} deriving Show
失敗的原因是deriving Show
線。我不知道如何強制所有Configuration
實例確保它們的data Pig
和data Cow
實現都是Show
的實例。
我知道我可以使其具有showPig
和showCow
方法和寫出來的整復show
實例,但在現實中的事情比這更復雜,這將是一個相當痛苦。
是否有一種簡單而優雅的方式來保證類型族實例本身就是某些類的實例?
它不會因爲'LANGAUGE'行而失敗嗎? –
這不是整個文件;爲了這個問題,我削減了它。顯然有一個模塊聲明,一個ParserCombinators.Parsec導入,等等。 – So8res
我認爲馬特的意思是這條線表示「LANGAUGE」,而它應該是'LANGUAGE'。 –