亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Haskell語(yǔ)言學(xué)習(xí)筆記(8)Monoid

2019-11-14 10:23:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Monoid

class Monoid a where  mempty :: a  mappend :: a -> a -> a  mconcat :: [a] -> aMonoid(幺半群)是個(gè)類(lèi)型類(lèi)。存在單位元mempty,二元結(jié)合操作mappend,以及列表折疊操作mconcat。注:幺半群是群論中的概念。所謂半群是指一個(gè)集合,其中存在一種滿足結(jié)合律的結(jié)合運(yùn)算。所謂幺,是指集合之內(nèi)存在一個(gè)單位元,它與集合中任何元素e結(jié)合(包括左結(jié)合和右結(jié)合)的結(jié)果都是e。比如實(shí)數(shù)的求和以及求積都是幺半群。顯然求和運(yùn)算以及求積運(yùn)算都滿足結(jié)合律。求和的單位元是0,求積的單位元是1,因?yàn)?+e=e+0=e,而1*e=e*1=e。再比如時(shí)鐘也是幺半群。

(<>)

(<>) :: Monoid m => m -> m -> m(<>) = mappend

Monoid的法則

mempty <> x = xx <> mempty = x(x <> y) <> z = x <> (y <> z)幺半群滿足結(jié)合律(半群),存在單位元(幺)。

[a] 是 Monoid

instance Monoid [a] where        mempty  = []        mappend = (++)        mconcat xss = [x | xs <- xss, x <- xs]列表是個(gè)幺半群。二元結(jié)合操作(++)滿足結(jié)合律。單位元為空列表[]。
PRelude> [1,2,3] <> [4,5,6][1,2,3,4,5,6]Prelude> "pang" <> mempty"pang"Prelude> mconcat [[1,2],[3,6],[9]][1,2,3,6,9]

Ordering 是 Monoid

data Ordering = LT | EQ | GTinstance Monoid Ordering where        mempty         = EQ        LT `mappend` _ = LT        EQ `mappend` y = y        GT `mappend` _ = GT排序這個(gè)幺半群用于實(shí)現(xiàn)按字典排序。單位元為相等即EQ。
Prelude> LT <> GTLTPrelude> GT <> LTGTPrelude> mempty <> LTLTPrelude> mempty <> GTGT

Sum 和 Product 都是 Monoid

newtype Sum a = Sum { getSum :: a }newtype Product a = Product {getProduct :: a}instance Num a => Monoid (Sum a) where    mempty = Sum 0    Sum x `mappend` Sum y = Sum (x + y)instance Num a => Monoid (Product a) where    mempty = Product 1    Product x `mappend` Product y = Product (x * y)求和以及求積都是幺半群。顯然都滿足結(jié)合律。求和的單位元為0,求積的單位元為1。
Prelude Data.Monoid> Sum 5 <> Sum 6 <> Sum 10Sum {getSum = 21}Prelude Data.Monoid> getSum . mconcat . fmap Sum $ [5, 6, 10]21Prelude Data.Monoid> Product 5 <> Product 6 <> Product 10Product {getProduct = 300}Prelude Data.Monoid> getProduct . mconcat . fmap Product $ [5, 6, 10]300

Any 和 All 都是 Monoid

newtype Any = Any { getAny :: Bool }newtype All = All { getAll :: Bool }instance Monoid Any where        mempty = Any False        Any x `mappend` Any y = Any (x || y)instance Monoid All where        mempty = All True        All x `mappend` All y = All (x && y)求與以及求或都是幺半群。顯然都滿足結(jié)合律。求與的單位元為T(mén)rue,求或的單位元為False。
Prelude Data.Monoid> Any True <> Any FalseAny {getAny = True}Prelude Data.Monoid> All True <> All FalseAll {getAll = False}Prelude Data.Monoid> getAny . mconcat . map Any $ [False, False, False, True]TruePrelude Data.Monoid> getAll . mconcat . map All $ [False, False, False, True]False

