Absolutely!


Any record fields not defined for all constructors become partial.

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.


 - Lyndon

On Sun, Dec 7, 2014 at 8:37 PM, Derek McLoughlin <derek.mcloughlin@gmail.com> wrote:
Hi,

Record types usually have a single constructor. I've even seen blog
posts that suggest that they must have a single constructor. However,
multiple constructors are allowed:

data Employee = RegularEmployee {
                                  name :: String
                             } |
                             Supervisor {
                                  name :: String,
                                  salesTarget :: Double
                             }
                             Manager {
                                  name :: String,
                                  salesTarget :: Double
                                  budget :: Double
                             }

I don't see this used much in Haskell code - either in explanatory
books/tutorials or in code I've examined on GitHub. Are there
drawbacks to using multiple constructors in this way?

Derek.
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners