canadian-income-tax-2024.0: Canadian income tax calculation
Safe HaskellNone
LanguageHaskell2010

Tax.Canada.Shared

Description

Common types and functions shared by multiple Canadian tax forms

Synopsis

Documentation

data TaxIncomeBracket (line :: Type -> Type) Source #

Constructors

TaxIncomeBracket 

Fields

Instances

Instances details
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t Centi, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Foldable t TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: (Codomain t ~ (Const m0 :: Type -> Type), Monoid m0) => t -> TaxIncomeBracket (Domain t) -> m0

(Transformation t, At t Centi, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Functor t TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: t -> TaxIncomeBracket (Domain t) -> TaxIncomeBracket (Codomain t)

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t Centi, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Traversable t TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> TaxIncomeBracket (Domain t) -> m0 (TaxIncomeBracket f0)

Applicative TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

pure :: (forall a. f a) -> TaxIncomeBracket f

Apply TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). TaxIncomeBracket (p ~> q) -> TaxIncomeBracket p -> TaxIncomeBracket q

liftA2 :: (forall a. p a -> q a -> r a) -> TaxIncomeBracket p -> TaxIncomeBracket q -> TaxIncomeBracket r

liftA3 :: (forall a. p a -> q a -> r a -> s a) -> TaxIncomeBracket p -> TaxIncomeBracket q -> TaxIncomeBracket r -> TaxIncomeBracket s

Distributive TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collect :: forall p a (q :: Type -> Type). Functor p => (a -> TaxIncomeBracket q) -> p a -> TaxIncomeBracket (Compose p q)

distribute :: forall p (q :: Type -> Type). Functor p => p (TaxIncomeBracket q) -> TaxIncomeBracket (Compose p q)

cotraverse :: Functor m => (forall a. m (p a) -> q a) -> m (TaxIncomeBracket p) -> TaxIncomeBracket q

DistributiveTraversable TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collectTraversable :: forall f1 a (f2 :: Type -> Type). Traversable f1 => (a -> TaxIncomeBracket f2) -> f1 a -> TaxIncomeBracket (Compose f1 f2)

distributeTraversable :: forall f1 (f2 :: Type -> Type). Traversable f1 => f1 (TaxIncomeBracket f2) -> TaxIncomeBracket (Compose f1 f2)

cotraverseTraversable :: Traversable f1 => (forall x. f1 (f2 x) -> f x) -> f1 (TaxIncomeBracket f2) -> TaxIncomeBracket f

Foldable TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: Monoid m => (forall a. p a -> m) -> TaxIncomeBracket p -> m

Functor TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: (forall a. p a -> q a) -> TaxIncomeBracket p -> TaxIncomeBracket q

Logistic TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: Type -> Type). Contravariant p => p (TaxIncomeBracket q -> TaxIncomeBracket q) -> TaxIncomeBracket (Compose p (q ~> q))

Traversable TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: Applicative m => (forall a. p a -> m (q a)) -> TaxIncomeBracket p -> m (TaxIncomeBracket q)

sequence :: forall m (p :: Type -> Type). Applicative m => TaxIncomeBracket (Compose m p) -> m (TaxIncomeBracket p)

(Show (line Centi), Show (line Rational)) => Show (TaxIncomeBracket line) Source # 
Instance details

Defined in Tax.Canada.Shared

(Eq (line Centi), Eq (line Rational)) => Eq (TaxIncomeBracket line) Source # 
Instance details

Defined in Tax.Canada.Shared

data MedicalExpenses (line :: Type -> Type) Source #

Constructors

MedicalExpenses 

Fields

Instances

Instances details
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Foldable t MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: (Codomain t ~ (Const m0 :: Type -> Type), Monoid m0) => t -> MedicalExpenses (Domain t) -> m0

(Transformation t, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Functor t MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: t -> MedicalExpenses (Domain t) -> MedicalExpenses (Codomain t)

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t Centi, At t Centi, At t Rational, At t Centi, At t Centi, At t Centi) => Traversable t MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> MedicalExpenses (Domain t) -> m0 (MedicalExpenses f0)

Applicative MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

pure :: (forall a. f a) -> MedicalExpenses f

Apply MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). MedicalExpenses (p ~> q) -> MedicalExpenses p -> MedicalExpenses q

liftA2 :: (forall a. p a -> q a -> r a) -> MedicalExpenses p -> MedicalExpenses q -> MedicalExpenses r

