cifl-math-library-1.1.1.0: Math libraries
Safe HaskellSafe
LanguageHaskell2010

Math.Tools.Visitor

Synopsis

Documentation

class Visitor v where Source #

loosely based on "Gamma et al: Design Patterns" visitor pattern, and also on Haskell foldr function and common variations of it.

Associated Types

data Fold v :: * -> * Source #

Methods

visit :: Fold v a -> v -> a Source #

Instances

Instances details
Visitor BDD Source # 
Instance details

Defined in Math.Tools.BDD

Associated Types

data Fold BDD :: Type -> Type Source #

Methods

visit :: Fold BDD a -> BDD -> a Source #

Visitor Integer Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold Integer :: Type -> Type Source #

Methods

visit :: Fold Integer a -> Integer -> a Source #

Visitor () Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold () :: Type -> Type Source #

Methods

visit :: Fold () a -> () -> a Source #

Visitor Bool Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold Bool :: Type -> Type Source #

Methods

visit :: Fold Bool a -> Bool -> a Source #

Visitor Char Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold Char :: Type -> Type Source #

Methods

visit :: Fold Char a -> Char -> a Source #

Visitor Int Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold Int :: Type -> Type Source #

Methods

visit :: Fold Int a -> Int -> a Source #

Visitor (Vector2 a) Source # 
Instance details

Defined in Math.Matrix.Vector2

Associated Types

data Fold (Vector2 a) :: Type -> Type Source #

Methods

visit :: Fold (Vector2 a) a0 -> Vector2 a -> a0 Source #

Visitor (Vector3 a) Source # 
Instance details

Defined in Math.Matrix.Vector3

Associated Types

data Fold (Vector3 a) :: Type -> Type Source #

Methods

visit :: Fold (Vector3 a) a0 -> Vector3 a -> a0 Source #

Visitor (Vector4 a) Source # 
Instance details

Defined in Math.Matrix.Vector4

Associated Types

data Fold (Vector4 a) :: Type -> Type Source #

Methods

visit :: Fold (Vector4 a) a0 -> Vector4 a -> a0 Source #

