簡體   English   中英

Monoid如何使用mempty

[英]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函數?

Monoidmempty定義了“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM