7 Dec
2001
7 Dec
'01
2:45 a.m.
On Thu, Dec 06, 2001 at 11:19:31AM -0800, Hal Daume III wrote:
2) Any ways to get around it?
Is the following what you want?
data ShapeType = forall t. (Shape t) => ShapeType t instance Shape ShapeType where { area (ShapeType a) = area a }
class Shape a where { area :: a -> Double } data Circle = Circle Double data Rectangle = Rectangle Double Double instance Shape Circle where { area (Circle r) = 2 * pi * r } instance Shape Rectangle where { area (Rectangle l w) = l*w }
myList :: [ShapeType] myList = [ShapeType (Circle 5), ShapeType (Rectangle 2 3)]
and then maybe have a function:
totalArea :: [ShapeType] -> Double totalArea = sum . map area
works OK with ghc -fglasgow-exts Max.