module Numeric.Band.Class
(
Band
, pow1pBand
, powBand
) where
import Numeric.Semigroup.Multiplicative
import Numeric.Monoid.Multiplicative
import Numeric.Natural
class Multiplicative r => Band r
pow1pBand :: Whole n => r -> n -> r
pow1pBand r _ = r
powBand :: (Unital r, Whole n) => r -> n -> r
powBand _ 0 = one
powBand r _ = r
instance Band ()
instance Band Bool
instance (Band a, Band b) => Band (a,b)
instance (Band a, Band b, Band c) => Band (a,b,c)
instance (Band a, Band b, Band c, Band d) => Band (a,b,c,d)
instance (Band a, Band b, Band c, Band d, Band e) => Band (a,b,c,d,e)