Webanwendung mit FastCGI und Haskell
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
653B

  1. module Shared (
  2. defRunMaybeT, (<$$>), MaybeT(..), ifF, ifM, (<:), (<->)
  3. ) where
  4. import Data.Maybe
  5. import Control.Monad.Trans.Maybe
  6. defRunMaybeT :: Monad m => a -> MaybeT m a -> m a
  7. defRunMaybeT defValue m = fromMaybe defValue <$> runMaybeT m
  8. (<$$>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
  9. (<$$>) = fmap . fmap
  10. ifF :: Bool -> a -> a -> a
  11. ifF cond x y = if cond then x else y
  12. ifF' :: a -> a -> Bool -> a
  13. ifF' x y cond = if cond then x else y
  14. ifM :: Monad m => m Bool -> m a -> m a -> m a
  15. ifM cond m1 m2 = cond >>= ifF' m1 m2
  16. (<:) :: Monad m => m Bool -> m a -> m a -> m a
  17. (<:) = ifM
  18. (<->) :: (a -> b) -> a -> b
  19. (<->) = ($)