DRY Kleisli wrappers with lens
I came out with this:

nested :: Request -&gt; Maybe Response
nested = nest [ (prefixed "/name", app1)
              , (prefixed "/surname", app2)
              ]

  where
    nest xs request =
        getAlt $ foldMap (Alt . (\(p,a) -&gt; reroute p a request)) xs

    reroute p app = preview p &gt;=&gt; app


Alt is only available in base-4.8.0.0, however it shouldn't be difficult to implement your own Alt.