'Alternative function for case match in haskell
I am writing an API in Haskell which involves a DB query. Function will be something like do a db query and then return the response back.
doAPICall :: Request -> (Monad m Response)
doAPICall req = do
maybeValDB <- getValFromDB (req.tokenId) -- Returns maybe type
-- My current logic was to do a case match of maybe
case maybeValDB of
Just val -> do
--Some logic here using that val and return the response
pure response
Nothing -> pure response
I am currently getting a maybe type from the DB query function. Is there a simple way like a one liner code to avoid this case match and send the response back.
I thought of using fromMaybe
but it should have same type for the default value. Here in this case if db returns Nothing I just want to exit the function with some response.
In general in many cases the response which I get will be of maybe type and I have to do case matches the code looks very ugly and have repetitive patterns. Can anyone tell me better alternative for this instead of having case matches everywhere.
Solution 1:[1]
Perhaps what you're looking for is maybe
?
doAPICall :: Request -> (Monad m Response)
doAPICall req = do
maybeValDB <- getValFromDB (req.tokenId)
flip (maybe $ pure response) maybeValDB $ \val -> do
-- Some logic here using that val and return the response
pure response
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Mokosha |