<div dir="auto">Isn’t the issue here the first orderness of the current roles system in ghc?  In which case what technological issues should be fixed? That we can’t do this because of limitations in the role system and I feel that doing this sortah change would *force* this to be prioritized.  </div><div dir="auto"><br></div><div dir="auto">This limitation is a misfeature, how can we make this get addressed sooner rather than later? Is this somewhere where Eg Haskell foundation or something could help?</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 3, 2021 at 12:15 PM Oleg Grenrus <<a href="mailto:oleg.grenrus@iki.fi">oleg.grenrus@iki.fi</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
  
    
  
  <div>
    <p>I think Mag, regex-applicative etc. examples are all reparable.
      The main culprit is however StateT and a like, as you pointed out.
      It's meaningless to discuss Mag if we cannot even write Functor m
      => Functor (StateT s m).<br>
      <br>
      > Coercible constraints aren't unpacked in data constructors<br>
      <br>
      Aren't they zero-width at run time? That's IMO a bug if that is
      not true.</p></div><div><p><br>
      <br>
      - Oleg<br>
    </p>
    <div>On 3.1.2021 19.08, David Feuer wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="auto">Mag uses the One it does for
        efficiency/compactness. Coercible constraints aren't unpacked in
        data constructors, sadly. If you're looking for more examples of
        slightly-invalid but useful Functors, the first place I'd check
        (beyond the very-Mag-like things in lens that inspired Mag) is
        Roman Cheplyaka's regex-applicative. I don't know if his lifts
        coercions or not (haven't looked in a while) but it does some
        similarly illegitimate things for good reasons.</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Sun, Jan 3, 2021, 12:03 PM
          Oleg Grenrus <<a href="mailto:oleg.grenrus@iki.fi" target="_blank">oleg.grenrus@iki.fi</a>> wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
          <div>
            <p>    Prelude Control.Monad.Trans.State> :i StateT<br>
                  type role StateT nominal representational nominal<br>
              <br>
              Note, `StateT` is nominal in last argument (a). Thus if
              (forall c d. Coercible ...) where a Functor superclass,
              Functor (and thus Monad) wouldn't be definable for StateT.
              That would be... unfortunate.<br>
              <br>
              Until there are "higher roles" Functor cannot be
              Coercible1. It would rule very simple code.<br>
              (OTOH Mag can be repaired,
              <a href="https://oleg.fi/gists/posts/2019-07-31-fmap-coerce-coerce.html#functor-should-be-parametric" rel="noreferrer" target="_blank">https://oleg.fi/gists/posts/2019-07-31-fmap-coerce-coerce.html#functor-should-be-parametric</a>).<br>
            </p>
            <p>- Oleg<br>
              <br>
            </p>
            <div>On 3.1.2021 18.31, Carter Schonwald wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">
                <div>Hey David,</div>
                <div>could you exposit what would go wrong? a concrete
                  proof witness or explanation would help me a lot.
                  other people might benefit too.<br>
                </div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div>for the stateT s Maybe a, perhaps i'm still waking
                  up this AM, so let me try <br>
                </div>
                <div>newtype StateT s m a = StateT {runStateT :: s ->
                  m (a, s)}</div>
                <div><br>
                </div>
                <div>so this should expand to  <br>
                </div>
                <div>'(s -> Maybe (a,s)),'</div>
                <div> but the coerce would be on the 'a' here ... so i'm
                  not seeing the issue?<br>
                </div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div><br>
                </div>
                <div>the latter example seem to boil down to "a free
                  appplicative/functor Gadt" with some extra bits,
                  though i've not worked through to seeing the unsafety
                  <br>
                </div>
                <div>for the latter examples, the definitions are the
                  following : <br>
                </div>
                <div>
                  <pre style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090271" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090272" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090273" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090274" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090275" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#traverseBia" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">traverseBia</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><span style="font-family:monospace">Traversable</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090275" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace">,</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Biapplicative" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Biapplicative</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090274" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-132" style="font-family:monospace"></span><span style="font-family:monospace">            </span><span style="font-family:monospace">=></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090273" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090274" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090272" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090271" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090275" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090273" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090274" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090275" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090272" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090275" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090271" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span></span></span></span></span></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-133" style="font-family:monospace"></span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-traverseBia" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#traverseBia" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">traverseBia</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">inline</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#traverseBiaWith" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">traverseBiaWith</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">traverse</span></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
 --------
<span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#traverseBiaWith" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">traverseBiaWith</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">forall</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090289" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090289" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090288" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090288" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090285" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090285" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090284" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090284" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090287" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090287" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">s</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090286" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090286" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span><span style="font-family:monospace">.</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Biapplicative" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Biapplicative</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090289" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-160" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span style="font-family:monospace">=></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace">forall</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090291" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090291" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090290" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090290" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span></span><span style="font-family:monospace">.</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">Applicative</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090291" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090288" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090291" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090290" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090287" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">s</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090291" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090286" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090290" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-161" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090288" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090289" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090285" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090284" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090287" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">s</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090289" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090286" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090285" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090286" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090284" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-162" style="font-family:monospace"></span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-traverseBiaWith" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#traverseBiaWith" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">traverseBiaWith</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089877" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089877" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">trav</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089876" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089876" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089875" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089875" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">s</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#smash" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">smash</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089876" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089877" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">trav</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#One" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">One</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089875" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">s</span></a></span><span style="font-family:monospace">)
-------
<span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#smash" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">smash</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">forall</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090262" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090262" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090258" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090258" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090261" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090261" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090260" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090260" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090259" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090259" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span></span><span style="font-family:monospace">.</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Biapplicative" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Biapplicative</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090262" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-166" style="font-family:monospace"></span><span style="font-family:monospace">      </span><span style="font-family:monospace">=></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090261" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090262" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090260" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090259" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-167" style="font-family:monospace"></span><span style="font-family:monospace">      </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace">forall</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090264" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090264" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span></span><span style="font-family:monospace">.</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090261" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090264" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090258" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090264" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-168" style="font-family:monospace"></span><span style="font-family:monospace">      </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090262" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090258" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090260" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090258" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090259" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-169" style="font-family:monospace"></span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-smash" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#smash" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">smash</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089872" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089872" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089871" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089871" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">m</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089871" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">m</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089871" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">m</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-170" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span style="font-family:monospace">where</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-171" style="font-family:monospace"></span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">forall</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090249" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090249" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090248" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090248" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">y</span></a></span></span><span style="font-family:monospace">.</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090261" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090260" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090249" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090261" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090259" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">c</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090248" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">y</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090262" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090249" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090248" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">y</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-172" style="font-family:monospace"></span><span style="font-family:monospace">    </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089870" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Pure" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Pure</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089868" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089868" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Pure" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Pure</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089867" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089867" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#bipure" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">bipure</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089868" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089867" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-173" style="font-family:monospace"></span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Map" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Map</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089865" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089865" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089864" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089864" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Map" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Map</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089863" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089863" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">g</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089862" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089862" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">y</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">bimap</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089865" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089863" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">g</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089864" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089862" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">y</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-174" style="font-family:monospace"></span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Ap" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Ap</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089860" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089860" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">fs</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089859" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089859" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">xs</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Ap" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Ap</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089858" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089858" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">gs</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089857" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089857" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ys</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089860" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">fs</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089858" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">gs</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#%3C%3C%2A%3E%3E" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace"><<*>></span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089859" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">xs</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089857" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ys</span></a></span><span style="font-family:monospace">
#if MIN_VERSION_base(4,10,0)
</span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#LiftA2" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">LiftA2</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089855" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089855" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089854" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089854" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">xs</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089853" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089853" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ys</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#LiftA2" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">LiftA2</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089852" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089852" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">g</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089851" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089851" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">zs</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089850" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089850" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ws</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#biliftA2" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">biliftA2</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089855" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">f</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089852" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">g</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089854" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">xs</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089851" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">zs</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089853" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ys</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089850" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">ws</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace">
#endif
</span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#One" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">One</span></a></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089849" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089849" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#One" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">One</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">_</span></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089872" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">p</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089849" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-179" style="font-family:monospace"></span><span style="font-family:monospace">    </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089870" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">go</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">_</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><span style="font-family:monospace">_</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#impossibleError" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">impossibleError</span></a></span><span style="font-family:monospace">

</span></span></span></pre>
                  <pre style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">---- and then the magma is 
<span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-187" style="font-family:monospace"></span><span style="font-family:monospace">-- This is used to reify a traversal for 'traverseBia'. It's a somewhat</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-188" style="font-family:monospace"></span><span style="font-family:monospace">-- bogus 'Functor' and 'Applicative' closely related to 'Magma' from the</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-189" style="font-family:monospace"></span><span style="font-family:monospace">-- @lens@ package. Valid traversals don't use (<$), (<*), or (*>), so</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-190" style="font-family:monospace"></span><span style="font-family:monospace">-- we leave them out. We offer all the rest of the Functor and Applicative</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-191" style="font-family:monospace"></span><span style="font-family:monospace">-- operations to improve performance: we generally want to keep the structure</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-192" style="font-family:monospace"></span><span style="font-family:monospace">-- as small as possible. We might even consider using RULES to widen lifts</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-193" style="font-family:monospace"></span><span style="font-family:monospace">-- when we can:</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-194" style="font-family:monospace"></span><span style="font-family:monospace">--</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-195" style="font-family:monospace"></span><span style="font-family:monospace">--   liftA2 f x y <*> z ==> liftA3 f x y z,</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-196" style="font-family:monospace"></span><span style="font-family:monospace">--</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-197" style="font-family:monospace"></span><span style="font-family:monospace">-- etc., up to the pointer tagging limit. But we do need to be careful. I don't</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-198" style="font-family:monospace"></span><span style="font-family:monospace">-- *think* GHC will ever inline the traversal into the go function (because that</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-199" style="font-family:monospace"></span><span style="font-family:monospace">-- would duplicate work), but if it did, and if different RULES fired for the</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-200" style="font-family:monospace"></span><span style="font-family:monospace">-- two copies, everything would break horribly.</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-201" style="font-family:monospace"></span><span style="font-family:monospace">--</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-202" style="font-family:monospace"></span><span style="font-family:monospace">-- Note: if it's necessary for some reason, we *could* relax GADTs to</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-203" style="font-family:monospace"></span><span style="font-family:monospace">-- ExistentialQuantification by changing the type of One to</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-204" style="font-family:monospace"></span><span style="font-family:monospace">--</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-205" style="font-family:monospace"></span><span style="font-family:monospace">--   One :: (b -> c) -> a -> Mag a b c</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-206" style="font-family:monospace"></span><span style="font-family:monospace">--</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-207" style="font-family:monospace"></span><span style="font-family:monospace">-- where the function will always end up being id. But we allocate a *lot*</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-208" style="font-family:monospace"></span><span style="font-family:monospace">-- of One constructors, so this would definitely be bad for performance.</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-209" style="font-family:monospace"></span><span style="font-family:monospace">data</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-Mag" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089846" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089846" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089845" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089845" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span></span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089844" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089844" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">where</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-210" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090195" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090196" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090197" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-Pure" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Pure" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Pure</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090197" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090196" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090195" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090197" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span></span></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-211" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089843" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090216" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090217" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090218" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-Map" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Map" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Map</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089843" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090218" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090217" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090216" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089843" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">x</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090217" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090216" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090218" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span></span></span></span></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-212" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089839" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089840" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089841" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089842" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-Ap" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Ap" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Ap</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089842" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089841" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089840" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089839" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089842" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089841" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089840" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089842" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089841" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089839" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span></span></span></span></span><span style="font-family:monospace">
#if MIN_VERSION_base(4,10,0)
</span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089837" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089838" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090185" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090186" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090187" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-LiftA2" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#LiftA2" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">LiftA2</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089838" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089837" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090187" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">v</span></a></span><span style="font-family:monospace">)</span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090186" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090185" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089838" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">t</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090186" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090185" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089837" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">u</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090186" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090185" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090187" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">v</span></a></span></span></span></span></span></span><span style="font-family:monospace">
#endif
</span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090255" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679090256" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-One" style="font-family:monospace"><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#One" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">One</span></a></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">::</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090256" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace">-></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090256" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090255" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679090255" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span></span></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-217" style="font-family:monospace"></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-218" style="font-family:monospace"></span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089835" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089836" style="font-family:monospace"><span style="font-family:monospace">instance</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089832" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">Functor</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089836" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089835" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace">)</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">where</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-219" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089830" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">fmap</span></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Map" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Map</span></a></span></span></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-220" style="font-family:monospace"></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-221" style="font-family:monospace"></span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089828" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089829" style="font-family:monospace"><span style="font-family:monospace">instance</span><span style="font-family:monospace"> </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089820" style="font-family:monospace"><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089822" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">Applicative</span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">(</span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Mag" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Mag</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089829" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">a</span></a></span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#local-6989586621679089828" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">b</span></a></span><span style="font-family:monospace">)</span></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">where</span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-222" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089818" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">pure</span></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Pure" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Pure</span></a></span><span style="font-family:monospace">
</span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-line-223" style="font-family:monospace"></span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089817" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">(<*>)</span></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#Ap" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">Ap</span></a></span><span style="font-family:monospace">
#if MIN_VERSION_base(4,10,0)
</span><span style="font-family:monospace">  </span><span id="m_5656353603239817726m_7365306672771404874m_5071564298494191785gmail-local-6989586621679089816" style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">liftA2</span></span></span><span style="font-family:monospace"> </span><span style="font-family:monospace">=</span><span style="font-family:monospace"> </span><span style="font-family:monospace"><a href="https://hackage.haskell.org/package/bifunctors-5.5.9/docs/src/Data.Biapplicative.html#LiftA2" rel="noreferrer" target="_blank" style="font-family:monospace"><span style="font-family:monospace">LiftA2</span></a></span></span></span><span style="font-family:monospace">
#endif
</span><span style="font-family:monospace"></span></span></span></span></pre>
                  <pre style="font-family:monospace"><span style="font-family:monospace"><span style="font-family:monospace">

</span><span style="font-family:monospace"></span></span></pre>
                </div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Sun, Jan 3, 2021 at
                  11:09 AM David Feuer <<a href="mailto:david.feuer@gmail.com" rel="noreferrer" target="_blank">david.feuer@gmail.com</a>>
                  wrote:<br>
                </div>
                <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                  <div dir="auto">You're not being very imaginative at
                    all. Try out, oh, `StateT s Maybe`. Or play around
                    with a nice fake functor like the magma used to
                    implement `traverseBia` in `bifunctors`—pretty sure
                    that won't work out.</div>
                  <br>
                  <div class="gmail_quote">
                    <div dir="ltr" class="gmail_attr">On Sun, Jan 3,
                      2021, 11:00 AM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" rel="noreferrer" target="_blank">carter.schonwald@gmail.com</a>>
                      wrote:<br>
                    </div>
                    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
                      <div dir="ltr">
                        <div>Hey everyone!</div>
                        <div><br>
                        </div>
                        <div>for context, I have some code where I was
                          seeing how far coerce lets me go to avoid
                          doing wrappers for certain codes,</div>
                        <div><br>
                        </div>
                        <div>i found i had to write the following
                          (mapping an operation over to its newtyped
                          sibling)<br>
                        </div>
                        <div><br>
                        </div>
                        <div>```</div>
                        <div>-- > :t QRA.wither</div>
                        <div>--- forall a b f . Applicative f => (a
                          -> f (Maybe b)) -> RAList a -> f
                          (RAList b)</div>
                        <div>---<br>
                        </div>
                        <div>wither :: forall a b f . (Applicative f,
                          (forall c d .  Coercible c d => Coercible
                          (f c) (f d))  ) =><br>
                                  (a -> f (Maybe b)) -> RAList a
                          -> f (RAList b)<br>
                          wither = \f la ->    coerce     $
                          QRA.wither f $ coerce la</div>
                        <div>```</div>
                        <div><br>
                        </div>
                        <div>i'd much rather be able to write <br>
                        </div>
                        <div>```</div>
                        <div>wither :: forall a b f . (Applicative f)
                          =><br>
                                  (a -> f (Maybe b)) -> RAList a
                          -> f (RAList b)<br>
                          wither = \f la ->    coerce     $
                          QRA.wither f $ coerce la</div>
                        <div>```<br>
                        </div>
                        <div><br>
                        </div>
                        <div><br>
                        </div>
                        <div>this seems like it'd be best done via
                          something like changing the functor class
                          definition to <br>
                        </div>
                        <div><br>
                        </div>
                        <div>```<br>
                        </div>
                        <div>class (forall c d .  Coercible c d =>
                          Coercible (f c) (f d))  ) => Functor f
                          where ..<br>
                        </div>
                        <div>```</div>
                        <div><br>
                        </div>
                        <div>is there any specific reason why this is
                          not feasible? I cant think of a GADT where
                          this wouldn't be totally safe to do (because
                          unlike in foldable, f is in both the domain
                          and co-domain), but maybe i'm not being
                          imaginative enough?</div>
                        <div><br>
                        </div>
                        <div>look forward to learning what our obstacles
                          are to making this happen for ghc 9.2 :) <br>
                        </div>
                        <div><br>
                        </div>
                        <div>-Carter<br>
                        </div>
                        <div><br>
                        </div>
                      </div>
                      _______________________________________________<br>
                      Libraries mailing list<br>
                      <a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
                      <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
                    </blockquote>
                  </div>
                </blockquote>
              </div>
              <br>
              <fieldset></fieldset>
              <pre style="font-family:monospace">_______________________________________________
Libraries mailing list
<a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank" style="font-family:monospace">Libraries@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank" style="font-family:monospace">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
            </blockquote>
          </div>
          _______________________________________________<br>
          Libraries mailing list<br>
          <a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">Libraries@haskell.org</a><br>
          <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
        </blockquote>
      </div>
    </blockquote>
  </div>

_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div>