packages feed

integer-types-0.0.0.1: library/Integer/Sign.hs

module Integer.Sign
  (
    {- * Type -} Sign (..),
    {- * Operations -} negate, multiply,
  )
  where

import Essentials

import Prelude (seq)

import qualified Control.DeepSeq as DeepSeq

data Sign = MinusSign | PlusSign
    deriving (Eq, Ord, Show)

instance DeepSeq.NFData Sign where rnf x = seq x ()

negate :: Sign -> Sign
negate PlusSign  = MinusSign
negate MinusSign = PlusSign

multiply :: Sign -> Sign -> Sign
multiply a b = if a == b then PlusSign else MinusSign