Skip to content

Instantly share code, notes, and snippets.

@denisshevchenko
Created July 15, 2016 12:09
Show Gist options
  • Save denisshevchenko/4a78d624050a9c038083d2666c041f43 to your computer and use it in GitHub Desktop.
Save denisshevchenko/4a78d624050a9c038083d2666c041f43 to your computer and use it in GitHub Desktop.
whenM (ms_isNeeded ms)
(ifM (pure (isJust (ms_onFailure ms)) <&&> isManagerAlive m)
(fromJust (ms_onFailure ms) >> reloadManager m)
(killManager m))
@cblp
Copy link

cblp commented Jul 16, 2016

Меньше магии

whenM (ms_isNeeded ms) $ do
    managerIsAlive <- isManagerAlive m
    case ms_onFailure ms of
        Just onFailure | managerIsAlive -> do
            onFailure
            reloadManager m
        _ ->
            killManager m

@cblp
Copy link

cblp commented Jul 16, 2016

И меньше скобочек

let MS{ms_isNeeded, ms_onFailure} = ms
whenM ms_isNeeded $ do
    managerIsAlive <- isManagerAlive m
    case ms_onFailure of
        Just onFailure | managerIsAlive -> do
            onFailure
            reloadManager m
        _ ->
            killManager m

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment