expressions-0.1.9: Expressions and Formulae a la carte

Copyright(C) 2017-18 Jakub Daniel
LicenseBSD-style (see the file LICENSE)
MaintainerJakub Daniel <jakub.daniel@protonmail.com>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.Expression.Sort

Description

 
Synopsis

Documentation

data Sort Source #

A universe of recognized sorts

Constructors

BooleanSort

booleans (true, false)

IntegralSort

integers (..., -1, 0, 1, ...)

ArraySort

arrays indexed by index sort, containing elements of element sort

Fields

Instances
Eq Sort Source # 
Instance details

Defined in Data.Expression.Sort

Methods

(==) :: Sort -> Sort -> Bool #

(/=) :: Sort -> Sort -> Bool #

Show Sort Source # 
Instance details

Defined in Data.Expression.Sort

Methods

showsPrec :: Int -> Sort -> ShowS #

show :: Sort -> String #

showList :: [Sort] -> ShowS #

SDecide Sort => SDecide Sort Source # 
Instance details

Defined in Data.Expression.Sort

Methods

(%~) :: Sing a -> Sing b -> Decision (a :~: b) #

SingKind Sort Source # 
Instance details

Defined in Data.Expression.Sort

Associated Types

type Demote Sort = (r :: *) #

SingI BooleanSort Source # 
Instance details

Defined in Data.Expression.Sort

SingI IntegralSort Source # 
Instance details

Defined in Data.Expression.Sort

IEq1 IfThenElseF Source # 
Instance details

Defined in Data.Expression.IfThenElse

Methods

ieq1 :: IEq a => IfThenElseF a j -> IfThenElseF a j -> Bool Source #

IEq1 ArrayF Source # 
Instance details

Defined in Data.Expression.Array

Methods

ieq1 :: IEq a => ArrayF a j -> ArrayF a j -> Bool Source #

IEq1 ArithmeticF Source # 
Instance details

Defined in Data.Expression.Arithmetic

Methods

ieq1 :: IEq a => ArithmeticF a j -> ArithmeticF a j -> Bool Source #

IEq1 NegationF Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => NegationF a j -> NegationF a j -> Bool Source #

IEq1 DisjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => DisjunctionF a j -> DisjunctionF a j -> Bool Source #

IEq1 ConjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => ConjunctionF a j -> ConjunctionF a j -> Bool Source #

IFoldable IfThenElseF Source # 
Instance details

Defined in Data.Expression.IfThenElse

Methods

ifold :: Monoid m => IfThenElseF (Const m) i' -> Const m i' Source #

IFoldable ArrayF Source # 
Instance details

Defined in Data.Expression.Array

Methods

ifold :: Monoid m => ArrayF (Const m) i' -> Const m i' Source #

IFoldable ArithmeticF Source # 
Instance details

Defined in Data.Expression.Arithmetic

Methods

ifold :: Monoid m => ArithmeticF (Const m) i' -> Const m i' Source #

IFoldable NegationF Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => NegationF (Const m) i' -> Const m i' Source #

IFoldable DisjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => DisjunctionF (Const m) i' -> Const m i' Source #

IFoldable ConjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => ConjunctionF (Const m) i' -> Const m i' Source #

IFunctor IfThenElseF Source # 
Instance details

Defined in Data.Expression.IfThenElse

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). IfThenElseF a i' -> IfThenElseF b i' Source #

index :: IfThenElseF a i' -> Sing i' Source #

IFunctor ArrayF Source # 
Instance details

Defined in Data.Expression.Array

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). ArrayF a i' -> ArrayF b i' Source #

index :: ArrayF a i' -> Sing i' Source #

IFunctor ArithmeticF Source # 
Instance details

Defined in Data.Expression.Arithmetic

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). ArithmeticF a i' -> ArithmeticF b i' Source #

index :: ArithmeticF a i' -> Sing i' Source #

IFunctor NegationF Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). NegationF a i' -> NegationF b i' Source #

index :: NegationF a i' -> Sing i' Source #

IFunctor DisjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). DisjunctionF a i' -> DisjunctionF b i' Source #

index :: DisjunctionF a i' -> Sing i' Source #

IFunctor ConjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). ConjunctionF a i' -> ConjunctionF b i' Source #

index :: ConjunctionF a i' -> Sing i' Source #

ITraversable IfThenElseF Source # 
Instance details

Defined in Data.Expression.IfThenElse

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). IfThenElseF a i' -> f (IfThenElseF b i') Source #

ITraversable ArrayF Source # 
Instance details

Defined in Data.Expression.Array

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). ArrayF a i' -> f (ArrayF b i') Source #

ITraversable ArithmeticF Source # 
Instance details

