{-# LANGUAGE DeriveGeneric #-}
module Dhall.Syntax.RecordField
( RecordField(..)
, makeRecordField
, recordFieldExprs
) where
import {-# SOURCE #-} Dhall.Syntax.Expr (Expr)
import GHC.Generics (Generic)
data RecordField s a = RecordField
{ forall s a. RecordField s a -> Maybe s
recordFieldSrc0 :: Maybe s
, forall s a. RecordField s a -> Expr s a
recordFieldValue :: Expr s a
, forall s a. RecordField s a -> Maybe s
recordFieldSrc1 :: Maybe s
, forall s a. RecordField s a -> Maybe s
recordFieldSrc2 :: Maybe s
} deriving (forall x. RecordField s a -> Rep (RecordField s a) x)
-> (forall x. Rep (RecordField s a) x -> RecordField s a)
-> Generic (RecordField s a)
forall x. Rep (RecordField s a) x -> RecordField s a
forall x. RecordField s a -> Rep (RecordField s a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (RecordField s a) x -> RecordField s a
forall s a x. RecordField s a -> Rep (RecordField s a) x
$cfrom :: forall s a x. RecordField s a -> Rep (RecordField s a) x
from :: forall x. RecordField s a -> Rep (RecordField s a) x
$cto :: forall s a x. Rep (RecordField s a) x -> RecordField s a
to :: forall x. Rep (RecordField s a) x -> RecordField s a
Generic
makeRecordField :: Expr s a -> RecordField s a
makeRecordField :: forall s a. Expr s a -> RecordField s a
makeRecordField Expr s a
e = Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField Maybe s
forall a. Maybe a
Nothing Expr s a
e Maybe s
forall a. Maybe a
Nothing Maybe s
forall a. Maybe a
Nothing
recordFieldExprs
:: Applicative f
=> (Expr s a -> f (Expr s b))
-> RecordField s a -> f (RecordField s b)
recordFieldExprs :: forall (f :: * -> *) s a b.
Applicative f =>
(Expr s a -> f (Expr s b))
-> RecordField s a -> f (RecordField s b)
recordFieldExprs Expr s a -> f (Expr s b)
f (RecordField Maybe s
s0 Expr s a
e Maybe s
s1 Maybe s
s2) =
Maybe s -> Expr s b -> Maybe s -> Maybe s -> RecordField s b
forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField
(Maybe s -> Expr s b -> Maybe s -> Maybe s -> RecordField s b)
-> f (Maybe s)
-> f (Expr s b -> Maybe s -> Maybe s -> RecordField s b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe s -> f (Maybe s)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s0
f (Expr s b -> Maybe s -> Maybe s -> RecordField s b)
-> f (Expr s b) -> f (Maybe s -> Maybe s -> RecordField s b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr s b)
f Expr s a
e
f (Maybe s -> Maybe s -> RecordField s b)
-> f (Maybe s) -> f (Maybe s -> RecordField s b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe s -> f (Maybe s)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s1
f (Maybe s -> RecordField s b)
-> f (Maybe s) -> f (RecordField s b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe s -> f (Maybe s)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s2
{-# INLINABLE recordFieldExprs #-}