arrow-list-0.2.0: src/Control/Arrow/ArrowKleisli.hs
{- |
The `ArrowKleisli' typeclass allows for embedding monadic function in Kleisli
arrows.
-}
{-# LANGUAGE
TypeOperators
, MultiParamTypeClasses
, FlexibleInstances
, FunctionalDependencies
#-}
module Control.Arrow.ArrowKleisli where
import Control.Arrow
class (Monad m, Arrow (~>)) => ArrowKleisli m (~>) | (~>) -> m where
arrM :: (a -> m b) -> a ~> b
instance Monad m => ArrowKleisli m (Kleisli m) where
arrM f = Kleisli f