liftA3 :: (forall a. p a -> q a -> r a -> s a) -> MedicalExpenses p -> MedicalExpenses q -> MedicalExpenses r -> MedicalExpenses s

Distributive MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collect :: forall p a (q :: Type -> Type). Functor p => (a -> MedicalExpenses q) -> p a -> MedicalExpenses (Compose p q)

distribute :: forall p (q :: Type -> Type). Functor p => p (MedicalExpenses q) -> MedicalExpenses (Compose p q)

cotraverse :: Functor m => (forall a. m (p a) -> q a) -> m (MedicalExpenses p) -> MedicalExpenses q

DistributiveTraversable MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collectTraversable :: forall f1 a (f2 :: Type -> Type). Traversable f1 => (a -> MedicalExpenses f2) -> f1 a -> MedicalExpenses (Compose f1 f2)

distributeTraversable :: forall f1 (f2 :: Type -> Type). Traversable f1 => f1 (MedicalExpenses f2) -> MedicalExpenses (Compose f1 f2)

cotraverseTraversable :: Traversable f1 => (forall x. f1 (f2 x) -> f x) -> f1 (MedicalExpenses f2) -> MedicalExpenses f

Foldable MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: Monoid m => (forall a. p a -> m) -> MedicalExpenses p -> m

Functor MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: (forall a. p a -> q a) -> MedicalExpenses p -> MedicalExpenses q

Logistic MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: Type -> Type). Contravariant p => p (MedicalExpenses q -> MedicalExpenses q) -> MedicalExpenses (Compose p (q ~> q))

Traversable MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: Applicative m => (forall a. p a -> m (q a)) -> MedicalExpenses p -> m (MedicalExpenses q)

sequence :: forall m (p :: Type -> Type). Applicative m => MedicalExpenses (Compose m p) -> m (MedicalExpenses p)

(Show (line Centi), Show (line Rational)) => Show (MedicalExpenses line) Source # 
Instance details

Defined in Tax.Canada.Shared

(Eq (line Centi), Eq (line Rational)) => Eq (MedicalExpenses line) Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(==) :: MedicalExpenses line -> MedicalExpenses line -> Bool #

(/=) :: MedicalExpenses line -> MedicalExpenses line -> Bool #

data BaseCredit (line :: Type -> Type) Source #

Used in several provincial forms to calculate a fixed amount of tax credit reduced by income.

Constructors

BaseCredit 

Fields

Instances

Instances details
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t Centi, At t Centi, At t Centi, At t Centi) => Foldable t BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: (Codomain t ~ (Const m0 :: Type -> Type), Monoid m0) => t -> BaseCredit (Domain t) -> m0

(Transformation t, At t Centi, At t Centi, At t Centi, At t Centi) => Functor t BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: t -> BaseCredit (Domain t) -> BaseCredit (Codomain t)

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t Centi, At t Centi, At t Centi, At t Centi) => Traversable t BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> BaseCredit (Domain t) -> m0 (BaseCredit f0)

Applicative BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

pure :: (forall a. f a) -> BaseCredit f

Apply BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). BaseCredit (p ~> q) -> BaseCredit p -> BaseCredit q

liftA2 :: (forall a. p a -> q a -> r a) -> BaseCredit p -> BaseCredit q -> BaseCredit r

liftA3 :: (forall a. p a -> q a -> r a -> s a) -> BaseCredit p -> BaseCredit q -> BaseCredit r -> BaseCredit s

Distributive BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collect :: forall p a (q :: Type -> Type). Functor p => (a -> BaseCredit q) -> p a -> BaseCredit (Compose p q)

distribute :: forall p (q :: Type -> Type). Functor p => p (BaseCredit q) -> BaseCredit (Compose p q)

cotraverse :: Functor m => (forall a. m (p a) -> q a) -> m (BaseCredit p) -> BaseCredit q

DistributiveTraversable BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collectTraversable :: forall f1 a (f2 :: Type -> Type). Traversable f1 => (a -> BaseCredit f2) -> f1 a -> BaseCredit (Compose f1 f2)

distributeTraversable :: forall f1 (f2 :: Type -> Type). Traversable f1 => f1 (BaseCredit f2) -> BaseCredit (Compose f1 f2)

cotraverseTraversable :: Traversable f1 => (forall x. f1 (f2 x) -> f x) -> f1 (BaseCredit f2) -> BaseCredit f