Defined in Data.Expression.Arithmetic

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). ArithmeticF a i' -> f (ArithmeticF b i') Source #

ITraversable NegationF Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). NegationF a i' -> f (NegationF b i') Source #

ITraversable DisjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). DisjunctionF a i' -> f (DisjunctionF b i') Source #

ITraversable ConjunctionF Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). ConjunctionF a i' -> f (ConjunctionF b i') Source #

IShow IfThenElseF Source # 
Instance details

Defined in Data.Expression.IfThenElse

IShow ArrayF Source # 
Instance details

Defined in Data.Expression.Array

IShow ArithmeticF Source # 
Instance details

Defined in Data.Expression.Arithmetic

IShow NegationF Source # 
Instance details

Defined in Data.Expression

IShow DisjunctionF Source # 
Instance details

Defined in Data.Expression

IShow ConjunctionF Source # 
Instance details

Defined in Data.Expression

IShow (EqualityF :: (k -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression.Equality

IShow (VarF :: (k -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ishow :: VarF (Const String) i -> Const String i Source #

IShow (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

IShow (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

IEq1 (EqualityF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression.Equality

Methods

ieq1 :: IEq a => EqualityF a j -> EqualityF a j -> Bool Source #

IEq1 (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => ExistentialF v a j -> ExistentialF v a j -> Bool Source #

IEq1 (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => UniversalF v a j -> UniversalF v a j -> Bool Source #

IEq1 (VarF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ieq1 :: IEq a => VarF a j -> VarF a j -> Bool Source #

IFoldable (EqualityF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression.Equality

Methods

ifold :: Monoid m => EqualityF (Const m) i' -> Const m i' Source #

IFoldable (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => ExistentialF v (Const m) i' -> Const m i' Source #

IFoldable (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => UniversalF v (Const m) i' -> Const m i' Source #

IFoldable (VarF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

ifold :: Monoid m => VarF (Const m) i' -> Const m i' Source #

IFunctor (EqualityF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression.Equality

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). EqualityF a i' -> EqualityF b i' Source #

index :: EqualityF a i' -> Sing i' Source #

IFunctor (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). ExistentialF v a i' -> ExistentialF v b i' Source #

index :: ExistentialF v a i' -> Sing i' Source #

IFunctor (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). UniversalF v a i' -> UniversalF v b i' Source #

index :: UniversalF v a i' -> Sing i' Source #

IFunctor (VarF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

imap :: (forall (i' :: i). a i' -> b i') -> forall (i' :: i). VarF a i' -> VarF b i' Source #

index :: VarF a i' -> Sing i' Source #

ITraversable (EqualityF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression.Equality

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). EqualityF a i' -> f (EqualityF b i') Source #

ITraversable (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). ExistentialF v a i' -> f (ExistentialF v b i') Source #

ITraversable (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). UniversalF v a i' -> f (UniversalF v b i') Source #

ITraversable (VarF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

Methods

itraverse :: Applicative f => (forall (i' :: i). a i' -> f (b i')) -> forall (i' :: i). VarF a i' -> f (VarF b i') Source #

MaybeQuantified (ExistentialF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

MaybeQuantified (UniversalF v :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

MaybeQuantified (VarF :: (Sort -> *) -> Sort -> *) Source # 
Instance details

Defined in Data.Expression

(SingI n1, SingI n2) => SingI (ArraySort n1 n2 :: Sort) Source # 
Instance details

Defined in Data.Expression.Sort

Methods

sing :: Sing (ArraySort n1 n2) #

JoinSemiLattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

JoinSemiLattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

JoinSemiLattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

JoinSemiLattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

JoinSemiLattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

MeetSemiLattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

MeetSemiLattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

MeetSemiLattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

MeetSemiLattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

MeetSemiLattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

Lattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

Lattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

Lattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

Lattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

Lattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedJoinSemiLattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedJoinSemiLattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedJoinSemiLattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedJoinSemiLattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedJoinSemiLattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedMeetSemiLattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

Methods

top :: ALia BooleanSort #

BoundedMeetSemiLattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedMeetSemiLattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

Methods

top :: Lia BooleanSort #

BoundedMeetSemiLattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedMeetSemiLattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedLattice (ALia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedLattice (QFALia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedLattice (Lia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedLattice (QFLia BooleanSort) # 
Instance details

Defined in Data.Expression

BoundedLattice (QFLogic BooleanSort) # 
Instance details

Defined in Data.Expression

ComplementedLattice (ALia BooleanSort) Source # 
Instance details

Defined in Data.Expression

ComplementedLattice (QFALia BooleanSort) Source # 
Instance details

Defined in Data.Expression

ComplementedLattice (Lia BooleanSort) Source # 
Instance details

Defined in Data.Expression

ComplementedLattice (QFLia BooleanSort) Source # 
Instance details

Defined in Data.Expression

ComplementedLattice (QFLogic BooleanSort) Source # 
Instance details

Defined in Data.Expression

IfThenElseF :<: f => Parseable IfThenElseF f Source # 
Instance details

Defined in Data.Expression.IfThenElse

ArrayF :<: f => Parseable ArrayF f Source # 
Instance details

Defined in Data.Expression.Array

ArithmeticF :<: f => Parseable ArithmeticF f Source # 
Instance details

Defined in Data.Expression.Arithmetic

NegationF :<: f => Parseable NegationF f Source # 
Instance details

Defined in Data.Expression

DisjunctionF :<: f => Parseable DisjunctionF f Source # 
Instance details

Defined in Data.Expression

ConjunctionF :<: f => Parseable ConjunctionF f Source # 
Instance details

Defined in Data.Expression

(EqualityF :: (Sort -> *) -> Sort -> *) :<: f => Parseable (EqualityF :: (k -> *) -> Sort -> *) f Source # 
Instance details

Defined in Data.Expression.Equality

(ExistentialF v :<: f, SingI v) => Parseable (ExistentialF v :: (Sort -> *) -> Sort -> *) f Source # 
Instance details

Defined in Data.Expression

(UniversalF v :<: f, SingI v) => Parseable (UniversalF v :: (Sort -> *) -> Sort -> *) f Source # 
Instance details

Defined in Data.Expression

(VarF :: (Sort -> *) -> Sort -> *) :<: f => Parseable (VarF :: k -> Sort -> *) f Source # 
Instance details

Defined in Data.Expression

data Sing (z :: Sort) Source # 
Instance details

Defined in Data.Expression.Sort

type Demote Sort Source # 
Instance details

Defined in Data.Expression.Sort

data family Sing (a :: k) :: * #

The singleton kind-indexed data family.

Instances
data Sing (z :: Bool) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Bool) where
data Sing (z :: Ordering) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Ordering) where
data Sing (n :: Nat) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Nat) where
data Sing (n :: Symbol) 
Instance details

Defined in Data.Singletons.TypeLits.Internal

data Sing (n :: Symbol) where
data Sing (z :: ()) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: ()) where
data Sing (z :: Void) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Void)
data Sing (z :: Sort) # 
Instance details

Defined in Data.Expression.Sort

data Sing (z :: [a]) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: [a]) where
data Sing (z :: Maybe a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Maybe a) where
data Sing (z :: NonEmpty a) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: NonEmpty a) where
data Sing (z :: Either a b) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: Either a b) where
data Sing (z :: (a, b)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b)) where
data Sing (f :: k1 ~> k2) 
Instance details

Defined in Data.Singletons.Internal

data Sing (f :: k1 ~> k2) = SLambda {}
data Sing (z :: (a, b, c)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c)) where
data Sing (z :: (a, b, c, d)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d)) where
data Sing (z :: (a, b, c, d, e)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e)) where
data Sing (z :: (a, b, c, d, e, f)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e, f)) where
data Sing (z :: (a, b, c, d, e, f, g)) 
Instance details

Defined in Data.Singletons.Prelude.Instances

data Sing (z :: (a, b, c, d, e, f, g)) where

data DynamicSort where Source #

Some sort (obtained for example during parsing)

Constructors

DynamicSort :: forall (s :: Sort). Sing s -> DynamicSort 
Instances
Eq DynamicSort Source # 
Instance details

Defined in Data.Expression.Sort

data DynamicallySorted (f :: (Sort -> *) -> Sort -> *) where Source #

An expression of some sort (obtained for example during parsing)

Constructors

DynamicallySorted :: forall (s :: Sort) f. Sing s -> IFix f s -> DynamicallySorted f 

parseSort :: Parser DynamicSort Source #

Parser that accepts sort definitions such as bool, int, array int int, array int (array ...).

toDynamicallySorted :: forall f (s :: Sort). SingI s => IFix f s -> DynamicallySorted f Source #

Converts a statically sorted expression to a dynamically sorted one.

toStaticSort :: forall (s :: Sort). SingI s => DynamicSort -> Maybe (Sing s) Source #

Tries to convert some sort (DynamicSort) to a requested sort.

toStaticallySorted :: forall f (s :: Sort). SingI s => DynamicallySorted f -> Maybe (IFix f s) Source #

Tries to convert an expression (DynamicallySorted) of some sort to an expression of requested sort. Performs no conversions.