[Haskell-cafe] Something that kind of resembles OO

Michael Mossey mpm at alumni.caltech.edu
Fri Jul 9 07:21:06 EDT 2010

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.

More information about the Haskell-Cafe mailing list