<span style="background-color:rgb(255,255,255)"><div><font color="#222222" face="arial, sans-serif"><span style="white-space:nowrap">As I was using predicates (a -&gt; bool) , it appeared the need for combining them with a boolean operator (bool -&gt; bool -&gt; bool)  in order to get a new predicate</span></font></div>

<div><font color="#222222" face="arial, sans-serif"><span style="white-space:nowrap">combining the previous two. So I wrote my function combinerPred (see code below). While I think this is JUST ok, i&#39;m feeling a monad in the air.</span></font></div>

<div><font color="#222222" face="arial, sans-serif"><span style="white-space:nowrap"> So.. where is the monad?</span></font></div><div><span style="white-space:nowrap;color:rgb(34,34,34);font-family:arial,sans-serif"><br>

</span></div><div><div>combinerPred ::  (a -&gt; Bool)  -&gt; (a -&gt; Bool) -&gt; (Bool -&gt; Bool -&gt; Bool) -&gt;  (a -&gt; Bool)</div><div>combinerPred pred1 pred2 op = \x -&gt; op (pred1 x) (pred2 x)</div></div><div>

<br></div><div><br></div><div>thanks</div><div>Sebastián</div></span>