<div dir="ltr">Exactly! I'd be disappointed to see (.:) get enshrined in the base when it's such a special case: just one functor ((->) a), just one class (Functor), and just two levels deep. Once people learn the general patterns, they're easy to read & write and *much* more general & flexible. SeeĀ <a href="http://conal.net/blog/posts/semantic-editor-combinators">http://conal.net/blog/posts/semantic-editor-combinators</a> and the lens libraries.<div><br></div><div>-- Conal</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 17, 2016 at 2:14 PM, Tony Morris <span dir="ltr"><<a href="mailto:tonymorris@gmail.com" target="_blank">tonymorris@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <p>You'd generalise it to:</p>
    <p>fmap . fmap :: (Functor f, Functor g) => (a -> b) -> f
      (g a) -> f (g b)</p>
    <p>And then, would you do the same for Traversable, Foldable and
      Applicative?</p><div><div class="h5">
    <br>
    <div>On 18/08/16 03:43, Alex Belanger wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      <div dir="ltr">Hi,
        <div><br>
        </div>
        <div>Some of you might be familiar with (.:) = (.) . (.).</div>
        <div><br>
        </div>
        <div>It has type :: (c -> d) -> (a -> b -> c) ->
          a -> b -> d</div>
        <div><br>
        </div>
        <div>It allows the composition of two functions, the first one,
          accepting one operand, and the second, two operands.</div>
        <div><br>
        </div>
        <div>This appears to be a very common pattern, referenced a bit
          everywhere, almost always defined on lambdabot and found in
          multiple codebases in the wild.</div>
        <div><br>
        </div>
        <div>I'd like the know the general sentiment about this
          operator, as well as how its inclusion in base, probably
          Data.Function, would be perceived before I actually try to
          make it happen.</div>
        <div><br>
        </div>
        <div>Cheers,</div>
        <div>Alex (nitrix).</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>______________________________<wbr>_________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a>
Only members subscribed via the mailman list are allowed to post.</pre>
    </blockquote>
    <br>
  </div>

<br>______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.<br></blockquote></div><br></div></div>