
9 Jul
2010
9 Jul
'10
7:21 a.m.
I notice in algebraic data defined with named fields, you can use the same name inside different constructors and then apply it to any data of that type. data Vehicle = Car { ident :: String, wheel :: Circle } | Plane { ident :: String, stick :: Line } f :: [Vehicle] -> [String] f = map ident This is a little like fields in a base class. I also see that a wrong use of accessor functions will compile but give a runtime error: test = wheel (Plane "foo" (Line 1)) Will give a runtime error.