是否有做大致有以下包:Fieldwise銷售記錄
給定一個記錄:
data R = R { a :: TypeA,
b :: TypeB,
c :: TypeC }
派生的提升紀錄:
data R_L f = R_L { a_L :: f TypeA,
b_L :: f TypeB,
c_L :: f TypeC }
並提供了幾個實例和功能類似於:
instance (Monoid (f TypeA), Monoid (f TypeB), Monoid (f TypeC))
=> (Monoid (R_L f)) where
mempty = R_L mempty mempty mempty
mplus a b = ...fieldwise mplus...
sequenceR :: (Monad m) => R_L m -> m R
sequenceR = ... run fields, sum results ...
sequenceRA :: (Applicative m) => R_L m -> m R
sequenceRA x = R <$> a_L x <*> b_L x <*> c_L x
和其他可能。有沒有提供這種功能的軟件包,如果沒有,哪種機制(TH?泛型?)最適合用來實現它?
這幺情況下是沒有意義的,因爲'F'有種'* - > *'。可以使用'MonadPlus',這是你的意思嗎? – leftaroundabout
編輯使Monoid實例稍微更清晰,但我也歡迎MonadPlus實例。 –