Foldable BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: Monoid m => (forall a. p a -> m) -> BaseCredit p -> m

Functor BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: (forall a. p a -> q a) -> BaseCredit p -> BaseCredit q

Logistic BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: Type -> Type). Contravariant p => p (BaseCredit q -> BaseCredit q) -> BaseCredit (Compose p (q ~> q))

Traversable BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: Applicative m => (forall a. p a -> m (q a)) -> BaseCredit p -> m (BaseCredit q)

sequence :: forall m (p :: Type -> Type). Applicative m => BaseCredit (Compose m p) -> m (BaseCredit p)

(Show (line Centi), Show (line Rational)) => Show (BaseCredit line) Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

showsPrec :: Int -> BaseCredit line -> ShowS #

show :: BaseCredit line -> String #

showList :: [BaseCredit line] -> ShowS #

(Eq (line Centi), Eq (line Rational)) => Eq (BaseCredit line) Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(==) :: BaseCredit line -> BaseCredit line -> Bool #

(/=) :: BaseCredit line -> BaseCredit line -> Bool #

data SubCalculation (line :: Type -> Type) Source #

A pair of form fields appearing next to each other at the same line, the right field value always depending only on the left one.

Constructors

SubCalculation 

Fields

Instances

Instances details
(Transformation t, Codomain t ~ (Const m :: Type -> Type), Monoid m, At t Centi, At t Centi) => Foldable t SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: (Codomain t ~ (Const m0 :: Type -> Type), Monoid m0) => t -> SubCalculation (Domain t) -> m0

(Transformation t, At t Centi, At t Centi) => Functor t SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: t -> SubCalculation (Domain t) -> SubCalculation (Codomain t)

(Transformation t, Codomain t ~ Compose m f, Applicative m, At t Centi, At t Centi) => Traversable t SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: forall m0 (f0 :: Type -> Type). Codomain t ~ Compose m0 f0 => t -> SubCalculation (Domain t) -> m0 (SubCalculation f0)

Applicative SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

pure :: (forall a. f a) -> SubCalculation f

Apply SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<*>) :: forall (p :: Type -> Type) (q :: Type -> Type). SubCalculation (p ~> q) -> SubCalculation p -> SubCalculation q

liftA2 :: (forall a. p a -> q a -> r a) -> SubCalculation p -> SubCalculation q -> SubCalculation r

liftA3 :: (forall a. p a -> q a -> r a -> s a) -> SubCalculation p -> SubCalculation q -> SubCalculation r -> SubCalculation s

Distributive SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collect :: forall p a (q :: Type -> Type). Functor p => (a -> SubCalculation q) -> p a -> SubCalculation (Compose p q)

distribute :: forall p (q :: Type -> Type). Functor p => p (SubCalculation q) -> SubCalculation (Compose p q)

cotraverse :: Functor m => (forall a. m (p a) -> q a) -> m (SubCalculation p) -> SubCalculation q

DistributiveTraversable SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

collectTraversable :: forall f1 a (f2 :: Type -> Type). Traversable f1 => (a -> SubCalculation f2) -> f1 a -> SubCalculation (Compose f1 f2)

distributeTraversable :: forall f1 (f2 :: Type -> Type). Traversable f1 => f1 (SubCalculation f2) -> SubCalculation (Compose f1 f2)

cotraverseTraversable :: Traversable f1 => (forall x. f1 (f2 x) -> f x) -> f1 (SubCalculation f2) -> SubCalculation f

Foldable SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

foldMap :: Monoid m => (forall a. p a -> m) -> SubCalculation p -> m

Functor SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(<$>) :: (forall a. p a -> q a) -> SubCalculation p -> SubCalculation q

Logistic SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: Type -> Type). Contravariant p => p (SubCalculation q -> SubCalculation q) -> SubCalculation (Compose p (q ~> q))

Traversable SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

traverse :: Applicative m => (forall a. p a -> m (q a)) -> SubCalculation p -> m (SubCalculation q)

sequence :: forall m (p :: Type -> Type). Applicative m => SubCalculation (Compose m p) -> m (SubCalculation p)

(Show (line Centi), Show (line Rational)) => Show (SubCalculation line) Source # 
Instance details

Defined in Tax.Canada.Shared

(Eq (line Centi), Eq (line Rational)) => Eq (SubCalculation line) Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

(==) :: SubCalculation line -> SubCalculation line -> Bool #

(/=) :: SubCalculation line -> SubCalculation line -> Bool #