我怀疑你在找
rank2classes
. 例如:
{-# LANGUAGE FlexibleInstances, StandaloneDeriving, TemplateHaskell #-}
import Data.Maybe
import Data.Monoid
import qualified Rank2
import qualified Rank2.TH
data Bar a = Bar (a Int) (a Bool)
deriving instance Show (Bar Maybe)
Rank2.TH.deriveFunctor ''Bar
Rank2.TH.deriveFoldable ''Bar
main = do
print $ Rank2.fmap listToMaybe (Bar [1,2,3] [False, True])
print $ getAll (Rank2.foldMap (All . null) (Bar [1,2,3] [False, True]))
print $ getAll (Rank2.foldMap (All . null) (Bar [] []))
编辑:
mmorph
,尽管我怀疑
等级2