AERN-Basics-2011.1: src/Numeric/AERN/Basics/Laws/Utilities.hs
{-|
Module : Numeric.AERN.Basics.Laws.Utilities
Description : utilities for easier definitions of algebraic laws
Copyright : (c) Michal Konecny
License : BSD3
Maintainer : mikkonecny@gmail.com
Stability : experimental
Portability : portable
Utilities for easier definitions of algebraic laws.
-}
module Numeric.AERN.Basics.Laws.Utilities where
import Numeric.AERN.Basics.Effort
type Expr1 t = t -> t
type Expr2 t = t -> t -> t
type Expr3 t = t -> t -> t -> t
type Expr1Eff ei t = ei -> t -> t
type Expr2Eff ei t = ei -> t -> t -> t
type Expr3Eff ei t = ei -> t -> t -> t -> t
type UnaryOp t = t -> t
type Op t = t -> t -> t
type PartOp t = t -> t -> Maybe t
type UnaryOpEff ei t = ei -> t -> t
type OpEff ei t = ei -> t -> t -> t
type PartOpEff ei t = ei -> t -> t -> Maybe t
type Rel t = t -> t -> Bool
type PRel t = t -> t -> Maybe Bool
type PRelEff ei t = ei -> t -> t -> Maybe Bool
type Expr1Op1 t = (Op t) -> Expr1 t
type Expr1Op2 t = (Op t) -> Expr2 t
type Expr1Op3 t = (Op t) -> Expr3 t
type Expr2Op1 t = (Op t) -> (Op t) -> Expr1 t
type Expr2Op2 t = (Op t) -> (Op t) -> Expr2 t
type Expr2Op3 t = (Op t) -> (Op t) -> Expr3 t
type Expr1UnaryOp1Eff ei t = (UnaryOpEff ei t) -> Expr1Eff ei t
type Expr1Op1Eff ei t = (OpEff ei t) -> Expr1Eff ei t
type Expr1Op2Eff ei t = (OpEff ei t) -> Expr2Eff ei t
type Expr1Op3Eff ei t = (OpEff ei t) -> Expr3Eff ei t
type Expr2Op1Eff ei1 ei2 t = (OpEff ei1 t) -> (OpEff ei2 t) -> Expr1Eff (ei1, ei2) t
type Expr2Op2Eff ei1 ei2 t = (OpEff ei1 t) -> (OpEff ei2 t) -> Expr2Eff (ei1, ei2) t
type Expr2Op3Eff ei1 ei2 t = (OpEff ei1 t) -> (OpEff ei2 t) -> Expr3Eff (ei1, ei2) t