countable-1.0: Countable, Searchable, Finite, Empty classes

Safe HaskellSafe
LanguageHaskell2010

Data.Searchable

Contents

Description

This module also includes these orphan instances:

Synopsis

Documentation

class Searchable a where Source #

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/.

Minimal complete definition

search

Methods

search :: (a -> Maybe b) -> Maybe b Source #

Instances

Searchable Bool Source # 

Methods

search :: (Bool -> Maybe b) -> Maybe b Source #

Searchable Int8 Source # 

Methods

search :: (Int8 -> Maybe b) -> Maybe b Source #

Searchable Int16 Source # 

Methods

search :: (Int16 -> Maybe b) -> Maybe b Source #

Searchable Int32 Source # 

Methods

search :: (Int32 -> Maybe b) -> Maybe b Source #

Searchable Int64 Source # 

Methods

search :: (Int64 -> Maybe b) -> Maybe b Source #

Searchable Word8 Source # 

Methods

search :: (Word8 -> Maybe b) -> Maybe b Source #

Searchable Word16 Source # 

Methods

search :: (Word16 -> Maybe b) -> Maybe b Source #

Searchable Word32 Source # 

Methods

search :: (Word32 -> Maybe b) -> Maybe b Source #

Searchable Word64 Source # 

Methods

search :: (Word64 -> Maybe b) -> Maybe b Source #

Searchable () Source # 

Methods

search :: (() -> Maybe b) -> Maybe b Source #

Searchable None Source # 

Methods

search :: (None -> Maybe b) -> Maybe b Source #

Searchable a => Searchable (Maybe a) Source # 

Methods

search :: (Maybe a -> Maybe b) -> Maybe b Source #

(Countable c, Searchable s) => Searchable (c -> s) Source # 

Methods

search :: ((c -> s) -> Maybe b) -> Maybe b Source #

(Searchable a, Searchable b) => Searchable (Either a b) Source # 

Methods

search :: (Either a b -> Maybe b) -> Maybe b Source #

(Searchable a, Searchable b) => Searchable (a, b) Source # 

Methods

search :: ((a, b) -> Maybe b) -> Maybe b Source #

forsome :: Searchable a => (a -> Bool) -> Bool Source #

forevery :: Searchable a => (a -> Bool) -> Bool Source #

class (Searchable a, Countable a) => Finite a where Source #

Minimal complete definition

allValues

Methods

allValues :: [a] Source #

Not necessarily in counting order.

assemble :: forall b f. Applicative f => (a -> f b) -> f (a -> b) Source #

Instances

Finite Bool Source # 

Methods

allValues :: [Bool] Source #

assemble :: Applicative f => (Bool -> f b) -> f (Bool -> b) Source #

Finite Int8 Source # 

Methods

allValues :: [Int8] Source #

assemble :: Applicative f => (Int8 -> f b) -> f (Int8 -> b) Source #

Finite Int16 Source # 

Methods

allValues :: [Int16] Source #

assemble :: Applicative f => (Int16 -> f b) -> f (Int16 -> b) Source #

Finite Int32 Source # 

Methods

allValues :: [Int32] Source #

assemble :: Applicative f => (Int32 -> f b) -> f (Int32 -> b) Source #

Finite Int64 Source # 

Methods

allValues :: [Int64] Source #

assemble :: Applicative f => (Int64 -> f b) -> f (Int64 -> b) Source #

Finite Word8 Source # 

Methods

allValues :: [Word8] Source #

assemble :: Applicative f => (Word8 -> f b) -> f (Word8 -> b) Source #

Finite Word16 Source # 

Methods

allValues :: [Word16] Source #

assemble :: Applicative f => (Word16 -> f b) -> f (Word16 -> b) Source #

Finite Word32 Source # 

Methods

allValues :: [Word32] Source #

assemble :: Applicative f => (Word32 -> f b) -> f (Word32 -> b) Source #

Finite Word64 Source # 

Methods

allValues :: [Word64] Source #

assemble :: Applicative f => (Word64 -> f b) -> f (Word64 -> b) Source #

Finite () Source # 

Methods

allValues :: [()] Source #

assemble :: Applicative f => (() -> f b) -> f (() -> b) Source #

Finite None Source # 

Methods

allValues :: [None] Source #

assemble :: Applicative f => (None -> f b) -> f (None -> b) Source #

Finite a => Finite (Maybe a) Source # 

Methods

allValues :: [Maybe a] Source #

assemble :: Applicative f => (Maybe a -> f b) -> f (Maybe a -> b) Source #

(Finite a, Finite b) => Finite (a -> b) Source # 

Methods

allValues :: [a -> b] Source #

assemble :: Applicative f => ((a -> b) -> f b) -> f ((a -> b) -> b) Source #

(Finite a, Finite b) => Finite (Either a b) Source # 

Methods

allValues :: [Either a b] Source #

assemble :: Applicative f => (Either a b -> f b) -> f (Either a b -> b) Source #

(Finite a, Finite b) => Finite (a, b) Source # 

Methods

allValues :: [(a, b)] Source #

assemble :: Applicative f => ((a, b) -> f b) -> f ((a, b) -> b) Source #

finiteSearch :: Finite a => (a -> Maybe b) -> Maybe b Source #

Orphan instances

Finite t => Foldable ((->) t) Source # 

Methods

fold :: Monoid m => (t -> m) -> m #

foldMap :: Monoid m => (a -> m) -> (t -> a) -> m #

foldr :: (a -> b -> b) -> b -> (t -> a) -> b #

foldr' :: (a -> b -> b) -> b -> (t -> a) -> b #

foldl :: (b -> a -> b) -> b -> (t -> a) -> b #

foldl' :: (b -> a -> b) -> b -> (t -> a) -> b #

foldr1 :: (a -> a -> a) -> (t -> a) -> a #

foldl1 :: (a -> a -> a) -> (t -> a) -> a #

toList :: (t -> a) -> [a] #

null :: (t -> a) -> Bool #

length :: (t -> a) -> Int #

elem :: Eq a => a -> (t -> a) -> Bool #

maximum :: Ord a => (t -> a) -> a #

minimum :: Ord a => (t -> a) -> a #

sum :: Num a => (t -> a) -> a #

product :: Num a => (t -> a) -> a #

Finite a => Traversable ((->) a) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> (a -> a) -> f (a -> b) #

sequenceA :: Applicative f => (a -> f a) -> f (a -> a) #

mapM :: Monad m => (a -> m b) -> (a -> a) -> m (a -> b) #

sequence :: Monad m => (a -> m a) -> m (a -> a) #

(Searchable a, Eq b) => Eq (a -> b) Source # 

Methods

(==) :: (a -> b) -> (a -> b) -> Bool #

(/=) :: (a -> b) -> (a -> b) -> Bool #

(Show a, Finite a, Show b) => Show (a -> b) Source # 

Methods

showsPrec :: Int -> (a -> b) -> ShowS #

show :: (a -> b) -> String #

showList :: [a -> b] -> ShowS #

(Finite a, AtLeastOneCountable a, InfiniteCountable b) => InfiniteCountable (a -> b) Source # 

Methods

countNext :: Maybe (a -> b) -> a -> b Source #

(Finite a, AtLeastOneCountable b) => AtLeastOneCountable (a -> b) Source # 

Methods

countFirst :: a -> b Source #

(Finite a, Countable b) => Countable (a -> b) Source # 

Methods

countPrevious :: (a -> b) -> Maybe (a -> b) Source #

countMaybeNext :: Maybe (a -> b) -> Maybe (a -> b) Source #