-- |FIXME: docs
class Dispatchable α where
- findResource ∷ α
- → CI Text
- → [ByteString]
- → IO (Maybe ([ByteString], ResourceDef))
+ dispatch ∷ α
+ → CI Text
+ → [ByteString]
+ → IO (Maybe ([ByteString], ResourceDef))
dispatcher ∷ α → Dispatcher
{-# INLINE dispatcher #-}
data Dispatcher = ∀α. Dispatchable α ⇒ Dispatcher α
instance Dispatchable Dispatcher where
- findResource (Dispatcher α) = findResource α
+ dispatch (Dispatcher α) = dispatch α
dispatcher = id
-- |FIXME: doc
instance Monoid Dispatcher where
{-# INLINE mempty #-}
- mempty = dispatcher f
- where
- f ∷ CI Text → [ByteString] → IO (Maybe ([ByteString], ResourceDef))
- f _ _ = return Nothing
+ mempty = dispatcher (return Nothing ∷ IO (Maybe ResourceDef))
{-# INLINEABLE mappend #-}
mappend (Dispatcher α) (Dispatcher β)
= dispatcher
- $ \host path → do r ← findResource α host path
+ $ \host path → do r ← dispatch α host path
case r of
Just _ → return r
- Nothing → findResource β host path
+ Nothing → dispatch β host path
instance Dispatchable (CI Text
→ [ByteString]
→ IO (Maybe ([ByteString], ResourceDef))) where
- findResource = id
+ dispatch = id
-instance Dispatchable (CI Text
- → [ByteString]
- → Maybe ([ByteString], ResourceDef)) where
- findResource = ((return ∘) ∘)
-
-instance Dispatchable (CI Text
- → [ByteString]
- → IO (Maybe ResourceDef)) where
- findResource = ((((<$>) ∘ (<$>)) ((,) []) ∘) ∘)
-
-instance Dispatchable (CI Text
- → [ByteString]
- → Maybe ResourceDef) where
- findResource = (((return ∘ ((,) [] <$>)) ∘) ∘)
-
-instance Dispatchable ([ByteString]
- → IO (Maybe ([ByteString], ResourceDef))) where
- findResource = const
-
-instance Dispatchable ([ByteString]
- → Maybe ([ByteString], ResourceDef)) where
- findResource = const ∘ (return ∘)
-
-instance Dispatchable ([ByteString]
- → IO (Maybe ResourceDef)) where
- findResource = const ∘ (((<$>) ∘ (<$>)) ((,) []) ∘)
+instance Dispatchable (CI Text → [ByteString] → IO (Maybe ResourceDef)) where
+ dispatch = ((((<$>) ∘ (<$>)) ((,) []) ∘) ∘)
-instance Dispatchable ([ByteString]
- → Maybe ResourceDef) where
- findResource = const ∘ ((return ∘ ((,) [] <$>)) ∘)
+instance Dispatchable (CI Text → [ByteString] → Maybe ResourceDef) where
+ dispatch = (((return ∘ ((,) [] <$>)) ∘) ∘)
-instance Dispatchable (IO (Maybe ([ByteString], ResourceDef))) where
- findResource = const ∘ const
+instance Dispatchable ([ByteString] → IO (Maybe ResourceDef)) where
+ dispatch = const ∘ (((<$>) ∘ (<$>)) ((,) []) ∘)
-instance Dispatchable ([ByteString], ResourceDef) where
- findResource = const ∘ const ∘ return ∘ Just
+instance Dispatchable ([ByteString] → Maybe ResourceDef) where
+ dispatch = const ∘ ((return ∘ ((,) [] <$>)) ∘)
instance Dispatchable (IO (Maybe ResourceDef)) where
- findResource = const ∘ const ∘ ((<$>) ∘ (<$>)) ((,) [])
+ dispatch = const ∘ const ∘ ((<$>) ∘ (<$>)) ((,) [])
instance Dispatchable ResourceDef where
- findResource = const ∘ const ∘ return ∘ Just ∘ (,) []
+ dispatch = const ∘ const ∘ return ∘ Just ∘ (,) []