<div style="margin-left:40px">The class you&#39;re looking for is Applicative. The (&lt;*&gt;) operator 
handles application of &quot;effectful&quot; things to &quot;effectful&quot; things, whereas
 (&lt;$&gt;) handles the application of non-&quot;effectful&quot; things to 
&quot;effectful&quot; things. This situation is interesting because it highlights 
the fact that there is a distinction between the meaning of whitespace 
between function and argument vs the meaning of whitespace between 
argument and argument.<br></div>
<br>
<br>`Applicative` is not enough for monads.<br>`Applicative` is like functor only for functions <br>with many arguments. It&#39;s good for patterns:<br><br>(a -&gt; b -&gt; c -&gt; d) -&gt; (m a -&gt; m b -&gt; m c -&gt; m d)<br>
 <br>Monads are good for patterns<br><br>(a -&gt; b -&gt; c -&gt; m d) -&gt; (m a -&gt; m b -&gt; m c -&gt; m d)<br><br>So I can not express it with `Applicative`. My<br>analogy really breaks down on functions with <br>several arguments, since as you have pointed out there are<br>
two white spaces. But I like the idea of using<br>one sign for normal and monadic  and maybe applicative <br>applications.<br><br>Anton<br><br>