canadian-income-tax-2023.0: Canadian income tax calculation
Safe HaskellSafe-Inferred
LanguageHaskell2010

Tax.Canada.Shared

Description

Common types and functions shared by multiple Canadian tax forms

Synopsis

Documentation

data TaxIncomeBracket line 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 m, Monoid m) => t -> TaxIncomeBracket (Domain t) -> m #

(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

(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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> TaxIncomeBracket (Domain t) -> m (TaxIncomeBracket f) #

Applicative TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Apply TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

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

liftA3 :: (forall (a :: k). 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 :: k1 -> Type). Functor p => (a -> TaxIncomeBracket q) -> p a -> TaxIncomeBracket (Compose p q) #

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

cotraverse :: Functor m => (forall (a :: k1). 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 :: k -> Type). Traversable f1 => (a -> TaxIncomeBracket f2) -> f1 a -> TaxIncomeBracket (Compose f1 f2) #

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

cotraverseTraversable :: Traversable f1 => (forall (x :: k). 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 :: k). p a -> m) -> TaxIncomeBracket p -> m #

Functor TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Logistic TaxIncomeBracket Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: k1 -> 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 :: k). p a -> m (q a)) -> TaxIncomeBracket p -> m (TaxIncomeBracket q) #

sequence :: forall m (p :: k -> 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 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 m, Monoid m) => t -> MedicalExpenses (Domain t) -> m #

(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

(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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> MedicalExpenses (Domain t) -> m (MedicalExpenses f) #

Applicative MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Apply MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

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

liftA3 :: (forall (a :: k). 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 :: k1 -> Type). Functor p => (a -> MedicalExpenses q) -> p a -> MedicalExpenses (Compose p q) #

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

cotraverse :: Functor m => (forall (a :: k1). 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 :: k -> Type). Traversable f1 => (a -> MedicalExpenses f2) -> f1 a -> MedicalExpenses (Compose f1 f2) #

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

cotraverseTraversable :: Traversable f1 => (forall (x :: k). 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 :: k). p a -> m) -> MedicalExpenses p -> m #

Functor MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Logistic MedicalExpenses Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: k1 -> 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 :: k). p a -> m (q a)) -> MedicalExpenses p -> m (MedicalExpenses q) #

sequence :: forall m (p :: k -> 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 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 m, Monoid m) => t -> BaseCredit (Domain t) -> m #

(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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> BaseCredit (Domain t) -> m (BaseCredit f) #

Applicative BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Apply BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

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

liftA3 :: (forall (a :: k). 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 :: k1 -> Type). Functor p => (a -> BaseCredit q) -> p a -> BaseCredit (Compose p q) #

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

cotraverse :: Functor m => (forall (a :: k1). 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 :: k -> Type). Traversable f1 => (a -> BaseCredit f2) -> f1 a -> BaseCredit (Compose f1 f2) #

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

cotraverseTraversable :: Traversable f1 => (forall (x :: k). 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 :: k). p a -> m) -> BaseCredit p -> m #

Functor BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Logistic BaseCredit Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: k1 -> 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 :: k). p a -> m (q a)) -> BaseCredit p -> m (BaseCredit q) #

sequence :: forall m (p :: k -> 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 Source #

A pair of form fields appearing next to each other at the same line, the right field value always a copy of 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 m, Monoid m) => t -> SubCalculation (Domain t) -> m #

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

Defined in Tax.Canada.Shared

(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 m (f :: Type -> Type). Codomain t ~ Compose m f => t -> SubCalculation (Domain t) -> m (SubCalculation f) #

Applicative SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Apply SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

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

liftA3 :: (forall (a :: k). 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 :: k1 -> Type). Functor p => (a -> SubCalculation q) -> p a -> SubCalculation (Compose p q) #

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

cotraverse :: Functor m => (forall (a :: k1). 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 :: k -> Type). Traversable f1 => (a -> SubCalculation f2) -> f1 a -> SubCalculation (Compose f1 f2) #

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

cotraverseTraversable :: Traversable f1 => (forall (x :: k). 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 :: k). p a -> m) -> SubCalculation p -> m #

Functor SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

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

Logistic SubCalculation Source # 
Instance details

Defined in Tax.Canada.Shared

Methods

deliver :: forall p (q :: k1 -> 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 :: k). p a -> m (q a)) -> SubCalculation p -> m (SubCalculation q) #

sequence :: forall m (p :: k -> 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 #