第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不是Functor / Functor / Applicative / Monad的好例子?

不是Functor / Functor / Applicative / Monad的好例子?

不是Functor / Functor / Applicative / Monad的好例子?在向某人解釋什么是類型類X時(shí),我很難找到正好是X的數(shù)據(jù)結(jié)構(gòu)的好例子。所以,我請求示例:一個不是Functor的類型構(gòu)造函數(shù)。一個類型構(gòu)造函數(shù),它是一個Functor,但不是Applicative。一個類型構(gòu)造函數(shù),它是Applicative,但不是Monad。Monad的類型構(gòu)造函數(shù)。我認(rèn)為Monad到處都有很多例子,但Monad的一個很好的例子與之前的例子有一些關(guān)系可以完成圖片。我尋找彼此相似的示例,區(qū)別僅在于屬于特定類型類的重要方面。如果有人能設(shè)法在這個層次結(jié)構(gòu)的某個地方隱藏一個Arrow的例子(在Applicative和Monad之間嗎?),那也很棒!
查看完整描述

3 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個贊

我的手機(jī)可能會讓我的風(fēng)格變得狹窄,但是現(xiàn)在這樣。

newtype Not x = Kill {kill :: x -> Void}

不能是一個Functor。如果是,我們就有

kill (fmap (const ()) (Kill id)) () :: Void

月亮將由綠色奶酪制成。

與此同時(shí)

newtype Dead x = Oops {oops :: Void}

是一個算子

instance Functor Dead where
  fmap f (Oops corpse) = Oops corpse

但不能適用,或者我們有

oops (pure ()) :: Void

和格林將由月亮奶酪制成(實(shí)際上可以發(fā)生,但只能在晚上)。

(額外注意:Void,因?yàn)?code>Data.Void是一個空的數(shù)據(jù)類型。如果你試圖undefined證明它是一個Monoid,我會unsafeCoerce用來證明它不是。)

歡悅,

newtype Boo x = Boo {boo :: Bool}

在很多方面是適用的,例如Dijkstra會有的,

instance Applicative Boo where
  pure _ = Boo True
  Boo b1 <*> Boo b2 = Boo (b1 == b2)

但它不能是Monad。要明白為什么不這樣做,請注意返回必須是持續(xù)的,Boo True或者Boo False因此

join . return == id

不可能舉行。

哦,是的,我差點(diǎn)忘了

newtype Thud x = The {only :: ()}

是Monad。滾動你自己。

飛機(jī)趕上......


查看完整回答
反對 回復(fù) 2019-08-06
  • 3 回答
  • 0 關(guān)注
  • 427 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號