
LambdaCase is useful for things like this. On Sat, Mar 21, 2020 at 10:50 PM Henning Thielemann < lemming@henning-thielemann.de> wrote:
On Sat, 21 Mar 2020, Michael Hull wrote:
Hi,I use the State monad in a lot of places, but when I use it with the lens library, I find myself writing code like:
myFunc :: StateT MyState ([ResultType]) myFunc = do st <- get case st ^. some_property of True -> do my_value .= "Hello" True -> do my_value .= "Goodbye"
I want to do something based on a 'state-variable', but I have to write 'get' -- is there a pattern that allows me to avoid the intermediate 'st' variable?
gets (^. some_property)
But you still need a local variable for the result of 'gets'.
I want to write something like:
myFunc = do case (get ^. some_property) of True -> do my_value .= "Hello" True -> do my_value .= "Goodbye"
but that won't compile.
There cannot be an according accessor, because getting the state needs access to the state in the monad. One could at least think of using LambdaCase._______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.