Haskell语言学习笔记(20)IORef, STRef
来源:互联网 发布:手机淘宝怎样申请账号 编辑:程序博客网 时间:2024/06/08 04:26
IORef
一个在IO monad中使用变量的类型。
Prelude> :m +Data.IORefPrelude Data.IORef> a <- newIORef 1Prelude Data.IORef> v <- readIORef aPrelude Data.IORef> writeIORef a $ v + 1Prelude Data.IORef> readIORef a2Prelude Data.IORef> modifyIORef a (+1)Prelude Data.IORef> readIORef a3Prelude Data.IORef> a <- sequence [newIORef 0, newIORef 1, newIORef 2]Prelude Data.IORef> readIORef (a !! 0)0
STRef
一个在ST monad中使用变量的类型。
Counter
counter闭包
Javascript语言实现
function counter() { var c = 0; return function() { return ++c; };}var f = counter();console.log(f());console.log(f());console.log(f());
Haskell语言实现(使用 IORef 和 STRef)
import Control.Monad.STimport Data.STRefimport Data.IORefcounterIO :: IO (IO Int)counterIO = do c <- newIORef 0 return $ do modifyIORef c (+1) readIORef ccounterST :: ST s (ST s Int)counterST = do c <- newSTRef 0 return $ do modifySTRef c (+1) readSTRef cmain = do f <- counterIO print =<< f print =<< f print =<< f print $ runST $ do f2 <- counterST x <- f2 y <- f2 z <- f2 return (x, y, z)
123(1,2,3)
阅读全文
0 0
- Haskell语言学习笔记(20)IORef, STRef
- Haskell语言学习笔记(1)
- Haskell语言学习笔记(2)
- Haskell语言学习笔记(4)Functor
- Haskell语言学习笔记(5)Applicative
- Haskell语言学习笔记(6)Monad
- Haskell语言学习笔记(8)Monoid
- Haskell语言学习笔记(14)Foldable
- Haskell语言学习笔记(16)Alternative
- Haskell语言学习笔记(17)MonadPlus
- Haskell语言学习笔记(18)Traversable
- Haskell语言学习笔记(21)Array
- Haskell语言学习笔记(22)MaybeT
- Haskell语言学习笔记(29)CPS
- Haskell语言学习笔记(31)ListT
- Haskell语言学习笔记(35)Contravariant
- Haskell语言学习笔记(39)Category
- Haskell语言学习笔记(42)Bifunctor
- 解决IE11兼容HTML5 设置
- Diary II
- iOS二维码生成
- 1.前端之路-css-一颗爱心
- Java:如何寻找单链表的中间节点
- Haskell语言学习笔记(20)IORef, STRef
- Python学习资料分享
- Haskell语言学习笔记(21)Array
- Html特殊字符
- java异常
- Haskell语言学习笔记(22)MaybeT
- 【图像处理】MATLAB:直方图
- 排序算法之快速排序
- 第二章 img+列表标签