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