<div dir="ltr">outStanza | (isMessage) = outMessage<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (isPresence) = outPresence<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (isIQ) = outIQ<br><br>Why such a style doesn&#39;t work, so I must write ugly code like that:<br><br>outStanza a | (isMessage a) = outMessage a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (isPresence a) = outPresence a<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (isIQ a) = outIQ a<br><br>so, guards can&#39;t be useful in point-free function definitions in any way<br></div>