如果 a 是 Monoid,那么 Maybe a 也是 Monoid

instance Monoid a => Monoid (Maybe a) where  mempty = Nothing  Nothing `mappend` m = m  m `mappend` Nothing = m  Just m1 `mappend` Just m2 = Just (m1 `mappend` m2)Maybe a 是幺半群(前提是 a 是幺半群)。單位元是 Nothing。
Prelude Data.Monoid> Nothing <> Just "andy"Just "andy"Prelude Data.Monoid> Just LT <> NothingJust LTPrelude Data.Monoid> Just (Sum 3) <> Just (Sum 4) Just (Sum {getSum = 7})

First 和 Last 都是 Monoid

newtype First a = First { getFirst :: Maybe a }newtype Last a = Last { getLast :: Maybe a }instance Monoid (First a) where        mempty = First Nothing        First Nothing `mappend` r = r        l `mappend` _             = linstance Monoid (Last a) where        mempty = Last Nothing        l `mappend` Last Nothing = l        _ `mappend` r            = r
Prelude Data.Monoid> First (Just 'a') <> First (Just 'b')First {getFirst = Just 'a'}Prelude Data.Monoid> Last (Just 'a') <> Last (Just 'b')Last {getLast = Just 'b'}Prelude Data.Monoid> getFirst . mconcat . map First $ [Nothing, Just 9, Just 10]  Just 9Prelude Data.Monoid> getLast . mconcat . map Last $ [Nothing, Just 9, Just 10]  Just 10
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品99久久久久久大便| 国产jizz| 动漫一区在线| 午夜黄色小视频| 一区不卡视频| 免费污片软件| 欧美视频亚洲色图| 911亚洲精品| 手机看片一区二区三区| 国产一区日韩欧美| 国产日韩视频在线播放| 国产黄色在线| 毛片在线播放网址| 99久久精品费精品国产风间由美| zzijzzij亚洲日本成熟少妇| 欧美性猛交xxxx乱大交退制版| 成人免费视屏| 999sesese| 欧美主播一区二区三区美女 久久精品人| 在线观看国产原创自拍视频| 国产网站在线免费观看| 欧美久久久久久久久久久久久久| 成人免费a级片| 偷拍自拍在线视频| 欧美极品视频在线观看| 在线高清欧美| 性网站在线免费观看| 国产日韩欧美一区在线| 51精品视频一区二区三区| 欧美成人亚洲成人| 青青在线视频一区二区三区| 亚洲av无码乱码国产精品fc2| 日本网站免费观看| 青青草原综合久久大伊人精品| 国产日韩欧美在线播放| 99亚洲乱人伦aⅴ精品| 中文字幕在线观看你懂的| 国产综合动作在线观看| 国产成人黄色片| 祥仔av免费一区二区三区四区| 中文字幕亚洲综合久久筱田步美| 久久亚洲成人精品| 精品国产91久久久久久久妲己| 欧美少妇一级片| 色先锋资源在线播放av| 成人av免费观看| 久久人人妻人人人人妻性色av| 国产成人aa精品一区在线播放| 精品久久影院| 在线免费观看欧美| 免费毛片a线观看| av免费一区二区| 不卡av播放| 欧美人狂配大交3d怪物一区| 国产精品久久久久久搜索| gogo人体高清视频| 奇米亚洲午夜久久精品| 欧美影院一区| 欧美又黄又嫩大片a级| 高潮毛片无遮挡| 国产调教一区二区三区| 日本高清xxxx| 日韩一区二区视频在线观看| 日韩av一区二区在线影视| 韩国女主播一区二区| 91久久久久久久久| 亚洲午夜未删减在线观看| 日本aⅴ亚洲精品中文乱码| 激情成人午夜视频| 影音先锋男人资源在线| 一个人免费视频www在线观看| 天堂视频在线免费观看| 亚洲超碰在线观看| 影音先锋国产资源| 亚洲精品8mav| 久久久综合九色合综国产精品| 欧美四级在线| 国产高清999| 91精品国产综合久久久久久蜜臀| 亚洲精品久久久久| 亚洲无码精品在线播放| 极品少妇一区二区三区精品视频| 国产精品人人| 婷婷五月综合久久中文字幕| 午夜欧美精品久久久久久久| 蜜桃视频成人m3u8| 五月激情四射婷婷| 免费精品99久久国产综合精品| 91九色视频在线| 中文字幕乱码人妻二区三区| 小早川怜子痴女在线精品视频| 狠狠色狠狠色综合日日91app| 动漫精品一区一码二码三码四码| 国产精品婷婷| 精品一区二区综合| 日韩欧美亚洲一区二区三区| 开心九九激情九九欧美日韩精美视频电影| 国产在线视频二区| 日本天堂网在线观看| 手机在线精品视频| 在线精品国产欧美| 五月婷婷一区| 国产在线观看高清视频| 国产精品不卡在线| av中文字幕观看| 六十路息与子猛烈交尾| 久久久午夜电影| 国产高清免费在线| 精品视频全国免费看| 欧美尿孔扩张虐视频| 亚洲国内精品| 五月激情综合色| 亚洲精品无码专区在线播放| 日韩二区三区四区| 国产精品免费精品一区| 中文字幕在线看片| 美女在线一区二区| 黄色网址网站在线观看| 久久久99精品| 91在线第一页| 猫咪成人官网| 亚洲综合在线五月| 99在线播放| av一本在线| 精品写真视频在线观看| www.午夜色大片| 日韩中文视频| 乱妇乱女熟妇熟女网站| 亚洲国产日韩一区二区| 日韩国产一级片| 91麻豆精品国产综合久久久久久| 91久久线看在观草草青青| 亚洲色图在线播放| 黄色精品在线观看| 欧美亚洲在线视频| 99久久婷婷国产综合精品青牛牛| 中日精品一色哟哟| 国产精品久久三| 中文字幕国产专区| 中文字幕日韩高清在线| 91成人综合网| 欧美多人爱爱视频网站| 欧洲成人一区| 日韩影视一区二区三区| 久久亚洲综合色| 色呦呦免费观看| 亚洲欧美日韩精品一区二区| hd国产人妖ts另类视频| 一区在线观看免费| 国产深夜精品| 国产99精品视频| 免费欧美视频| 国产黄视频网站| 久久久久久久97| 精品美女视频| 日本福利在线| 成年人免费影院| 亚洲精品二区三区| 亚洲国产精品福利| 国产美女视频黄a视频免费| 色噜噜狠狠永久免费| 99视频在线视频| 国产女女做受ⅹxx高潮| 天堂91在线| 欧美岛国激情| 91视频久久久| 欧美又大又硬又粗bbbbb| 日韩av片免费观看| 永久免费未满蜜桃| 欧洲美一区二区三区亚洲| 亚洲特级毛片| 先锋男人资源站| 国产69精品久久| 国产精品二区视频| 岛国一区二区在线观看| 99热这里只有精品免费| 青青草在线免费视频| 国产日本欧美一区| 欧美好骚综合网| 成人av激情人伦小说| 成人影院大全| 不卡一区综合视频| 亚洲精品成人三区| 四虎免费在线视频| 黄黄的网站在线观看| 97久久精品一区二区三区的观看方式| 欧美电影在线观看网站| 短视频在线观看| 日韩电影在线观看完整版| 亚洲午夜精品福利| 国产乱人乱偷精品视频| 久久久久久久久久久久久久av| 日本国产在线视频| 成人性做爰片免费视频| 亚洲欧美精品在线| 亚洲激情二区| 久久99热这里只有精品国产| 一区二区三区在线免费观看视频| 久久久久久毛片免费看| 欧美日韩亚洲高清一区二区| 日韩成人精品一区二区| 成人网免费看| 国产精品激情av在线播放| 裸体武打性艳史| 免费不卡中文字幕视频| 日韩精品成人在线观看| 天天干天天做天天操| 久久久精品视频在线| 欧美色图在线视频| h精品动漫在线观看| 老司机精品视频一区二区三区| 一区二区三区在线免费观看视频| 国产无遮挡呻吟娇喘视频| 国产欧美日韩综合精品一区二区三区| 黄色网址中文字幕| 精品国产二区三区| 国产精品第十页| 国产亚洲精品久久久久久久| 99久久精品免费看| 色涩视频在线观看| 国产专区视频| av午夜一区麻豆| 狠狠97人人婷婷五月| 韩国自拍一区| 国产在线精品一区二区夜色| 精品一区二区三区香蕉蜜桃| 国产成人一二三区| 日本少妇做爰全过程毛片| 国产欧美视频在线| 国产毛片久久久久久国产毛片| 欧美一卡二卡三卡| 色婷婷激情一区二区三区| 亚洲人体视频| 好吊妞无缓冲视频观看| 亚洲福利一区二区三区| 精品在线欧美视频| 黄色在线观看国产| 国产精品又粗又长| 免费高清在线| 日韩乱码人妻无码中文字幕| 久久久国产精品入口麻豆| 中文字幕 日韩 欧美| 日本网站在线免费观看视频| 亚洲黄色免费观看| 在线观看高清免费视频| 日日躁夜夜躁人人揉av五月天| 91精品久久久久久久久99蜜臂| 欧美特黄一区二区三区| 卡通动漫精品一区二区三区| 亚洲色图18p| 日本中文字幕视频| 999视频在线免费观看| 国产老头和老头xxxx×| 5g影院天天爽成人免费下载| 91精品国产高清自在线| 一区二区伦理片| 99久久精品一区| 欧美日韩国产123区| 日本男人操女人| 精品国产一区二区三区不卡在线| 国产一区二区在线观看免费视频| 最新超碰在线| 亚洲国产天堂久久综合网| 精品裸体舞一区二区三区| 今天免费高清在线观看国语| 美女免费观看一区二区三区| 91精品91| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 麻豆国产一区| 午夜爽爽爽男女免费观看影院| 国产成人在线免费观看| 大桥未久一区二区三区| 在线精品免费视| 日韩视频在线播放| 欧美熟妇精品一区二区蜜桃视频| 亚洲国产精品一区二区www在线| 国产永久在线观看| 成人51免费| 欧美男人的天堂| 国产一区二区高清在线| av毛片在线播放| 亚洲欧美综合自拍| 亚洲最大的成人av| 国产激情在线视频| 91丝袜高跟美女视频| 肉丝一区二区| 91精品国产综合久久香蕉| 国产区视频在线| 亚洲欧洲成人精品av97| 中文字幕日韩一区二区三区| 丝袜制服影音先锋| 亚洲一区二区三区在线视频| 一区二区日本| 欧美精品videos极品| 国产在线日韩精品| 欧美日韩免费不卡视频一区二区三区| 久久久久毛片免费观看| 亚洲国产一区二区三区a毛片| a天堂资源在线| 2021天天操| 国产日韩第一页| 不卡av免费在线| 国产一级在线播放| 久久久999精品| 韩日a级毛片| 久久久无码中文字幕久...| 亚洲视频一区在线观看| 欧美一区国产二区| 亚洲国产天堂网精品网站| eeuss草民免费| 日一区二区三区| 一本加勒比波多野结衣| 91精品国产91久久久久游泳池| 国产精品对白| 亚洲不卡1卡2卡三卡2021麻豆| 在线观看亚洲精品福利片| 欧美人善交videosg| 日韩人妻无码精品久久久不卡| 91最新在线免费观看| 欧美无人区码suv| 久久久久免费av| 黑人一区二区三区四区五区| sis001亚洲原创区| 日韩成人精品视频在线观看| 亚洲网站在线免费观看| 日韩有码一区| 老司机午夜福利视频| 欧美精品一区二区三区在线看午夜|