{-# LANGUAGE GeneralizedNewtypeDeriving , UnicodeSyntax #-} -- |FIXME: doc module Network.HTTP.Lucu.Router ( Router , runRouter ) where import Control.Applicative import Control.Category import Control.Arrow import Control.Arrow.ArrowKleisli import Control.Arrow.List import Data.Maybe import Control.Monad.IO.Class import Prelude.Unicode -- |FIXME: doc newtype Router m α β = Router { unRouter ∷ ListTArrow m α β } deriving ( Arrow , ArrowKleisli m , ArrowZero , ArrowPlus , ArrowChoice , ArrowApply , Category ) -- |FIXME: doc runRouter ∷ (Applicative m, MonadIO m) ⇒ Router m α β → α → m (Maybe β) {-# INLINE runRouter #-} runRouter = ((listToMaybe <$>) ∘) ∘ runListTArrow ∘ unRouter