module PostgresqlSyntax.Ast.Interval where
import qualified HeadedMegaparsec as Parser
import PostgresqlSyntax.Algebra
import PostgresqlSyntax.Ast.IntervalSecond
import qualified PostgresqlSyntax.Helpers.Parsers as Parsers
import PostgresqlSyntax.Prelude
import qualified Test.QuickCheck as Qc
data Interval
= YearInterval
| MonthInterval
| DayInterval
| HourInterval
| MinuteInterval
| SecondInterval IntervalSecond
| YearToMonthInterval
| DayToHourInterval
| DayToMinuteInterval
| DayToSecondInterval IntervalSecond
| HourToMinuteInterval
| HourToSecondInterval IntervalSecond
| MinuteToSecondInterval IntervalSecond
deriving (Int -> Interval -> ShowS
[Interval] -> ShowS
Interval -> String
(Int -> Interval -> ShowS)
-> (Interval -> String) -> ([Interval] -> ShowS) -> Show Interval
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Interval -> ShowS
showsPrec :: Int -> Interval -> ShowS
$cshow :: Interval -> String
show :: Interval -> String
$cshowList :: [Interval] -> ShowS
showList :: [Interval] -> ShowS
Show, (forall x. Interval -> Rep Interval x)
-> (forall x. Rep Interval x -> Interval) -> Generic Interval
forall x. Rep Interval x -> Interval
forall x. Interval -> Rep Interval x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Interval -> Rep Interval x
from :: forall x. Interval -> Rep Interval x
$cto :: forall x. Rep Interval x -> Interval
to :: forall x. Rep Interval x -> Interval
Generic, Interval -> Interval -> Bool
(Interval -> Interval -> Bool)
-> (Interval -> Interval -> Bool) -> Eq Interval
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Interval -> Interval -> Bool
== :: Interval -> Interval -> Bool
$c/= :: Interval -> Interval -> Bool
/= :: Interval -> Interval -> Bool
Eq, Eq Interval
Eq Interval =>
(Interval -> Interval -> Ordering)
-> (Interval -> Interval -> Bool)
-> (Interval -> Interval -> Bool)
-> (Interval -> Interval -> Bool)
-> (Interval -> Interval -> Bool)
-> (Interval -> Interval -> Interval)
-> (Interval -> Interval -> Interval)
-> Ord Interval
Interval -> Interval -> Bool
Interval -> Interval -> Ordering
Interval -> Interval -> Interval
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Interval -> Interval -> Ordering
compare :: Interval -> Interval -> Ordering
$c< :: Interval -> Interval -> Bool
< :: Interval -> Interval -> Bool
$c<= :: Interval -> Interval -> Bool
<= :: Interval -> Interval -> Bool
$c> :: Interval -> Interval -> Bool
> :: Interval -> Interval -> Bool
$c>= :: Interval -> Interval -> Bool
>= :: Interval -> Interval -> Bool
$cmax :: Interval -> Interval -> Interval
max :: Interval -> Interval -> Interval
$cmin :: Interval -> Interval -> Interval
min :: Interval -> Interval -> Interval
Ord, Typeable Interval
Typeable Interval =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Interval -> c Interval)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Interval)
-> (Interval -> Constr)
-> (Interval -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Interval))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Interval))
-> ((forall b. Data b => b -> b) -> Interval -> Interval)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r)
-> (forall u. (forall d. Data d => d -> u) -> Interval -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> Interval -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval)
-> Data Interval
Interval -> Constr
Interval -> DataType
(forall b. Data b => b -> b) -> Interval -> Interval
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> Interval -> u
forall u. (forall d. Data d => d -> u) -> Interval -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Interval
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Interval -> c Interval
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Interval)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Interval)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Interval -> c Interval
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Interval -> c Interval
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Interval
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Interval
$ctoConstr :: Interval -> Constr
toConstr :: Interval -> Constr
$cdataTypeOf :: Interval -> DataType
dataTypeOf :: Interval -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Interval)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Interval)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Interval)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Interval)
$cgmapT :: (forall b. Data b => b -> b) -> Interval -> Interval
gmapT :: (forall b. Data b => b -> b) -> Interval -> Interval
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Interval -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Interval -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> Interval -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Interval -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Interval -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Interval -> m Interval
Data)
instance IsAst Interval where
toTextBuilder :: Settings -> Interval -> TextBuilder
toTextBuilder Settings
settings = \case
Interval
YearInterval -> TextBuilder
"YEAR"
Interval
MonthInterval -> TextBuilder
"MONTH"
Interval
DayInterval -> TextBuilder
"DAY"
Interval
HourInterval -> TextBuilder
"HOUR"
Interval
MinuteInterval -> TextBuilder
"MINUTE"
SecondInterval IntervalSecond
a -> Settings -> IntervalSecond -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings IntervalSecond
a
Interval
YearToMonthInterval -> TextBuilder
"YEAR TO MONTH"
Interval
DayToHourInterval -> TextBuilder
"DAY TO HOUR"
Interval
DayToMinuteInterval -> TextBuilder
"DAY TO MINUTE"
DayToSecondInterval IntervalSecond
a -> TextBuilder
"DAY TO " TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> Settings -> IntervalSecond -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings IntervalSecond
a
Interval
HourToMinuteInterval -> TextBuilder
"HOUR TO MINUTE"
HourToSecondInterval IntervalSecond
a -> TextBuilder
"HOUR TO " TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> Settings -> IntervalSecond -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings IntervalSecond
a
MinuteToSecondInterval IntervalSecond
a -> TextBuilder
"MINUTE TO " TextBuilder -> TextBuilder -> TextBuilder
forall a. Semigroup a => a -> a -> a
<> Settings -> IntervalSecond -> TextBuilder
forall a. IsAst a => Settings -> a -> TextBuilder
toTextBuilder Settings
settings IntervalSecond
a
parser :: Settings -> Parser Interval
parser Settings
settings =
[Parser Interval] -> Parser Interval
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ Interval
YearToMonthInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"year to month",
Interval
DayToHourInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"day to hour",
Interval
DayToMinuteInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"day to minute",
IntervalSecond -> Interval
DayToSecondInterval (IntervalSecond -> Interval)
-> HeadedParsec Void Text IntervalSecond -> Parser Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"day to" HeadedParsec Void Text Text
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall strm err. Stream strm => HeadedParsec err strm ()
Parser.endHead HeadedParsec Void Text ()
-> HeadedParsec Void Text IntervalSecond
-> HeadedParsec Void Text IntervalSecond
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text IntervalSecond
forall a. IsAst a => Settings -> Parser a
parser Settings
settings),
Interval
HourToMinuteInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"hour to minute",
IntervalSecond -> Interval
HourToSecondInterval (IntervalSecond -> Interval)
-> HeadedParsec Void Text IntervalSecond -> Parser Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"hour to" HeadedParsec Void Text Text
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall strm err. Stream strm => HeadedParsec err strm ()
Parser.endHead HeadedParsec Void Text ()
-> HeadedParsec Void Text IntervalSecond
-> HeadedParsec Void Text IntervalSecond
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text IntervalSecond
forall a. IsAst a => Settings -> Parser a
parser Settings
settings),
IntervalSecond -> Interval
MinuteToSecondInterval (IntervalSecond -> Interval)
-> HeadedParsec Void Text IntervalSecond -> Parser Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Token s ~ Char, Tokens s ~ Text, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyphrase Text
"minute to" HeadedParsec Void Text Text
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall err strm.
(Ord err, Stream strm, Token strm ~ Char) =>
HeadedParsec err strm ()
Parsers.space1 HeadedParsec Void Text ()
-> HeadedParsec Void Text () -> HeadedParsec Void Text ()
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> HeadedParsec Void Text ()
forall strm err. Stream strm => HeadedParsec err strm ()
Parser.endHead HeadedParsec Void Text ()
-> HeadedParsec Void Text IntervalSecond
-> HeadedParsec Void Text IntervalSecond
forall a b.
HeadedParsec Void Text a
-> HeadedParsec Void Text b -> HeadedParsec Void Text b
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> Settings -> HeadedParsec Void Text IntervalSecond
forall a. IsAst a => Settings -> Parser a
parser Settings
settings),
Interval
YearInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"year",
Interval
MonthInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"month",
Interval
DayInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"day",
Interval
HourInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"hour",
Interval
MinuteInterval Interval -> HeadedParsec Void Text Text -> Parser Interval
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"minute",
IntervalSecond -> Interval
SecondInterval (IntervalSecond -> Interval)
-> HeadedParsec Void Text IntervalSecond -> Parser Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Settings -> HeadedParsec Void Text IntervalSecond
forall a. IsAst a => Settings -> Parser a
parser Settings
settings
]
instance Qc.Arbitrary Interval where
shrink :: Interval -> [Interval]
shrink = Interval -> [Interval]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
Qc.genericShrink
arbitrary :: Gen Interval
arbitrary =
[Gen Interval] -> Gen Interval
forall a. HasCallStack => [Gen a] -> Gen a
Qc.oneof
[ Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
YearInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
MonthInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
DayInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
HourInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
MinuteInterval,
IntervalSecond -> Interval
SecondInterval (IntervalSecond -> Interval) -> Gen IntervalSecond -> Gen Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen IntervalSecond
forall a. Arbitrary a => Gen a
Qc.arbitrary,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
YearToMonthInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
DayToHourInterval,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
DayToMinuteInterval,
IntervalSecond -> Interval
DayToSecondInterval (IntervalSecond -> Interval) -> Gen IntervalSecond -> Gen Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen IntervalSecond
forall a. Arbitrary a => Gen a
Qc.arbitrary,
Interval -> Gen Interval
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Interval
HourToMinuteInterval,
IntervalSecond -> Interval
HourToSecondInterval (IntervalSecond -> Interval) -> Gen IntervalSecond -> Gen Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen IntervalSecond
forall a. Arbitrary a => Gen a
Qc.arbitrary,
IntervalSecond -> Interval
MinuteToSecondInterval (IntervalSecond -> Interval) -> Gen IntervalSecond -> Gen Interval
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen IntervalSecond
forall a. Arbitrary a => Gen a
Qc.arbitrary
]