module Cardinal where data Cardinal = F | B | L | R | T | D | Sum Cardinal Cardinal | Difference Cardinal Cardinal | Product Cardinal Cardinal | ScalarProduct Double Cardinal deriving (Show, Eq) instance Num Cardinal where x + y = Sum x y x - y = Difference x y x * y = Sum x y negate x = ScalarProduct (-1) x abs x = x signum x = x fromInteger _ = F -- Whatever.