Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- class Visitor v where
- class Builder v where
- class Category arr => VisitorArrow (arr :: k -> k -> *) (v :: k) where
- class VisitorMonad (m :: k -> *) (v :: k) where
- data MonadFold m v :: k -> *
- monad_visit :: MonadFold m v a -> m v -> m a
- class Unfoldable v where
- unfoldVectorM :: (Monad m, Unfoldable v) => (s -> (a, s)) -> s -> m (v a, s)
- unfoldVector :: Unfoldable v => (s -> (a, s)) -> s -> (v a, s)
- class FunctorBuilder f where
- mapBuilder :: Builder v => Unfold v a -> Unfold (f v) (f a)
- class Builder v => ConstantBuilder v where
- newBuilder :: v -> Unfold v a
- data VArrow a b where
- varrow :: VArrow a b -> a -> b
- transform_visitor :: (Visitor v, Builder v) => Fold v b -> Unfold v a -> a -> b
- data Diff f v w a b = Diff {
- diff_unfolder :: Unfold (f v) a
- diff_folder :: Fold (f w) b
- integral_visitor :: (Visitor (f w), Builder (f v), Functor f) => Diff f v w a b -> (v -> w) -> a -> b
- class Builder v => Unbuilder v b where
- class Visitor v => IdVisitor v where
- class Visitor v => ComposableVisitor v where
- class Builder v => IdBuilder v where
- fix2 :: (a -> b -> b) -> a -> b
- fix3 :: (a -> b -> c -> c) -> a -> b -> c
- bind2 :: (a -> b -> b) -> a -> a -> b
- bind3 :: (a -> b -> b) -> a -> a -> a -> b
- bindn :: (a -> b -> b) -> [a] -> b
- mapDiff :: (i -> w -> b -> b) -> b -> (a -> Maybe (i, v, a)) -> Diff (Map i) v w a b
- mappingBuilder :: Ord i => Unfold (i -> v) (Map i v)
- predicate :: Ord i => i -> Unfold Bool (Set i)
- var :: Ord i => ((Map i v -> v) -> t) -> i -> t
- boolvar :: Ord i => i -> Unfold Bool (Map i Bool)
- intvar :: Ord i => i -> Unfold Int (Map i Int)
- doublevar :: Ord i => i -> Unfold Double (Map i Double)
- integervar :: Ord i => i -> Unfold Integer (Map i Integer)
- setDiff :: (w -> b -> b) -> b -> (a -> Maybe (v, a)) -> Diff Set v w a b
- listDiff :: (b -> Maybe (w, b)) -> a -> (v -> a -> a) -> Diff List w v b a
- listfold :: a -> (v -> a -> a) -> Fold [v] a
- ziplistfold :: Fold [v] ([t] -> [(v, t)])
- arrayDiff :: (a, a) -> (b -> [(a, b)]) -> Diff List v (a, w) b c -> Diff (Array a) [v] w b c
- functionDiff :: [a] -> (a -> w -> c) -> ([c] -> d) -> ((a', a) -> v) -> Diff ((->) a) v w a' d
- 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
- maybeDiff :: (a -> Maybe a) -> b -> Diff f v w a b -> Diff Maybe (f v) (f w) a b
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.
Instances
class Builder v where Source #
Instances
Builder Integer Source # | |
Builder () Source # | |
Builder Bool Source # | |
Builder Char Source # | |
Builder Double Source # | |
Builder Int Source # | |
(Builder a, RealFloat a) => Builder (Complex a) Source # | |
Builder a => Builder (Stream a) Source # | unfold for streams |
Builder (I a) Source # | |
Builder (Prop a) Source # | |
Ord v => Builder (Set v) Source # | |
Builder (IO a) Source # | |
Builder v => Builder (Maybe v) Source # | |
Builder [v] Source # | |
(Builder v, Builder w) => Builder (Either v w) Source # | |
(Builder a, Builder b, Ix a) => Builder (Array a b) Source # | |
Builder (Tree e n) Source # | |
Ord i => Builder (Map i v) Source # | |
(Builder a, Builder b) => Builder (a, b) Source # | |
Builder (b -> v) Source # | |
(Builder a, Builder b, Builder c) => Builder (a, b, c) Source # | |
(Builder a, Builder b, Builder c, Builder d) => Builder (a, b, c, d) Source # | |
(Functor f, Functor g) => Builder ((g :*: f) a) Source # | |
class Category arr => VisitorArrow (arr :: k -> k -> *) (v :: k) where Source #
class VisitorMonad (m :: k -> *) (v :: k) where Source #
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
Instances
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 #
Instances
FunctorBuilder ((->) b) Source # | |
Defined in Math.Tools.Visitor |
class Builder v => ConstantBuilder v where Source #
newBuilder :: v -> Unfold v a Source #
Instances
ConstantBuilder Double Source # | |
Defined in Math.Tools.Visitor | |
(ConstantBuilder a, RealFloat a) => ConstantBuilder (Complex a) Source # | |
Defined in Math.Tools.Visitor | |
(ConstantBuilder a, ConstantBuilder b) => ConstantBuilder (a, b) Source # | |
Defined in Math.Tools.Visitor newBuilder :: (a, b) -> Unfold (a, b) a0 Source # |
Diff | |
|
integral_visitor :: (Visitor (f w), Builder (f v), Functor f) => Diff f v w a b -> (v -> w) -> a -> b Source #
class Visitor v => ComposableVisitor v where Source #
embed :: (v -> b) -> Fold v b Source #
(+.+) :: Visitor b => Fold b c -> Fold v b -> Fold v c Source #
Instances
ComposableVisitor Bool Source # | |
ComposableVisitor Char Source # | |
ComposableVisitor Int Source # | |
ComposableVisitor (I a) Source # | |
ComposableVisitor (Set v) Source # | |
ComposableVisitor v => ComposableVisitor (Maybe v) Source # | |
Visitor v => ComposableVisitor [v] Source # | |
(ComposableVisitor v, ComposableVisitor w) => ComposableVisitor (Either v w) Source # | |
(ComposableVisitor a, ComposableVisitor b) => ComposableVisitor (a, b) Source # | |
(Visitor a, Visitor b, Visitor c) => ComposableVisitor (a, b, c) Source # | |
(Visitor a, Visitor b, Visitor c, Visitor d) => ComposableVisitor (a, b, c, d) 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 #