<div dir="ltr">Yeah, I'm starting to think the ADT makes the most sense. With the readLayer call though, how do you know which layer to read? Or are you still stuck with the failing to parse a list of potentials and then taking the one that doesnt fail?<div><br></div><div>Thanks,</div><div><br></div><div><br></div><div>Charlie</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 18, 2016 at 7:45 PM, Sumit Sahrawat, Maths & Computing, IIT (BHU) <span dir="ltr"><<a href="mailto:sumit.sahrawat.apm13@iitbhu.ac.in" target="_blank">sumit.sahrawat.apm13@iitbhu.ac.in</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">You can create a readLayer function that returns something like this:</p>
<p dir="ltr">   <i> data</i><i> OneLayer</i><i> =</i><i> forall</i><i> a. Layer a =></i><i> OneLayer</i><i> a</i></p>
<p dir="ltr">Such that we get:</p>
<p dir="ltr"><i>    -- Read next layer</i><br>
<i>   </i><i> </i><i>readLayer</i><i> :: Handle -> IO</i><i> </i><i>OneLayer</i></p>
<p dir="ltr">Still, I feel that an ADT that combines all types is better as it fits the problem perfectly. Every time you add a new layer it will generate warnings for missing pattern matches.</p>
<p dir="ltr">Regards,<br>
  Sumit</p>
</blockquote></div><br></div>