2
λ: >let m = newMVar "foo"
λ: >m >>= readMVar
"foo"
我试图用modifyMVar_
:
λ: >:t modifyMVar_
modifyMVar_ :: MVar a -> (a -> IO a) -> IO()
通过:
λ: >m >>= \mvar -> modifyMVar_ mvar (\_ -> return "bar")
但是,它看起来并不像它修改m
从"foo"
至"bar"
。
λ: >m >>= readMVar
"foo"
我做错了什么?
难道你不应该把它全部写在一行吗? 'm >> = \ mvar - > modifyMVar_ mvar(\ _ - > return“bar”)>> readMVar'? –
我建议你阅读['let' vs'<-'](https://stackoverflow.com/questions/28624408/equal-vs-left-arrow-symbols-in-haskell)。上面你用'let'来表示'<--',我想。 – chi
[在Haskell Servant应用程序中启动应用程序时启动间隔]的可能重复(https://stackoverflow.com/questions/46959753/setting-off-a-interval-on-application-launch-in-a-haskell -servant-app) – jberryman