title: Simplification of `eitherPrism`
body: <p>The <code>Prism'</code> here comes from <code>optics-core</code> not <code>lens</code>. Is there a way to simplify this implementation, or is this as simple as it gets?</p>
  <pre class="lang-hs prettyprint-override"><code>{- | Given two @Prism'@'s whose filepaths are distinct (ie., both @a@ and @b@
   encode to distinct filepaths), return a new @Prism'@ that combines both.
  
   If this distinctness property does not hold between the input @Prism'@'s, then
   the resulting @Prism'@ will not be lawful.
  -}
  eitherPrism :: Prism' FilePath a -&gt; Prism' FilePath b -&gt; Prism' FilePath (Either a b)
  eitherPrism p1 p2 =
    prism'
      ( either
          (review p1)
          (review p2)
      )
      ( \fp -&gt;
          asum
            [ Left &lt;$&gt; preview p1 fp
            , Right &lt;$&gt; preview p2 fp
            ]
      )
  </code></pre>