第25章:單子變換的升格操作
- 單子變換就是一類函式,用來把單子m包裹成單子t m,同時宣告在這種情況下對應的單子例項。
- 實際當中,我們常遇到多個單子變換疊加的情況,分析單子變換的型別時,按順序來看
- 我們把通過疊加單子變換得到的單子叫單子棧 monad stack
- 問題是:當單子變換的層級變深時,lift操作開始變得麻煩,當我們增加、刪除單子變換型別時,所有的lift都要做相應的改變
1. MonadIO
- transformers函式庫提供的MonadIO型別類來自動升格IO操作
liftIO函式把IO操作升格到MonadIO範疇
class Monad m => MonadIO m where liftIO :: IO a -> m a instance MonadIO IO where liftIO = id instance (MonadIO m) => MonadIO (StateT s m) where liftIO = lift . liftIO ...
2. MonadState和MonadReader
- mtl函式庫中,每一個單子變換都有對應的型別類來方便使用
MonadState和MonadReader用來定義對應單子型別的一些通用操作
--Control.Monad.Reader.Class class Monad m => MonadReader r m | m -> r where ask :: m r local :: (r -> r) -> m a -> m a reader :: (r -> a) -> m a instance MonadReader r ((->) r) where ask = id local f m = m . f reader = id --Control.Monad.State.Class class Monad m => MonadState s m | m -> s where --m必須是單子,|後的m -> s表示型別依賴,型別變數s取決於型別變數m get :: m s put :: s -> m () state :: (s -> (a, s)) -> m a
3.型別家族 TypeFamilies
- 型別依賴並不是唯一能描述上述型別關係的工具
- 型別家族定義了一個滿足某些條件的型別的集合
- 在宣告型別類時提供型別類方法定義需要的型別別名——關聯型別別名
- 單子變換函式庫monads-tf
4. Lazy StateT 和 Strict StateT
- 區別,單子例項宣告中的細微差別
5. Writer單子
- 常用來構造連續的資料
不解的地方甚多,還不知道怎麼用,先把後面的看完吧
相關文章
- 業務流程的升格、進階、轉換
- 變數子串的常用操作變數
- RxSwift 之變換操作Swift
- 解剖 RxJava 之變換操作符RxJava
- RxJava2.0——變換操作符RxJava
- 【數理知識】第1章-傅立葉變換-《積分變換與場論》王振
- 執行計劃-5:第一個子操作的變化
- mORMot 1.18 第07章 簡單的讀寫操作ORM
- RxJava 學習筆記 -- 變換操作符RxJava筆記
- windows下node更換版本(簡單操作)Windows
- 褲子換裙子,就問你GAN的這波操作秀不秀
- 單一div的正多邊形變換(純CSS)CSS
- 【一葉一世界,換維升格局】技術創業的對資本的態度創業
- 仿射變換及其變換矩陣的理解矩陣
- 小波變換與傅立葉變換的區別
- OpenGL中的座標變換、矩陣變換矩陣
- OpenGL模型檢視變換、投影變換、視口變換模型
- RxJava 原始碼分析系列(四) -操作符變換原理RxJava原始碼
- DG的切換操作
- pdf轉換成ppt,這樣操作很簡單
- 【變更】線上庫的變更操作
- Premiere Pro CC之視訊升格降格(六)REM
- 簡單的量子演算法(一):Hadamard 變換、Parity Problem演算法
- 空間向量變換,以及OpenGL的glm庫簡單應用
- 【OpenCV-Python】:影像的傅立葉變換與逆傅立葉變換OpenCVPython
- Rxjava 2.x 原始碼系列 - 變換操作符 Map(上)RxJava原始碼
- Slate文件編輯器-WrapNode資料結構與操作變換資料結構
- Hough變換
- 傅立葉變換
- 陣列的操作-變形陣列
- 【DWT筆記】傅立葉變換與小波變換筆記
- python的子子孫孫(變種程式語言)Python
- 直播平臺開發,Android端簡單的顏色背景變換Android
- ReactiveCocoa 中 RACSignal 所有變換操作底層實現分析(上)React
- ReactiveCocoa 中 RACSignal 所有變換操作底層實現分析(下)React
- MATLAB數字影象處理(一)基礎操作和傅立葉變換Matlab
- ReactiveCocoa 中 RACSignal 所有變換操作底層實現分析(中)React
- 第 3 節:變數變數