获取结果和状态,而不是来自状态Monad的状态

问题描述 投票:1回答:1

我有此代码:runState (do { put 5; return 'X' }) 1,效果是:('X',5)。我想在do块中提取结果-'X'和当前状态-5,然后对它们进行处理。但是,当我像使用get函数时:z <- get会将结果设置为当前状态,从而破坏了5值。我该怎么做?

haskell monads state-monad
1个回答
0
投票

您可以这样做:

foo = do
    x <- do
        put 5
        return 'X'
    five <- get
    {- ... whatever you want ... -}

whatever you want中,变量x将为'X',变量five将为5

© www.soinside.com 2019 - 2024. All rights reserved.