亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

什么是單曲?

什么是單曲?

最近對Haskell做了簡要的回顧之后,什么才是簡潔實用關于單曲本質上是什么的解釋?我發現我遇到的大多數解釋都很難理解,而且缺乏實際的細節。
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

事實上,與人們對Monad的共識相反,它們與國家無關。Monad僅僅是一種包裝事物的方法,并提供了對包裝的東西進行操作的方法,而不需要對其展開包裝。

例如,您可以在Haskell中創建一個類型來包裝另一個類型:

data?Wrapped?a?=?Wrap?a

包裝我們定義的東西

return?::?a?->?Wrapped?a
return?x?=?Wrap?x

若要在不展開包裝的情況下執行操作,請假定您有一個函數。f :: a -> b,然后你可以這樣做電梯該函數的作用是對包裝好的值進行操作:

fmap?::?(a?->?b)?->?(Wrapped?a?->?Wrapped?b)fmap?f?(Wrap?x)?=?Wrap?(f?x)

這就是我們要理解的一切。然而,事實證明,這樣做有一個更通用的功能。起重,也就是bind:

bind?::?(a?->?Wrapped?b)?->?(Wrapped?a?->?Wrapped?b)bind?f?(Wrap?x)?=?f?x

bind能做的比fmap,反之亦然。實際上,fmap只能根據bindreturn..所以,在定義單曲時.。你給出它的類型(這里是Wrapped a)然后說出它是如何returnbind行動有效。

最酷的是,這是一個如此普遍的模式,它彈出的地方到處都是,以一種純粹的方式封裝狀態只是其中之一。

至于對單曲的理解,不要太擔心。讀一讀你覺得有趣的東西,如果你不馬上理解的話,不要擔心。然后,只要潛入像Haskell這樣的語言就可以了。單簧管就是這樣一種東西,當你通過練習了解你的大腦時,有一天你突然意識到你理解了它們。


查看完整回答
反對 回復 2019-07-13
  • 3 回答
  • 0 關注
  • 604 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號