Is there a generally accepted &quot;better&quot; way of dealing with the following:<div><br></div><div>say I have three functions that all rely on output from each other. Ie, we get raw input, which one function processes. another function then requires the output from this function and produces some other output, which a third function then requires. would it be better to implement the functions like this:</div>

<div><br></div><div>f1 :: a -&gt; b</div><div>f2 :: b -&gt; c</div><div>f3 :: c -&gt; d</div><div>final :: a -&gt; d</div><div><br></div><div>or like this:</div><div><br></div><div>f1 :: a -&gt; b</div><div>f2 :: a -&gt; c</div>

<div>f3 :: a -&gt; d</div><div><br></div><div>Ie, in the latter set, f2 calls f1 on its input, and then proceeds to process it. f3 calls f2 on its input, etc. In the former case, final would just chain all three functions together itself (or I might just do it in main or somewhere else that&#39;s appropriate)</div>

<div><br></div><div>Are one of these methods generally considered a better practice than the other, specifically in a functional context? My gut tells me that the former method looks more appropriate, but I&#39;m not sure if it&#39;d really be the accepted practice regardless of context, or if one might use either of these methods depending on the specifics of what they&#39;re doing. Or if it&#39;s just a matter of taste/opinion?</div>