[Haskell-beginners] Algebraic types, shared parameters, pattern matching

Christopher Howard christopher.howard at frigidcode.com
Thu Nov 1 03:36:54 CET 2012

I noticed that with algebraic types I can do something like so:

data Projectile = Bullet { range :: Double }
                  | Missile { range :: Double }
                  | Torpedo { range :: Double }

f p = let r = range p in


(This is interesting in and of itself, as I don't in this case have to
do pattern matching for each constructor. Also, apparently not all the
constructors actually need to have a "range" selector for the program to

However, what if I wanted to make the same function f (again, without
multiple lines of pattern matching) but using a "simpler" data type like so:

type Range = Double

data Projectile = Bullet Range | Missile Range | Torpedo Range

My first try was

f (_ r) = ...

But that doesn't work.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 551 bytes
Desc: OpenPGP digital signature
URL: <http://www.haskell.org/pipermail/beginners/attachments/20121031/ea6fcfc6/attachment.pgp>

More information about the Beginners mailing list