module Main where

 

data SquareType numberType = Num numberType => SquareConstructor numberType

 

class ShapeInterface shape where

      area :: Num numberType => shape->numberType

 

data ShapeType = forall a. ShapeInterface a => ShapeType a

 

instance (Num a) => ShapeInterface (SquareType a) where

    area (SquareConstructor side) = side * side

Awesome! That's the first e-mail I see that looks good in HTML!