<div dir="ltr">Absolutely!<div><br></div><div><br></div><div>Any record fields not defined for all constructors become partial.</div><div><br></div><div>The correct way would be to have each constructor take a distinct type (if they are indeed distinct). Unfortunately this isn't nearly as succinct, but it is much safer.</div><div><br></div><div><br></div><div> - Lyndon</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 7, 2014 at 8:37 PM, Derek McLoughlin <span dir="ltr"><<a href="mailto:derek.mcloughlin@gmail.com" target="_blank">derek.mcloughlin@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Record types usually have a single constructor. I've even seen blog<br>
posts that suggest that they must have a single constructor. However,<br>
multiple constructors are allowed:<br>
<br>
data Employee = RegularEmployee {<br>
                                  name :: String<br>
                             } |<br>
                             Supervisor {<br>
                                  name :: String,<br>
                                  salesTarget :: Double<br>
                             }<br>
                             Manager {<br>
                                  name :: String,<br>
                                  salesTarget :: Double<br>
                                  budget :: Double<br>
                             }<br>
<br>
I don't see this used much in Haskell code - either in explanatory<br>
books/tutorials or in code I've examined on GitHub. Are there<br>
drawbacks to using multiple constructors in this way?<br>
<br>
Derek.<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/beginners" target="_blank">http://www.haskell.org/mailman/listinfo/beginners</a><br>
</blockquote></div><br></div>