{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE PolyKinds          #-}
{-# LANGUAGE Safe               #-}
{-# LANGUAGE TypeOperators      #-}

-- | This module provides operators for type-level arithmetic.  To
--   extend this functionality, add new type instances to the underlying
--   type families found in "Data.TypeNums.Arithmetic.Internal".
module Data.TypeNums.Arithmetic
  ( type (+)
  , type (-)
  , type (*)
  ) where

import Data.TypeNums.Arithmetic.Internal

infixl 6 +, -
infixl 7 *

-- | The sum of two type-level numbers
type (+) a b = Add a b

-- | The difference of two type-level numbers
type (-) a b = Sub a b

-- | The product of two type-level numbers
type (*) a b = Mul a b