[英]Monoid how to use mempty
我有以下數據類型,在Monoid
類型類中實現:
data Optinal a =
Nada
| Only a
deriving (Eq, Show)
instance Monoid a => Monoid (Optinal a) where
mempty = Nada
mappend Nada (Only a) = Only a
mappend (Only a) Nada = Only a
mappend Nada Nada = Nada
mappend (Only a) (Only b) = Only (mappend a b)
我的問題是,如何使用mempty
函數?
Monoid
的mempty
定義了“ unit”元素。 可能使用它的一種特殊情況是,如果我們有一個函數聚集在Monoid
的列表上:
aggregate :: (Monoid a) => [a] -> a
aggregate [] = mempty
aggregate (x:xs) = x `mappend` aggregate xs
請記住, Monoid
是對常見計算形式的抽象。 當您為Monoid
編寫通用功能時,可能會出現mempty
情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.