module Satyros.QFIDL.Expressible where import GHC.Generics (Generic) import Satyros.QFIDL.Variable (Variable) data Expressible = Singleton Variable Operator Double | Difference Variable Variable Operator Double deriving stock ((forall x. Expressible -> Rep Expressible x) -> (forall x. Rep Expressible x -> Expressible) -> Generic Expressible forall x. Rep Expressible x -> Expressible forall x. Expressible -> Rep Expressible x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Expressible x -> Expressible $cfrom :: forall x. Expressible -> Rep Expressible x Generic, Expressible -> Expressible -> Bool (Expressible -> Expressible -> Bool) -> (Expressible -> Expressible -> Bool) -> Eq Expressible forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Expressible -> Expressible -> Bool $c/= :: Expressible -> Expressible -> Bool == :: Expressible -> Expressible -> Bool $c== :: Expressible -> Expressible -> Bool Eq, Int -> Expressible -> ShowS [Expressible] -> ShowS Expressible -> String (Int -> Expressible -> ShowS) -> (Expressible -> String) -> ([Expressible] -> ShowS) -> Show Expressible forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Expressible] -> ShowS $cshowList :: [Expressible] -> ShowS show :: Expressible -> String $cshow :: Expressible -> String showsPrec :: Int -> Expressible -> ShowS $cshowsPrec :: Int -> Expressible -> ShowS Show) data Operator = (::<?) | (::<=?) | (::>?) | (::>=?) | (::=?) | (::<>?) deriving stock ((forall x. Operator -> Rep Operator x) -> (forall x. Rep Operator x -> Operator) -> Generic Operator forall x. Rep Operator x -> Operator forall x. Operator -> Rep Operator x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Operator x -> Operator $cfrom :: forall x. Operator -> Rep Operator x Generic, Operator -> Operator -> Bool (Operator -> Operator -> Bool) -> (Operator -> Operator -> Bool) -> Eq Operator forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Operator -> Operator -> Bool $c/= :: Operator -> Operator -> Bool == :: Operator -> Operator -> Bool $c== :: Operator -> Operator -> Bool Eq, Int -> Operator -> ShowS [Operator] -> ShowS Operator -> String (Int -> Operator -> ShowS) -> (Operator -> String) -> ([Operator] -> ShowS) -> Show Operator forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Operator] -> ShowS $cshowList :: [Operator] -> ShowS show :: Operator -> String $cshow :: Operator -> String showsPrec :: Int -> Operator -> ShowS $cshowsPrec :: Int -> Operator -> ShowS Show, ReadPrec [Operator] ReadPrec Operator Int -> ReadS Operator ReadS [Operator] (Int -> ReadS Operator) -> ReadS [Operator] -> ReadPrec Operator -> ReadPrec [Operator] -> Read Operator forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [Operator] $creadListPrec :: ReadPrec [Operator] readPrec :: ReadPrec Operator $creadPrec :: ReadPrec Operator readList :: ReadS [Operator] $creadList :: ReadS [Operator] readsPrec :: Int -> ReadS Operator $creadsPrec :: Int -> ReadS Operator Read)