-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Countable, Searchable, Finite, Empty classes -- -- -- -- Some orphan instances: -- -- @package countable @version 1.0 module Data.Expression data Expression a g f r ClosedExpression :: (f r) -> Expression a g f r OpenExpression :: a -> (Expression a g f (g r)) -> Expression a g f r expressionSym :: a -> f (g r) -> Expression a g f r runValueExpression :: (Functor f) => Expression a ((->) b) f r -> f ((a -> b) -> r) runMatchExpression :: (Functor f) => Expression a ((,) b) f r -> f ([(a, b)], r) instance (GHC.Base.Functor f, GHC.Base.Functor g) => GHC.Base.Functor (Data.Expression.Expression a g f) instance (GHC.Base.Applicative f, GHC.Base.Functor g) => GHC.Base.Applicative (Data.Expression.Expression a g f) module Data.Countable class (Eq a) => Countable a countPrevious :: Countable a => a -> Maybe a countMaybeNext :: Countable a => Maybe a -> Maybe a countDown :: (Countable a) => a -> [a] boundedCountPrevious :: (Eq a, Bounded a, Enum a) => a -> Maybe a boundedCountMaybeNext :: (Eq a, Bounded a, Enum a) => Maybe a -> Maybe a maybeRecount :: (Countable a, Countable b) => a -> Maybe b countDownUp :: (Countable down, Countable up) => (down, up) -> Maybe (down, up) countUpDown :: (Countable up, Countable down) => (up, down) -> Maybe (up, down) finalIteration :: (a -> Maybe a) -> a -> a class (Countable a) => AtLeastOneCountable a countFirst :: AtLeastOneCountable a => a class (AtLeastOneCountable a) => InfiniteCountable a countNext :: InfiniteCountable a => Maybe a -> a recount :: (Countable a, InfiniteCountable b) => a -> b instance Data.Countable.Countable () instance Data.Countable.Countable GHC.Types.Bool instance Data.Countable.Countable GHC.Word.Word8 instance Data.Countable.Countable GHC.Word.Word16 instance Data.Countable.Countable GHC.Word.Word32 instance Data.Countable.Countable GHC.Word.Word64 instance Data.Countable.Countable GHC.Int.Int8 instance Data.Countable.Countable GHC.Int.Int16 instance Data.Countable.Countable GHC.Int.Int32 instance Data.Countable.Countable GHC.Int.Int64 instance Data.Countable.Countable GHC.Integer.Type.Integer instance Data.Countable.Countable a => Data.Countable.Countable (GHC.Base.Maybe a) instance (Data.Countable.Countable a, Data.Countable.Countable b) => Data.Countable.Countable (Data.Either.Either a b) instance (Data.Countable.Countable a, Data.Countable.Countable b) => Data.Countable.Countable (a, b) instance Data.Countable.AtLeastOneCountable () instance Data.Countable.AtLeastOneCountable GHC.Types.Bool instance Data.Countable.AtLeastOneCountable GHC.Word.Word8 instance Data.Countable.AtLeastOneCountable GHC.Word.Word16 instance Data.Countable.AtLeastOneCountable GHC.Word.Word32 instance Data.Countable.AtLeastOneCountable GHC.Word.Word64 instance Data.Countable.AtLeastOneCountable GHC.Int.Int8 instance Data.Countable.AtLeastOneCountable GHC.Int.Int16 instance Data.Countable.AtLeastOneCountable GHC.Int.Int32 instance Data.Countable.AtLeastOneCountable GHC.Int.Int64 instance Data.Countable.AtLeastOneCountable GHC.Integer.Type.Integer instance Data.Countable.Countable a => Data.Countable.AtLeastOneCountable (GHC.Base.Maybe a) instance (Data.Countable.Countable a, Data.Countable.AtLeastOneCountable b) => Data.Countable.AtLeastOneCountable (Data.Either.Either a b) instance (Data.Countable.AtLeastOneCountable a, Data.Countable.AtLeastOneCountable b) => Data.Countable.AtLeastOneCountable (a, b) instance Data.Countable.InfiniteCountable GHC.Integer.Type.Integer instance Data.Countable.InfiniteCountable a => Data.Countable.InfiniteCountable (GHC.Base.Maybe a) instance (Data.Countable.AtLeastOneCountable a, Data.Countable.InfiniteCountable b) => Data.Countable.InfiniteCountable (a, b) instance (Data.Countable.Countable a, Data.Countable.InfiniteCountable b) => Data.Countable.InfiniteCountable (Data.Either.Either a b) instance Data.Countable.Countable a => Data.Countable.Countable [a] instance Data.Countable.Countable a => Data.Countable.AtLeastOneCountable [a] instance Data.Countable.AtLeastOneCountable a => Data.Countable.InfiniteCountable [a] -- | This module also includes these orphan instances: -- -- module Data.Searchable -- | It turns out there are Searchable instances that are not -- Finite. The (c -> s) instance is based on the -- algorithm at -- http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/. class Searchable a search :: Searchable a => (a -> Maybe b) -> Maybe b forsome :: (Searchable a) => (a -> Bool) -> Bool forevery :: (Searchable a) => (a -> Bool) -> Bool class (Searchable a, Countable a) => Finite a where assemble afb = fmap listLookup (traverse (\ a -> fmap (\ b -> (a, b)) (afb a)) allValues) where listLookup [] _ = error "missing value" listLookup ((a, b) : _) a' | a == a' = b listLookup (_ : l) a' = listLookup l a' -- | Not necessarily in counting order. allValues :: Finite a => [a] assemble :: forall b f. (Finite a, Applicative f) => (a -> f b) -> f (a -> b) finiteSearch :: (Finite a) => (a -> Maybe b) -> Maybe b finiteCountPrevious :: (Finite a) => a -> Maybe a finiteCountMaybeNext :: (Finite a) => Maybe a -> Maybe a instance Data.Searchable.Searchable a => Data.Searchable.Searchable (GHC.Base.Maybe a) instance (Data.Searchable.Searchable a, Data.Searchable.Searchable b) => Data.Searchable.Searchable (Data.Either.Either a b) instance (Data.Searchable.Searchable a, Data.Searchable.Searchable b) => Data.Searchable.Searchable (a, b) instance (Data.Countable.Countable c, Data.Searchable.Searchable s) => Data.Searchable.Searchable (c -> s) instance (Data.Searchable.Searchable a, GHC.Classes.Eq b) => GHC.Classes.Eq (a -> b) instance Data.Searchable.Finite t => Data.Foldable.Foldable ((->) t) instance Data.Searchable.Finite a => Data.Traversable.Traversable ((->) a) instance Data.Searchable.Searchable () instance Data.Searchable.Finite () instance Data.Searchable.Searchable GHC.Types.Bool instance Data.Searchable.Finite GHC.Types.Bool instance Data.Searchable.Searchable GHC.Word.Word8 instance Data.Searchable.Finite GHC.Word.Word8 instance Data.Searchable.Searchable GHC.Word.Word16 instance Data.Searchable.Finite GHC.Word.Word16 instance Data.Searchable.Searchable GHC.Word.Word32 instance Data.Searchable.Finite GHC.Word.Word32 instance Data.Searchable.Searchable GHC.Word.Word64 instance Data.Searchable.Finite GHC.Word.Word64 instance Data.Searchable.Searchable GHC.Int.Int8 instance Data.Searchable.Finite GHC.Int.Int8 instance Data.Searchable.Searchable GHC.Int.Int16 instance Data.Searchable.Finite GHC.Int.Int16 instance Data.Searchable.Searchable GHC.Int.Int32 instance Data.Searchable.Finite GHC.Int.Int32 instance Data.Searchable.Searchable GHC.Int.Int64 instance Data.Searchable.Finite GHC.Int.Int64 instance Data.Searchable.Finite a => Data.Searchable.Finite (GHC.Base.Maybe a) instance (Data.Searchable.Finite a, Data.Searchable.Finite b) => Data.Searchable.Finite (Data.Either.Either a b) instance (Data.Searchable.Finite a, Data.Searchable.Finite b) => Data.Searchable.Finite (a, b) instance (Data.Searchable.Finite a, Data.Countable.Countable b) => Data.Countable.Countable (a -> b) instance (Data.Searchable.Finite a, Data.Countable.AtLeastOneCountable b) => Data.Countable.AtLeastOneCountable (a -> b) instance (Data.Searchable.Finite a, Data.Countable.AtLeastOneCountable a, Data.Countable.InfiniteCountable b) => Data.Countable.InfiniteCountable (a -> b) instance (Data.Searchable.Finite a, Data.Searchable.Finite b) => Data.Searchable.Finite (a -> b) instance (GHC.Show.Show a, Data.Searchable.Finite a, GHC.Show.Show b) => GHC.Show.Show (a -> b) module Data.Empty class (Finite n) => Empty n never :: Empty n => n -> a data None instance (Data.Empty.Empty a, Data.Empty.Empty b) => Data.Empty.Empty (Data.Either.Either a b) instance (Data.Empty.Empty a, Data.Searchable.Finite b) => Data.Empty.Empty (a, b) instance (Data.Countable.AtLeastOneCountable a, Data.Searchable.Finite a, Data.Empty.Empty b) => Data.Empty.Empty (a -> b) instance Data.Countable.Countable Data.Empty.None instance Data.Searchable.Searchable Data.Empty.None instance Data.Searchable.Finite Data.Empty.None instance Data.Empty.Empty Data.Empty.None instance GHC.Classes.Eq Data.Empty.None instance GHC.Classes.Ord Data.Empty.None instance GHC.Show.Show Data.Empty.None