greskell-1.2.0.1: Haskell binding for Gremlin graph query language
MaintainerToshio Ito <debug.ito@gmail.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Greskell.Logic

Description

Developer note: This module defines Logic, a data structure for logic operation tree. There are already similar packages to this module, but, none of them satisfy our requirements.

Boolean/logic tree data structures

Typeclasses about boolean/logic operations

Trees that contain heterogeneous values

Since: 1.2.0.0

Synopsis

Documentation

data Logic a Source #

A general-purpose logic tree structure. Only the leaf nodes have values of type a. The tree is lazy both in value and spine (structure).

Constructors

Leaf a

Leaf node with value

And (Logic a) [Logic a]

"and" logic operator

Or (Logic a) [Logic a]

"or" logic operator

Not (Logic a)

"not" logic operator

Instances

Instances details
Monad Logic Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

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

(>>) :: Logic a -> Logic b -> Logic b #

return :: a -> Logic a #

Functor Logic Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

fmap :: (a -> b) -> Logic a -> Logic b #

(<$) :: a -> Logic b -> Logic a #

Applicative Logic Source #

pure is Leaf. fl <*> rl appends the rl to the leaves of fl.

Instance details

Defined in Data.Greskell.Logic

Methods

pure :: a -> Logic a #

(<*>) :: Logic (a -> b) -> Logic a -> Logic b #

liftA2 :: (a -> b -> c) -> Logic a -> Logic b -> Logic c #

(*>) :: Logic a -> Logic b -> Logic b #

(<*) :: Logic a -> Logic b -> Logic a #

Foldable Logic Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

fold :: Monoid m => Logic m -> m #

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

foldMap' :: Monoid m => (a -> m) -> Logic a -> m #

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

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

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

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

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

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

toList :: Logic a -> [a] #

null :: Logic a -> Bool #

length :: Logic a -> Int #

elem :: Eq a => a -> Logic a -> Bool #

maximum :: Ord a => Logic a -> a #

minimum :: Ord a => Logic a -> a #

sum :: Num a => Logic a -> a #

product :: Num a => Logic a -> a #

Traversable Logic Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

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

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

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

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

Eq a => Eq (Logic a) Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

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

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

Ord a => Ord (Logic a) Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

compare :: Logic a -> Logic a -> Ordering #

(<) :: Logic a -> Logic a -> Bool #

(<=) :: Logic a -> Logic a -> Bool #

(>) :: Logic a -> Logic a -> Bool #

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

max :: Logic a -> Logic a -> Logic a #

min :: Logic a -> Logic a -> Logic a #

Show a => Show (Logic a) Source # 
Instance details

Defined in Data.Greskell.Logic

Methods

showsPrec :: Int -> Logic a -> ShowS #

show :: Logic a -> String #

showList :: [Logic a] -> ShowS #

Generic (Logic a) Source # 
Instance details

Defined in Data.Greskell.Logic

Associated Types

type Rep (Logic a) :: Type -> Type #

Methods

from :: Logic a -> Rep (Logic a) x #

to :: Rep (Logic a) x -> Logic a #

type Rep (Logic a) Source # 
Instance details

Defined in Data.Greskell.Logic

runBool :: Logic Bool -> Bool Source #

Run the logic tree of Bool values to get the result.