From 3d3f562be07dac80d1859ff3ba82c660acfceec9 Mon Sep 17 00:00:00 2001 From: Agata Murawska <agatamurawska@google.com> Date: Thu, 27 Sep 2012 16:10:58 +0200 Subject: [PATCH] Remove explicit recursion from sanitizeDictResults Since ERpcError is still not a monad, a simple foldr will have to do for now. Signed-off-by: Agata Murawska <agatamurawska@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- htools/Ganeti/Rpc.hs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htools/Ganeti/Rpc.hs b/htools/Ganeti/Rpc.hs index 0772c8f76..b46b3baa4 100644 --- a/htools/Ganeti/Rpc.hs +++ b/htools/Ganeti/Rpc.hs @@ -224,12 +224,12 @@ executeRpcCall nodes call = -- | Helper function that is used to read dictionaries of values. sanitizeDictResults :: [(String, J.Result a)] -> ERpcError [(String, a)] -sanitizeDictResults [] = Right [] -sanitizeDictResults ((_, J.Error err):_) = Left $ JsonDecodeError err -sanitizeDictResults ((name, J.Ok val):xs) = - case sanitizeDictResults xs of - Left err -> Left err - Right res' -> Right $ (name, val):res' +sanitizeDictResults = + foldr sanitize1 (Right []) + where + sanitize1 _ (Left e) = Left e + sanitize1 (_, J.Error e) _ = Left $ JsonDecodeError e + sanitize1 (name, J.Ok v) (Right res) = Right $ (name, v) : res -- | Helper function to tranform JSON Result to Either RpcError b. -- Note: For now we really only use it for b s.t. Rpc c b for some c -- GitLab