1 -- This file is part of htalkat
2 -- Copyright (C) 2021 Martin Bays <mbays@sdf.org>
4 -- This program is free software: you can redistribute it and/or modify
5 -- it under the terms of version 3 of the GNU General Public License as
6 -- published by the Free Software Foundation, or any later version.
8 -- You should have received a copy of the GNU General Public License
9 -- along with this program. If not, see http://www.gnu.org/licenses/.
14 import Control
.Monad
(unless, when)
16 -- nice tip from one joeyh:
17 whenM
,unlessM
,(>>?
),(>>!) :: Monad m
=> m
Bool -> m
() -> m
()
18 whenM c a
= c
>>= flip when a
19 unlessM c a
= c
>>= flip unless a
22 -- same precedence as ($), allowing e.g. foo bar >>! error $ "failed " ++ meep
26 maybeToEither
:: e
-> Maybe a
-> Either e a
27 maybeToEither e
= maybe (Left e
) Right
29 eitherToMaybe
:: Either e a
-> Maybe a
30 eitherToMaybe
(Left _
) = Nothing
31 eitherToMaybe
(Right a
) = Just a