Visitor (EnumExpr a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (EnumExpr a) :: Type -> Type Source #

Methods

visit :: Fold (EnumExpr a) a0 -> EnumExpr a -> a0 Source #

Visitor (Var a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (Var a) :: Type -> Type Source #

Methods

visit :: Fold (Var a) a0 -> Var a -> a0 Source #

Visitor (Stream a) Source #

folds over streams

Instance details

Defined in Math.Number.Stream

Associated Types

data Fold (Stream a) :: Type -> Type Source #

Methods

visit :: Fold (Stream a) a0 -> Stream a -> a0 Source #

Visitor (I a) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (I a) :: Type -> Type Source #

Methods

visit :: Fold (I a) a0 -> I a -> a0 Source #

Visitor (LeafTree e) Source # 
Instance details

Defined in Math.Tools.LeafTree

Associated Types

data Fold (LeafTree e) :: Type -> Type Source #

Methods

visit :: Fold (LeafTree e) a -> LeafTree e -> a Source #

Visitor (ParseResult a) Source # 
Instance details

Defined in Math.Tools.ParseMonad

Associated Types

data Fold (ParseResult a) :: Type -> Type Source #

Methods

visit :: Fold (ParseResult a) a0 -> ParseResult a -> a0 Source #

Visitor (Prop a) Source # 
Instance details

Defined in Math.Tools.Prop

Associated Types

data Fold (Prop a) :: Type -> Type Source #

Methods

visit :: Fold (Prop a) a0 -> Prop a -> a0 Source #

Visitor (Queue a) Source # 
Instance details

Defined in Math.Tools.Queue

Associated Types

data Fold (Queue a) :: Type -> Type Source #

Methods

visit :: Fold (Queue a) a0 -> Queue a -> a0 Source #

Visitor (Set v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (Set v) :: Type -> Type Source #

Methods

visit :: Fold (Set v) a -> Set v -> a Source #

Visitor v => Visitor (Maybe v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (Maybe v) :: Type -> Type Source #

Methods

visit :: Fold (Maybe v) a -> Maybe v -> a Source #

Visitor v => Visitor [v] Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold [v] :: Type -> Type Source #

Methods

visit :: Fold [v] a -> [v] -> a Source #

(Visitor v, Visitor w) => Visitor (Either v w) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (Either v w) :: Type -> Type Source #

Methods

visit :: Fold (Either v w) a -> Either v w -> a Source #

(Ix a, Visitor a, Visitor b) => Visitor (Array a b) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (Array a b) :: Type -> Type Source #

Methods

visit :: Fold (Array a b) a0 -> Array a b -> a0 Source #

(Ord a, GraphMonoid m Bool) => Visitor (Graph m a) Source # 
Instance details

Defined in Math.Graph.InGraphMonad

Associated Types

data Fold (Graph m a) :: Type -> Type Source #

Methods

visit :: Fold (Graph m a) a0 -> Graph m a -> a0 Source #

Visitor (FracExpr v a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (FracExpr v a) :: Type -> Type Source #

Methods

visit :: Fold (FracExpr v a) a0 -> FracExpr v a -> a0 Source #

Visitor (NumExpr v a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (NumExpr v a) :: Type -> Type Source #

Methods

visit :: Fold (NumExpr v a) a0 -> NumExpr v a -> a0 Source #

Visitor (VectorSpaceExpr v a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (VectorSpaceExpr v a) :: Type -> Type Source #

Methods

visit :: Fold (VectorSpaceExpr v a) a0 -> VectorSpaceExpr v a -> a0 Source #

Visitor (Tree e n) Source # 
Instance details

Defined in Math.Tools.Tree

Associated Types

data Fold (Tree e n) :: Type -> Type Source #

Methods

visit :: Fold (Tree e n) a -> Tree e n -> a Source #

Visitor (Map i v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (Map i v) :: Type -> Type Source #

Methods

visit :: Fold (Map i v) a -> Map i v -> a Source #

(Visitor a, Visitor b) => Visitor (a, b) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (a, b) :: Type -> Type Source #

Methods

visit :: Fold (a, b) a0 -> (a, b) -> a0 Source #

Visitor (b -> v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (b -> v) :: Type -> Type Source #

Methods

visit :: Fold (b -> v) a -> (b -> v) -> a Source #

Visitor (FloatExpr v a) Source # 
Instance details

Defined in Math.Number.NumericExpression

Associated Types

data Fold (FloatExpr v a) :: Type -> Type Source #

Methods

visit :: Fold (FloatExpr v a) a0 -> FloatExpr v a -> a0 Source #

(Visitor a, Visitor b, Visitor c) => Visitor (a, b, c) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (a, b, c) :: Type -> Type Source #

Methods

visit :: Fold (a, b, c) a0 -> (a, b, c) -> a0 Source #

(Visitor a, Visitor b, Visitor c, Visitor d) => Visitor (a, b, c, d) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Fold (a, b, c, d) :: Type -> Type Source #

Methods

visit :: Fold (a, b, c, d) a0 -> (a, b, c, d) -> a0 Source #

Functor g => Visitor ((g :*: f) a) Source # 
Instance details

Defined in Math.Matrix.Interface

Associated Types

data Fold ((g :*: f) a) :: Type -> Type Source #

Methods

visit :: Fold ((g :*: f) a) a0 -> (g :*: f) a -> a0 Source #

class Builder v where Source #

Associated Types

data Unfold v :: * -> * Source #

Methods

build :: Unfold v a -> a -> v Source #

Instances

Instances details
Builder Integer Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold Integer :: Type -> Type Source #

Methods

build :: Unfold Integer a -> a -> Integer Source #

Builder () Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold () :: Type -> Type Source #

Methods

build :: Unfold () a -> a -> () Source #

Builder Bool Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold Bool :: Type -> Type Source #

Methods

build :: Unfold Bool a -> a -> Bool Source #

Builder Char Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold Char :: Type -> Type Source #

Methods

build :: Unfold Char a -> a -> Char Source #

Builder Double Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold Double :: Type -> Type Source #

Methods

build :: Unfold Double a -> a -> Double Source #

Builder Int Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold Int :: Type -> Type Source #

Methods

build :: Unfold Int a -> a -> Int Source #

(Builder a, RealFloat a) => Builder (Complex a) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Complex a) :: Type -> Type Source #

Methods

build :: Unfold (Complex a) a0 -> a0 -> Complex a Source #

Builder a => Builder (Stream a) Source #

unfold for streams

Instance details

Defined in Math.Number.Stream

Associated Types

data Unfold (Stream a) :: Type -> Type Source #

Methods

build :: Unfold (Stream a) a0 -> a0 -> Stream a Source #

Builder (I a) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (I a) :: Type -> Type Source #

Methods

build :: Unfold (I a) a0 -> a0 -> I a Source #

Builder (Prop a) Source # 
Instance details

Defined in Math.Tools.Prop

Associated Types

data Unfold (Prop a) :: Type -> Type Source #

Methods

build :: Unfold (Prop a) a0 -> a0 -> Prop a Source #

Ord v => Builder (Set v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Set v) :: Type -> Type Source #

Methods

build :: Unfold (Set v) a -> a -> Set v Source #

Builder (IO a) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (IO a) :: Type -> Type Source #

Methods

build :: Unfold (IO a) a0 -> a0 -> IO a Source #

Builder v => Builder (Maybe v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Maybe v) :: Type -> Type Source #

Methods

build :: Unfold (Maybe v) a -> a -> Maybe v Source #

Builder [v] Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold [v] :: Type -> Type Source #

Methods

build :: Unfold [v] a -> a -> [v] Source #

(Builder v, Builder w) => Builder (Either v w) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Either v w) :: Type -> Type Source #

Methods

build :: Unfold (Either v w) a -> a -> Either v w Source #

(Builder a, Builder b, Ix a) => Builder (Array a b) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Array a b) :: Type -> Type Source #

Methods

build :: Unfold (Array a b) a0 -> a0 -> Array a b Source #

Builder (Tree e n) Source # 
Instance details

Defined in Math.Tools.Tree

Associated Types

data Unfold (Tree e n) :: Type -> Type Source #

Methods

build :: Unfold (Tree e n) a -> a -> Tree e n Source #

Ord i => Builder (Map i v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (Map i v) :: Type -> Type Source #

Methods

build :: Unfold (Map i v) a -> a -> Map i v Source #

(Builder a, Builder b) => Builder (a, b) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (a, b) :: Type -> Type Source #

Methods

build :: Unfold (a, b) a0 -> a0 -> (a, b) Source #

Builder (b -> v) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (b -> v) :: Type -> Type Source #

Methods

build :: Unfold (b -> v) a -> a -> b -> v Source #

(Builder a, Builder b, Builder c) => Builder (a, b, c) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (a, b, c) :: Type -> Type Source #

Methods

build :: Unfold (a, b, c) a0 -> a0 -> (a, b, c) Source #

(Builder a, Builder b, Builder c, Builder d) => Builder (a, b, c, d) Source # 
Instance details

Defined in Math.Tools.Visitor

Associated Types

data Unfold (a, b, c, d) :: Type -> Type Source #

Methods

build :: Unfold (a, b, c, d) a0 -> a0 -> (a, b, c, d) Source #

(Functor f, Functor g) => Builder ((g :*: f) a) Source # 
Instance details

Defined in Math.Matrix.Matrix

Associated Types

data Unfold ((g :*: f) a) :: Type -> Type Source #

Methods

build :: Unfold ((g :*: f) a) a0 -> a0 -> (g :*: f) a Source #

class Category arr => VisitorArrow (arr :: k -> k -> *) (v :: k) where Source #

Associated Types

data ArrFold arr v :: k -> * Source #

Methods

arr_visit :: ArrFold arr v a -> arr v a Source #

class VisitorMonad (m :: k -> *) (v :: k) where Source #

Associated Types

data MonadFold m v :: k -> * Source #

Methods

monad_visit :: MonadFold m v a -> m v -> m a Source #

class Unfoldable v where Source #

http://blog.jle.im/entry/fixed-length-vector-types-in-haskell-2015.html | we are allowing return of the state from the operation. | and are using state transformer monad for easier writing | of instance declarations

Methods

unfoldF :: Monad m => StateT s m a -> StateT s m (v a) Source #

Instances

Instances details
Unfoldable Vector3 Source # 
Instance details

Defined in Math.Matrix.Vector3

Methods

unfoldF :: forall (m :: Type -> Type) s a. Monad m => StateT s m a -> StateT s m (Vector3 a) Source #

Unfoldable Vector4 Source # 
Instance details

Defined in Math.Matrix.Vector4

Methods

unfoldF :: forall (m :: Type -> Type) s a. Monad m => StateT s m a -> StateT s m (Vector4 a) Source #

unfoldVectorM :: (Monad m, Unfoldable v) => (s -> (a, s)) -> s -> m (v a, s) Source #

unfoldVector :: Unfoldable v => (s -> (a, s)) -> s -> (v a, s) Source #

class FunctorBuilder f where Source #

Methods

mapBuilder :: Builder v => Unfold v a -> Unfold (f v) (f a) Source #

Instances

Instances details
FunctorBuilder ((->) b) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

mapBuilder :: Builder v => Unfold v a -> Unfold (b -> v) (b -> a) Source #

class Builder v => ConstantBuilder v where Source #

Methods

newBuilder :: v -> Unfold v a Source #

Instances

Instances details
ConstantBuilder Double Source # 
Instance details

Defined in Math.Tools.Visitor

(ConstantBuilder a, RealFloat a) => ConstantBuilder (Complex a) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

newBuilder :: Complex a -> Unfold (Complex a) a0 Source #

(ConstantBuilder a, ConstantBuilder b) => ConstantBuilder (a, b) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

newBuilder :: (a, b) -> Unfold (a, b) a0 Source #

data VArrow a b where Source #

Constructors

VArrowCompose :: VArrow b c -> VArrow a b -> VArrow a c 
VArrowId :: (Visitor a, Builder a) => Fold a b -> Unfold a b -> VArrow a a 

varrow :: VArrow a b -> a -> b Source #

transform_visitor :: (Visitor v, Builder v) => Fold v b -> Unfold v a -> a -> b Source #

data Diff f v w a b Source #

Constructors

Diff 

Fields

integral_visitor :: (Visitor (f w), Builder (f v), Functor f) => Diff f v w a b -> (v -> w) -> a -> b Source #

class Builder v => Unbuilder v b where Source #

Methods

unbuild :: (Unfold v b -> b -> b) -> v -> Unfold v b Source #

class Visitor v => IdVisitor v where Source #

Methods

idFold :: Fold v v Source #

Instances

Instances details
IdVisitor (Vector4 a) Source # 
Instance details

Defined in Math.Matrix.Vector4

Methods

idFold :: Fold (Vector4 a) (Vector4 a) Source #

class Visitor v => ComposableVisitor v where Source #

Minimal complete definition

embed

Methods

embed :: (v -> b) -> Fold v b Source #

(+.+) :: Visitor b => Fold b c -> Fold v b -> Fold v c Source #

Instances

Instances details
ComposableVisitor Bool Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Bool -> b) -> Fold Bool b Source #

(+.+) :: Visitor b => Fold b c -> Fold Bool b -> Fold Bool c Source #

ComposableVisitor Char Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Char -> b) -> Fold Char b Source #

(+.+) :: Visitor b => Fold b c -> Fold Char b -> Fold Char c Source #

ComposableVisitor Int Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Int -> b) -> Fold Int b Source #

(+.+) :: Visitor b => Fold b c -> Fold Int b -> Fold Int c Source #

ComposableVisitor (I a) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (I a -> b) -> Fold (I a) b Source #

(+.+) :: Visitor b => Fold b c -> Fold (I a) b -> Fold (I a) c Source #

ComposableVisitor (Set v) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Set v -> b) -> Fold (Set v) b Source #

(+.+) :: Visitor b => Fold b c -> Fold (Set v) b -> Fold (Set v) c Source #

ComposableVisitor v => ComposableVisitor (Maybe v) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Maybe v -> b) -> Fold (Maybe v) b Source #

(+.+) :: Visitor b => Fold b c -> Fold (Maybe v) b -> Fold (Maybe v) c Source #

Visitor v => ComposableVisitor [v] Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: ([v] -> b) -> Fold [v] b Source #

(+.+) :: Visitor b => Fold b c -> Fold [v] b -> Fold [v] c Source #

(ComposableVisitor v, ComposableVisitor w) => ComposableVisitor (Either v w) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: (Either v w -> b) -> Fold (Either v w) b Source #

(+.+) :: Visitor b => Fold b c -> Fold (Either v w) b -> Fold (Either v w) c Source #

(ComposableVisitor a, ComposableVisitor b) => ComposableVisitor (a, b) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: ((a, b) -> b0) -> Fold (a, b) b0 Source #

(+.+) :: Visitor b0 => Fold b0 c -> Fold (a, b) b0 -> Fold (a, b) c Source #

(Visitor a, Visitor b, Visitor c) => ComposableVisitor (a, b, c) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: ((a, b, c) -> b0) -> Fold (a, b, c) b0 Source #

(+.+) :: Visitor b0 => Fold b0 c0 -> Fold (a, b, c) b0 -> Fold (a, b, c) c0 Source #

(Visitor a, Visitor b, Visitor c, Visitor d) => ComposableVisitor (a, b, c, d) Source # 
Instance details

Defined in Math.Tools.Visitor

Methods

embed :: ((a, b, c, d) -> b0) -> Fold (a, b, c, d) b0 Source #

(+.+) :: Visitor b0 => Fold b0 c0 -> Fold (a, b, c, d) b0 -> Fold (a, b, c, d) c0 Source #

class Builder v => IdBuilder v where Source #

Methods

idUnfold :: Unfold v v Source #

Instances

Instances details
IdBuilder Double Source # 
Instance details

Defined in Math.Tools.Visitor

IdBuilder Int Source # 
Instance details

Defined in Math.Tools.Visitor

IdBuilder (Complex Double) Source # 
Instance details

Defined in Math.Tools.Visitor

fix2 :: (a -> b -> b) -> a -> b Source #

fix3 :: (a -> b -> c -> c) -> a -> b -> c Source #

bind2 :: (a -> b -> b) -> a -> a -> b Source #

bind3 :: (a -> b -> b) -> a -> a -> a -> b Source #

bindn :: (a -> b -> b) -> [a] -> b Source #

mapDiff :: (i -> w -> b -> b) -> b -> (a -> Maybe (i, v, a)) -> Diff (Map i) v w a b Source #

mappingBuilder :: Ord i => Unfold (i -> v) (Map i v) Source #

predicate :: Ord i => i -> Unfold Bool (Set i) Source #

var :: Ord i => ((Map i v -> v) -> t) -> i -> t Source #

boolvar :: Ord i => i -> Unfold Bool (Map i Bool) Source #

intvar :: Ord i => i -> Unfold Int (Map i Int) Source #

setDiff :: (w -> b -> b) -> b -> (a -> Maybe (v, a)) -> Diff Set v w a b Source #

listDiff :: (b -> Maybe (w, b)) -> a -> (v -> a -> a) -> Diff List w v b a Source #

listfold :: a -> (v -> a -> a) -> Fold [v] a Source #

ziplistfold :: Fold [v] ([t] -> [(v, t)]) Source #

arrayDiff :: (a, a) -> (b -> [(a, b)]) -> Diff List v (a, w) b c -> Diff (Array a) [v] w b c Source #

functionDiff :: [a] -> (a -> w -> c) -> ([c] -> d) -> ((a', a) -> v) -> Diff ((->) a) v w a' d Source #

eitherDiff :: (a -> Either a a) -> Diff f v v a b -> Diff f' v' w a b -> Diff (Either (f v)) (f' v') (f' w) a b Source #

maybeDiff :: (a -> Maybe a) -> b -> Diff f v w a b -> Diff Maybe (f v) (f w) a b Source #