@@ -20,10 +20,11 @@
2020{-# LANGUAGE ViewPatterns #-}
2121module Obelisk.Route
2222 ( R
23− , pattern (:/)
2423 , (:.)
25− , pattern (:.)
24+ , (?/)
2625 , hoistR
26+ , pattern (:.)
27+ , pattern (:/)
2728 , PageName
2829 , PathQuery
2930 , Encoder
@@ -194,11 +195,14 @@ import Data.Aeson (FromJSON, ToJSON)
194195
195196type R f = DSum f Identity --TODO: Better name
196197
197−{-# COMPLETE (:/) #-}
198−infixr 5 :/
199198pattern (:/) :: f a -> a -> R f
200199pattern a :/ b = a :=> Identity b
201200
201+-- | Like '(:/)' but adds a 'Just' wrapper around the right-hand side.
202+(?/) :: f (Maybe a) -> a -> R f
203+r ?/ a = r :/ Just a
204+infixr 5 ?/
205+
202206mapSome :: (forall a. f a -> g a) -> Some f -> Some g
203207mapSome f (Some a) = Some $ f a
204208