1 -- This file is part of Intricacy
2 -- Copyright (C) 2013 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/.
13 import Control
.Monad
.Trans
.Maybe
14 import Data
.Vector
(Vector
)
15 import qualified Data
.Vector
as Vector
17 enumVec
:: Vector a
-> [(Int,a
)]
18 enumVec
= Vector
.toList
. Vector
.indexed
20 liftMaybe
:: Monad m
=> Maybe a
-> MaybeT m a
21 liftMaybe
= MaybeT
. return
23 -- nice tip from one joeyh:
24 whenM
,unlessM
,(>>?
),(>>!) :: Monad m
=> m
Bool -> m
() -> m
()
25 whenM c a
= c
>>= flip when a
26 unlessM c a
= c
>>= flip unless a
29 -- same precedence as ($), allowing e.g. foo bar >>! error $ "failed " ++ meep
33 -- |fi: just a straight abbreviation for fromIntegral
34 fi
:: (Integral a
, Num b
) => a
-> b