{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UnicodeSyntax #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Dhall.Syntax (
Const(..)
, Var(..)
, Binding(..)
, makeBinding
, CharacterSet(..)
, Chunks(..)
, DhallDouble(..)
, PreferAnnotation(..)
, Expr(..)
, RecordField(..)
, makeRecordField
, FunctionBinding(..)
, makeFunctionBinding
, FieldSelection(..)
, makeFieldSelection
, WithComponent(..)
, MultiLet(..)
, multiLet
, wrapInLets
, subExpressions
, subExpressionsWith
, unsafeSubExpressions
, chunkExprs
, bindingExprs
, recordFieldExprs
, functionBindingExprs
, denote
, renote
, shallowDenote
, Directory(..)
, File(..)
, FilePrefix(..)
, Import(..)
, ImportHashed(..)
, ImportMode(..)
, ImportType(..)
, URL(..)
, Scheme(..)
, pathCharacter
, reservedIdentifiers
, reservedKeywords
, toDoubleQuoted
, longestSharedWhitespacePrefix
, linesLiteral
, unlinesLiteral
, internalError
, shift
) where
import Control.DeepSeq (NFData)
import Data.Bifunctor (Bifunctor (..))
import Data.Bits (xor)
import Data.Data (Data)
import Data.Foldable
import Data.HashSet (HashSet)
import Data.List.NonEmpty (NonEmpty (..))
import Data.Sequence (Seq)
import Data.String (IsString (..))
import Data.Text (Text)
import Data.Traversable ()
import Data.Void (Void)
import Dhall.Map (Map)
import {-# SOURCE #-} Dhall.Pretty.Internal
import Dhall.Src (Src (..))
import GHC.Generics (Generic)
import Instances.TH.Lift ()
import Language.Haskell.TH.Syntax (Lift)
import Numeric.Natural (Natural)
import Prettyprinter (Doc, Pretty)
import Unsafe.Coerce (unsafeCoerce)
import qualified Control.Monad
import qualified Data.Fixed as Fixed
import qualified Data.HashSet
import qualified Data.List.NonEmpty as NonEmpty
import qualified Data.Text
import qualified Data.Time as Time
import qualified Dhall.Crypto
import qualified Lens.Family as Lens
import qualified Network.URI as URI
import qualified Prettyprinter as Pretty
deriving instance Lift Time.Day
deriving instance Lift Time.TimeOfDay
deriving instance Lift Time.TimeZone
deriving instance Lift (Fixed.Fixed a)
data Const = Type | Kind | Sort
deriving (Int -> Const -> ShowS
[Const] -> ShowS
Const -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Const] -> ShowS
$cshowList :: [Const] -> ShowS
show :: Const -> String
$cshow :: Const -> String
showsPrec :: Int -> Const -> ShowS
$cshowsPrec :: Int -> Const -> ShowS
Show, Const -> Const -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Const -> Const -> Bool
$c/= :: Const -> Const -> Bool
== :: Const -> Const -> Bool
$c== :: Const -> Const -> Bool
Eq, Eq Const
Const -> Const -> Bool
Const -> Const -> Ordering
Const -> Const -> Const
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
min :: Const -> Const -> Const
$cmin :: Const -> Const -> Const
max :: Const -> Const -> Const
$cmax :: Const -> Const -> Const
>= :: Const -> Const -> Bool
$c>= :: Const -> Const -> Bool
> :: Const -> Const -> Bool
$c> :: Const -> Const -> Bool
<= :: Const -> Const -> Bool
$c<= :: Const -> Const -> Bool
< :: Const -> Const -> Bool
$c< :: Const -> Const -> Bool
compare :: Const -> Const -> Ordering
$ccompare :: Const -> Const -> Ordering
Ord, Typeable Const
Const -> Constr
Const -> DataType
(forall b. Data b => b -> b) -> Const -> Const
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) -> Const -> u
forall u. (forall d. Data d => d -> u) -> Const -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Const -> m Const
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Const -> m Const
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Const
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Const -> c Const
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Const)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Const)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Const -> m Const
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Const -> m Const
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Const -> m Const
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Const -> m Const
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Const -> m Const
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Const -> m Const
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Const -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Const -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Const -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Const -> [u]
gmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
gmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const -> r
gmapT :: (forall b. Data b => b -> b) -> Const -> Const
$cgmapT :: (forall b. Data b => b -> b) -> Const -> Const
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Const)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Const)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Const)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Const)
dataTypeOf :: Const -> DataType
$cdataTypeOf :: Const -> DataType
toConstr :: Const -> Constr
$ctoConstr :: Const -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Const
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Const
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Const -> c Const
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Const -> c Const
Data, Const
forall a. a -> a -> Bounded a
maxBound :: Const
$cmaxBound :: Const
minBound :: Const
$cminBound :: Const
Bounded, Int -> Const
Const -> Int
Const -> [Const]
Const -> Const
Const -> Const -> [Const]
Const -> Const -> Const -> [Const]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: Const -> Const -> Const -> [Const]
$cenumFromThenTo :: Const -> Const -> Const -> [Const]
enumFromTo :: Const -> Const -> [Const]
$cenumFromTo :: Const -> Const -> [Const]
enumFromThen :: Const -> Const -> [Const]
$cenumFromThen :: Const -> Const -> [Const]
enumFrom :: Const -> [Const]
$cenumFrom :: Const -> [Const]
fromEnum :: Const -> Int
$cfromEnum :: Const -> Int
toEnum :: Int -> Const
$ctoEnum :: Int -> Const
pred :: Const -> Const
$cpred :: Const -> Const
succ :: Const -> Const
$csucc :: Const -> Const
Enum, forall x. Rep Const x -> Const
forall x. Const -> Rep Const x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Const x -> Const
$cfrom :: forall x. Const -> Rep Const x
Generic, forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Const -> m Exp
forall (m :: * -> *). Quote m => Const -> Code m Const
liftTyped :: forall (m :: * -> *). Quote m => Const -> Code m Const
$cliftTyped :: forall (m :: * -> *). Quote m => Const -> Code m Const
lift :: forall (m :: * -> *). Quote m => Const -> m Exp
$clift :: forall (m :: * -> *). Quote m => Const -> m Exp
Lift, Const -> ()
forall a. (a -> ()) -> NFData a
rnf :: Const -> ()
$crnf :: Const -> ()
NFData)
instance Pretty Const where
pretty :: forall ann. Const -> Doc ann
pretty = forall ann xxx. Doc ann -> Doc xxx
Pretty.unAnnotate forall b c a. (b -> c) -> (a -> b) -> a -> c
. Const -> Doc Ann
prettyConst
data Var = V Text !Int
deriving (Typeable Var
Var -> Constr
Var -> DataType
(forall b. Data b => b -> b) -> Var -> Var
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) -> Var -> u
forall u. (forall d. Data d => d -> u) -> Var -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Var -> m Var
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Var -> m Var
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Var
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Var -> c Var
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Var)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Var)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Var -> m Var
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Var -> m Var
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Var -> m Var
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Var -> m Var
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Var -> m Var
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Var -> m Var
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Var -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Var -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Var -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> Var -> [u]
gmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
gmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r
gmapT :: (forall b. Data b => b -> b) -> Var -> Var
$cgmapT :: (forall b. Data b => b -> b) -> Var -> Var
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Var)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Var)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Var)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c Var)
dataTypeOf :: Var -> DataType
$cdataTypeOf :: Var -> DataType
toConstr :: Var -> Constr
$ctoConstr :: Var -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Var
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c Var
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Var -> c Var
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Var -> c Var
Data, forall x. Rep Var x -> Var
forall x. Var -> Rep Var x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Var x -> Var
$cfrom :: forall x. Var -> Rep Var x
Generic, Var -> Var -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Var -> Var -> Bool
$c/= :: Var -> Var -> Bool
== :: Var -> Var -> Bool
$c== :: Var -> Var -> Bool
Eq, Eq Var
Var -> Var -> Bool
Var -> Var -> Ordering
Var -> Var -> Var
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
min :: Var -> Var -> Var
$cmin :: Var -> Var -> Var
max :: Var -> Var -> Var
$cmax :: Var -> Var -> Var
>= :: Var -> Var -> Bool
$c>= :: Var -> Var -> Bool
> :: Var -> Var -> Bool
$c> :: Var -> Var -> Bool
<= :: Var -> Var -> Bool
$c<= :: Var -> Var -> Bool
< :: Var -> Var -> Bool
$c< :: Var -> Var -> Bool
compare :: Var -> Var -> Ordering
$ccompare :: Var -> Var -> Ordering
Ord, Int -> Var -> ShowS
[Var] -> ShowS
Var -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Var] -> ShowS
$cshowList :: [Var] -> ShowS
show :: Var -> String
$cshow :: Var -> String
showsPrec :: Int -> Var -> ShowS
$cshowsPrec :: Int -> Var -> ShowS
Show, forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Var -> m Exp
forall (m :: * -> *). Quote m => Var -> Code m Var
liftTyped :: forall (m :: * -> *). Quote m => Var -> Code m Var
$cliftTyped :: forall (m :: * -> *). Quote m => Var -> Code m Var
lift :: forall (m :: * -> *). Quote m => Var -> m Exp
$clift :: forall (m :: * -> *). Quote m => Var -> m Exp
Lift, Var -> ()
forall a. (a -> ()) -> NFData a
rnf :: Var -> ()
$crnf :: Var -> ()
NFData)
instance IsString Var where
fromString :: String -> Var
fromString String
str = Text -> Int -> Var
V (forall a. IsString a => String -> a
fromString String
str) Int
0
instance Pretty Var where
pretty :: forall ann. Var -> Doc ann
pretty = forall ann xxx. Doc ann -> Doc xxx
Pretty.unAnnotate forall b c a. (b -> c) -> (a -> b) -> a -> c
. Var -> Doc Ann
prettyVar
data Binding s a = Binding
{ forall s a. Binding s a -> Maybe s
bindingSrc0 :: Maybe s
, forall s a. Binding s a -> Text
variable :: Text
, forall s a. Binding s a -> Maybe s
bindingSrc1 :: Maybe s
, forall s a. Binding s a -> Maybe (Maybe s, Expr s a)
annotation :: Maybe (Maybe s, Expr s a)
, forall s a. Binding s a -> Maybe s
bindingSrc2 :: Maybe s
, forall s a. Binding s a -> Expr s a
value :: Expr s a
} deriving (Binding s a -> Constr
Binding s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (Binding s a)
forall s a. (Data s, Data a) => Binding s a -> Constr
forall s a. (Data s, Data a) => Binding s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Binding s a -> Binding s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Binding s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Binding s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Binding s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Binding s a -> c (Binding s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Binding s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Binding s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Binding s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Binding s a -> c (Binding s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Binding s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Binding s a -> m (Binding s a)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Binding s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Binding s a -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Binding s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Binding s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Binding s a -> r
gmapT :: (forall b. Data b => b -> b) -> Binding s a -> Binding s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Binding s a -> Binding s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Binding s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Binding s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Binding s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Binding s a))
dataTypeOf :: Binding s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => Binding s a -> DataType
toConstr :: Binding s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => Binding s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Binding s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Binding s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Binding s a -> c (Binding s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Binding s a -> c (Binding s a)
Data, Binding s a -> Binding s a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall s a. (Eq s, Eq a) => Binding s a -> Binding s a -> Bool
/= :: Binding s a -> Binding s a -> Bool
$c/= :: forall s a. (Eq s, Eq a) => Binding s a -> Binding s a -> Bool
== :: Binding s a -> Binding s a -> Bool
$c== :: forall s a. (Eq s, Eq a) => Binding s a -> Binding s a -> Bool
Eq, forall a. Binding s a -> Bool
forall s a. Eq a => a -> Binding s a -> Bool
forall s a. Num a => Binding s a -> a
forall s a. Ord a => Binding s a -> a
forall m a. Monoid m => (a -> m) -> Binding s a -> m
forall s m. Monoid m => Binding s m -> m
forall s a. Binding s a -> Bool
forall s a. Binding s a -> Int
forall s a. Binding s a -> [a]
forall a b. (a -> b -> b) -> b -> Binding s a -> b
forall s a. (a -> a -> a) -> Binding s a -> a
forall s m a. Monoid m => (a -> m) -> Binding s a -> m
forall s b a. (b -> a -> b) -> b -> Binding s a -> b
forall s a b. (a -> b -> b) -> b -> Binding s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => Binding s a -> a
$cproduct :: forall s a. Num a => Binding s a -> a
sum :: forall a. Num a => Binding s a -> a
$csum :: forall s a. Num a => Binding s a -> a
minimum :: forall a. Ord a => Binding s a -> a
$cminimum :: forall s a. Ord a => Binding s a -> a
maximum :: forall a. Ord a => Binding s a -> a
$cmaximum :: forall s a. Ord a => Binding s a -> a
elem :: forall a. Eq a => a -> Binding s a -> Bool
$celem :: forall s a. Eq a => a -> Binding s a -> Bool
length :: forall a. Binding s a -> Int
$clength :: forall s a. Binding s a -> Int
null :: forall a. Binding s a -> Bool
$cnull :: forall s a. Binding s a -> Bool
toList :: forall a. Binding s a -> [a]
$ctoList :: forall s a. Binding s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> Binding s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> Binding s a -> a
foldr1 :: forall a. (a -> a -> a) -> Binding s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> Binding s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> Binding s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> Binding s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Binding s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> Binding s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Binding s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> Binding s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Binding s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> Binding s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> Binding s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> Binding s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Binding s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> Binding s a -> m
fold :: forall m. Monoid m => Binding s m -> m
$cfold :: forall s m. Monoid m => Binding s m -> m
Foldable, forall a b. a -> Binding s b -> Binding s a
forall a b. (a -> b) -> Binding s a -> Binding s b
forall s a b. a -> Binding s b -> Binding s a
forall s a b. (a -> b) -> Binding s a -> Binding s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> Binding s b -> Binding s a
$c<$ :: forall s a b. a -> Binding s b -> Binding s a
fmap :: forall a b. (a -> b) -> Binding s a -> Binding s b
$cfmap :: forall s a b. (a -> b) -> Binding s a -> Binding s b
Functor, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (Binding s a) x -> Binding s a
forall s a x. Binding s a -> Rep (Binding s a) x
$cto :: forall s a x. Rep (Binding s a) x -> Binding s a
$cfrom :: forall s a x. Binding s a -> Rep (Binding s a) x
Generic, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Binding s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Binding s a -> Code m (Binding s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Binding s a -> m Exp
forall (m :: * -> *).
Quote m =>
Binding s a -> Code m (Binding s a)
liftTyped :: forall (m :: * -> *).
Quote m =>
Binding s a -> Code m (Binding s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Binding s a -> Code m (Binding s a)
lift :: forall (m :: * -> *). Quote m => Binding s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Binding s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => Binding s a -> ()
rnf :: Binding s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => Binding s a -> ()
NFData, Binding s a -> Binding s a -> Bool
Binding s a -> Binding s a -> Ordering
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
forall {s} {a}. (Ord s, Ord a) => Eq (Binding s a)
forall s a. (Ord s, Ord a) => Binding s a -> Binding s a -> Bool
forall s a.
(Ord s, Ord a) =>
Binding s a -> Binding s a -> Ordering
forall s a.
(Ord s, Ord a) =>
Binding s a -> Binding s a -> Binding s a
min :: Binding s a -> Binding s a -> Binding s a
$cmin :: forall s a.
(Ord s, Ord a) =>
Binding s a -> Binding s a -> Binding s a
max :: Binding s a -> Binding s a -> Binding s a
$cmax :: forall s a.
(Ord s, Ord a) =>
Binding s a -> Binding s a -> Binding s a
>= :: Binding s a -> Binding s a -> Bool
$c>= :: forall s a. (Ord s, Ord a) => Binding s a -> Binding s a -> Bool
> :: Binding s a -> Binding s a -> Bool
$c> :: forall s a. (Ord s, Ord a) => Binding s a -> Binding s a -> Bool
<= :: Binding s a -> Binding s a -> Bool
$c<= :: forall s a. (Ord s, Ord a) => Binding s a -> Binding s a -> Bool
< :: Binding s a -> Binding s a -> Bool
$c< :: forall s a. (Ord s, Ord a) => Binding s a -> Binding s a -> Bool
compare :: Binding s a -> Binding s a -> Ordering
$ccompare :: forall s a.
(Ord s, Ord a) =>
Binding s a -> Binding s a -> Ordering
Ord, Int -> Binding s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a. (Show s, Show a) => Int -> Binding s a -> ShowS
forall s a. (Show s, Show a) => [Binding s a] -> ShowS
forall s a. (Show s, Show a) => Binding s a -> String
showList :: [Binding s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [Binding s a] -> ShowS
show :: Binding s a -> String
$cshow :: forall s a. (Show s, Show a) => Binding s a -> String
showsPrec :: Int -> Binding s a -> ShowS
$cshowsPrec :: forall s a. (Show s, Show a) => Int -> Binding s a -> ShowS
Show, forall s. Functor (Binding s)
forall s. Foldable (Binding s)
forall s (m :: * -> *) a.
Monad m =>
Binding s (m a) -> m (Binding s a)
forall s (f :: * -> *) a.
Applicative f =>
Binding s (f a) -> f (Binding s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Binding s a -> m (Binding s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Binding s a -> f (Binding s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Binding s a -> f (Binding s b)
sequence :: forall (m :: * -> *) a.
Monad m =>
Binding s (m a) -> m (Binding s a)
$csequence :: forall s (m :: * -> *) a.
Monad m =>
Binding s (m a) -> m (Binding s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Binding s a -> m (Binding s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Binding s a -> m (Binding s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Binding s (f a) -> f (Binding s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
Binding s (f a) -> f (Binding s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Binding s a -> f (Binding s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Binding s a -> f (Binding s b)
Traversable)
instance Bifunctor Binding where
first :: forall a b c. (a -> b) -> Binding a c -> Binding b c
first a -> b
k (Binding Maybe a
src0 Text
a Maybe a
src1 Maybe (Maybe a, Expr a c)
b Maybe a
src2 Expr a c
c) =
forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
k Maybe a
src0) Text
a (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
k Maybe a
src1) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall {f :: * -> *} {p :: * -> * -> *} {c}.
(Functor f, Bifunctor p) =>
(f a, p a c) -> (f b, p b c)
adapt0 Maybe (Maybe a, Expr a c)
b) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
k Maybe a
src2) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
c)
where
adapt0 :: (f a, p a c) -> (f b, p b c)
adapt0 (f a
src3, p a c
d) = (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
k f a
src3, forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k p a c
d)
second :: forall b c a. (b -> c) -> Binding a b -> Binding a c
second = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
makeBinding :: Text -> Expr s a -> Binding s a
makeBinding :: forall s a. Text -> Expr s a -> Binding s a
makeBinding Text
name = forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding forall a. Maybe a
Nothing Text
name forall a. Maybe a
Nothing forall a. Maybe a
Nothing forall a. Maybe a
Nothing
newtype DhallDouble = DhallDouble { DhallDouble -> Double
getDhallDouble :: Double }
deriving stock (Int -> DhallDouble -> ShowS
[DhallDouble] -> ShowS
DhallDouble -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DhallDouble] -> ShowS
$cshowList :: [DhallDouble] -> ShowS
show :: DhallDouble -> String
$cshow :: DhallDouble -> String
showsPrec :: Int -> DhallDouble -> ShowS
$cshowsPrec :: Int -> DhallDouble -> ShowS
Show, Typeable DhallDouble
DhallDouble -> Constr
DhallDouble -> DataType
(forall b. Data b => b -> b) -> DhallDouble -> DhallDouble
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) -> DhallDouble -> u
forall u. (forall d. Data d => d -> u) -> DhallDouble -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DhallDouble
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DhallDouble -> c DhallDouble
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DhallDouble)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c DhallDouble)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DhallDouble -> m DhallDouble
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DhallDouble -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DhallDouble -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> DhallDouble -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> DhallDouble -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DhallDouble -> r
gmapT :: (forall b. Data b => b -> b) -> DhallDouble -> DhallDouble
$cgmapT :: (forall b. Data b => b -> b) -> DhallDouble -> DhallDouble
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c DhallDouble)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c DhallDouble)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DhallDouble)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DhallDouble)
dataTypeOf :: DhallDouble -> DataType
$cdataTypeOf :: DhallDouble -> DataType
toConstr :: DhallDouble -> Constr
$ctoConstr :: DhallDouble -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DhallDouble
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DhallDouble
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DhallDouble -> c DhallDouble
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DhallDouble -> c DhallDouble
Data, forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => DhallDouble -> m Exp
forall (m :: * -> *). Quote m => DhallDouble -> Code m DhallDouble
liftTyped :: forall (m :: * -> *). Quote m => DhallDouble -> Code m DhallDouble
$cliftTyped :: forall (m :: * -> *). Quote m => DhallDouble -> Code m DhallDouble
lift :: forall (m :: * -> *). Quote m => DhallDouble -> m Exp
$clift :: forall (m :: * -> *). Quote m => DhallDouble -> m Exp
Lift, forall x. Rep DhallDouble x -> DhallDouble
forall x. DhallDouble -> Rep DhallDouble x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DhallDouble x -> DhallDouble
$cfrom :: forall x. DhallDouble -> Rep DhallDouble x
Generic)
deriving anyclass DhallDouble -> ()
forall a. (a -> ()) -> NFData a
rnf :: DhallDouble -> ()
$crnf :: DhallDouble -> ()
NFData
instance Eq DhallDouble where
DhallDouble Double
a == :: DhallDouble -> DhallDouble -> Bool
== DhallDouble Double
b
| forall a. RealFloat a => a -> Bool
isNaN Double
a Bool -> Bool -> Bool
&& forall a. RealFloat a => a -> Bool
isNaN Double
b = Bool
True
| forall a. RealFloat a => a -> Bool
isNegativeZero Double
a forall a. Bits a => a -> a -> a
`xor` forall a. RealFloat a => a -> Bool
isNegativeZero Double
b = Bool
False
| Bool
otherwise = Double
a forall a. Eq a => a -> a -> Bool
== Double
b
instance Ord DhallDouble where
compare :: DhallDouble -> DhallDouble -> Ordering
compare a :: DhallDouble
a@(DhallDouble Double
a') b :: DhallDouble
b@(DhallDouble Double
b') =
if DhallDouble
a forall a. Eq a => a -> a -> Bool
== DhallDouble
b
then Ordering
EQ
else forall a. Ord a => a -> a -> Ordering
compare Double
a' Double
b'
data Chunks s a = Chunks [(Text, Expr s a)] Text
deriving (forall a b. a -> Chunks s b -> Chunks s a
forall a b. (a -> b) -> Chunks s a -> Chunks s b
forall s a b. a -> Chunks s b -> Chunks s a
forall s a b. (a -> b) -> Chunks s a -> Chunks s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> Chunks s b -> Chunks s a
$c<$ :: forall s a b. a -> Chunks s b -> Chunks s a
fmap :: forall a b. (a -> b) -> Chunks s a -> Chunks s b
$cfmap :: forall s a b. (a -> b) -> Chunks s a -> Chunks s b
Functor, forall a. Chunks s a -> Bool
forall s a. Eq a => a -> Chunks s a -> Bool
forall s a. Num a => Chunks s a -> a
forall s a. Ord a => Chunks s a -> a
forall m a. Monoid m => (a -> m) -> Chunks s a -> m
forall s m. Monoid m => Chunks s m -> m
forall s a. Chunks s a -> Bool
forall s a. Chunks s a -> Int
forall s a. Chunks s a -> [a]
forall a b. (a -> b -> b) -> b -> Chunks s a -> b
forall s a. (a -> a -> a) -> Chunks s a -> a
forall s m a. Monoid m => (a -> m) -> Chunks s a -> m
forall s b a. (b -> a -> b) -> b -> Chunks s a -> b
forall s a b. (a -> b -> b) -> b -> Chunks s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => Chunks s a -> a
$cproduct :: forall s a. Num a => Chunks s a -> a
sum :: forall a. Num a => Chunks s a -> a
$csum :: forall s a. Num a => Chunks s a -> a
minimum :: forall a. Ord a => Chunks s a -> a
$cminimum :: forall s a. Ord a => Chunks s a -> a
maximum :: forall a. Ord a => Chunks s a -> a
$cmaximum :: forall s a. Ord a => Chunks s a -> a
elem :: forall a. Eq a => a -> Chunks s a -> Bool
$celem :: forall s a. Eq a => a -> Chunks s a -> Bool
length :: forall a. Chunks s a -> Int
$clength :: forall s a. Chunks s a -> Int
null :: forall a. Chunks s a -> Bool
$cnull :: forall s a. Chunks s a -> Bool
toList :: forall a. Chunks s a -> [a]
$ctoList :: forall s a. Chunks s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> Chunks s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> Chunks s a -> a
foldr1 :: forall a. (a -> a -> a) -> Chunks s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> Chunks s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> Chunks s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> Chunks s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Chunks s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> Chunks s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Chunks s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> Chunks s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Chunks s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> Chunks s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> Chunks s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> Chunks s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Chunks s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> Chunks s a -> m
fold :: forall m. Monoid m => Chunks s m -> m
$cfold :: forall s m. Monoid m => Chunks s m -> m
Foldable, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (Chunks s a) x -> Chunks s a
forall s a x. Chunks s a -> Rep (Chunks s a) x
$cto :: forall s a x. Rep (Chunks s a) x -> Chunks s a
$cfrom :: forall s a x. Chunks s a -> Rep (Chunks s a) x
Generic, forall s. Functor (Chunks s)
forall s. Foldable (Chunks s)
forall s (m :: * -> *) a.
Monad m =>
Chunks s (m a) -> m (Chunks s a)
forall s (f :: * -> *) a.
Applicative f =>
Chunks s (f a) -> f (Chunks s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Chunks s a -> m (Chunks s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Chunks s a -> f (Chunks s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Chunks s a -> f (Chunks s b)
sequence :: forall (m :: * -> *) a. Monad m => Chunks s (m a) -> m (Chunks s a)
$csequence :: forall s (m :: * -> *) a.
Monad m =>
Chunks s (m a) -> m (Chunks s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Chunks s a -> m (Chunks s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Chunks s a -> m (Chunks s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Chunks s (f a) -> f (Chunks s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
Chunks s (f a) -> f (Chunks s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Chunks s a -> f (Chunks s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Chunks s a -> f (Chunks s b)
Traversable, Int -> Chunks s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a. (Show s, Show a) => Int -> Chunks s a -> ShowS
forall s a. (Show s, Show a) => [Chunks s a] -> ShowS
forall s a. (Show s, Show a) => Chunks s a -> String
showList :: [Chunks s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [Chunks s a] -> ShowS
show :: Chunks s a -> String
$cshow :: forall s a. (Show s, Show a) => Chunks s a -> String
showsPrec :: Int -> Chunks s a -> ShowS
$cshowsPrec :: forall s a. (Show s, Show a) => Int -> Chunks s a -> ShowS
Show, Chunks s a -> Chunks s a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall s a. (Eq s, Eq a) => Chunks s a -> Chunks s a -> Bool
/= :: Chunks s a -> Chunks s a -> Bool
$c/= :: forall s a. (Eq s, Eq a) => Chunks s a -> Chunks s a -> Bool
== :: Chunks s a -> Chunks s a -> Bool
$c== :: forall s a. (Eq s, Eq a) => Chunks s a -> Chunks s a -> Bool
Eq, Chunks s a -> Chunks s a -> Bool
Chunks s a -> Chunks s a -> Ordering
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
forall {s} {a}. (Ord s, Ord a) => Eq (Chunks s a)
forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Bool
forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Ordering
forall s a.
(Ord s, Ord a) =>
Chunks s a -> Chunks s a -> Chunks s a
min :: Chunks s a -> Chunks s a -> Chunks s a
$cmin :: forall s a.
(Ord s, Ord a) =>
Chunks s a -> Chunks s a -> Chunks s a
max :: Chunks s a -> Chunks s a -> Chunks s a
$cmax :: forall s a.
(Ord s, Ord a) =>
Chunks s a -> Chunks s a -> Chunks s a
>= :: Chunks s a -> Chunks s a -> Bool
$c>= :: forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Bool
> :: Chunks s a -> Chunks s a -> Bool
$c> :: forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Bool
<= :: Chunks s a -> Chunks s a -> Bool
$c<= :: forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Bool
< :: Chunks s a -> Chunks s a -> Bool
$c< :: forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Bool
compare :: Chunks s a -> Chunks s a -> Ordering
$ccompare :: forall s a. (Ord s, Ord a) => Chunks s a -> Chunks s a -> Ordering
Ord, Chunks s a -> Constr
Chunks s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (Chunks s a)
forall s a. (Data s, Data a) => Chunks s a -> Constr
forall s a. (Data s, Data a) => Chunks s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Chunks s a -> Chunks s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Chunks s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Chunks s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Chunks s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Chunks s a -> c (Chunks s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Chunks s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Chunks s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Chunks s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Chunks s a -> c (Chunks s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Chunks s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Chunks s a -> m (Chunks s a)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Chunks s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Chunks s a -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Chunks s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Chunks s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Chunks s a -> r
gmapT :: (forall b. Data b => b -> b) -> Chunks s a -> Chunks s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Chunks s a -> Chunks s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Chunks s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (Chunks s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Chunks s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Chunks s a))
dataTypeOf :: Chunks s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => Chunks s a -> DataType
toConstr :: Chunks s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => Chunks s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Chunks s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Chunks s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Chunks s a -> c (Chunks s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Chunks s a -> c (Chunks s a)
Data, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Chunks s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Chunks s a -> Code m (Chunks s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Chunks s a -> m Exp
forall (m :: * -> *). Quote m => Chunks s a -> Code m (Chunks s a)
liftTyped :: forall (m :: * -> *). Quote m => Chunks s a -> Code m (Chunks s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Chunks s a -> Code m (Chunks s a)
lift :: forall (m :: * -> *). Quote m => Chunks s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Chunks s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => Chunks s a -> ()
rnf :: Chunks s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => Chunks s a -> ()
NFData)
instance Semigroup (Chunks s a) where
Chunks [(Text, Expr s a)]
xysL Text
zL <> :: Chunks s a -> Chunks s a -> Chunks s a
<> Chunks [] Text
zR =
forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [(Text, Expr s a)]
xysL (Text
zL forall a. Semigroup a => a -> a -> a
<> Text
zR)
Chunks [(Text, Expr s a)]
xysL Text
zL <> Chunks ((Text
x, Expr s a
y):[(Text, Expr s a)]
xysR) Text
zR =
forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks ([(Text, Expr s a)]
xysL forall a. [a] -> [a] -> [a]
++ (Text
zL forall a. Semigroup a => a -> a -> a
<> Text
x, Expr s a
y)forall a. a -> [a] -> [a]
:[(Text, Expr s a)]
xysR) Text
zR
instance Monoid (Chunks s a) where
mempty :: Chunks s a
mempty = forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [] forall a. Monoid a => a
mempty
instance IsString (Chunks s a) where
fromString :: String -> Chunks s a
fromString String
str = forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [] (forall a. IsString a => String -> a
fromString String
str)
data PreferAnnotation s a
= PreferFromSource
| PreferFromWith (Expr s a)
| PreferFromCompletion
deriving (PreferAnnotation s a -> Constr
PreferAnnotation s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (PreferAnnotation s a)
forall s a. (Data s, Data a) => PreferAnnotation s a -> Constr
forall s a. (Data s, Data a) => PreferAnnotation s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b)
-> PreferAnnotation s a -> PreferAnnotation s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> PreferAnnotation s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> PreferAnnotation s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (PreferAnnotation s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PreferAnnotation s a
-> c (PreferAnnotation s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (PreferAnnotation s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (PreferAnnotation s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (PreferAnnotation s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PreferAnnotation s a
-> c (PreferAnnotation s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (PreferAnnotation s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> PreferAnnotation s a -> m (PreferAnnotation s a)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> PreferAnnotation s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> PreferAnnotation s a -> u
gmapQ :: forall u.
(forall d. Data d => d -> u) -> PreferAnnotation s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> PreferAnnotation s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> PreferAnnotation s a -> r
gmapT :: (forall b. Data b => b -> b)
-> PreferAnnotation s a -> PreferAnnotation s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b)
-> PreferAnnotation s a -> PreferAnnotation s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (PreferAnnotation s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (PreferAnnotation s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (PreferAnnotation s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (PreferAnnotation s a))
dataTypeOf :: PreferAnnotation s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => PreferAnnotation s a -> DataType
toConstr :: PreferAnnotation s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => PreferAnnotation s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (PreferAnnotation s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (PreferAnnotation s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PreferAnnotation s a
-> c (PreferAnnotation s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> PreferAnnotation s a
-> c (PreferAnnotation s a)
Data, PreferAnnotation s a -> PreferAnnotation s a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall s a.
(Eq s, Eq a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
/= :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c/= :: forall s a.
(Eq s, Eq a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
== :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c== :: forall s a.
(Eq s, Eq a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
Eq, forall a. PreferAnnotation s a -> Bool
forall s a. Eq a => a -> PreferAnnotation s a -> Bool
forall s a. Num a => PreferAnnotation s a -> a
forall s a. Ord a => PreferAnnotation s a -> a
forall m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
forall s m. Monoid m => PreferAnnotation s m -> m
forall s a. PreferAnnotation s a -> Bool
forall s a. PreferAnnotation s a -> Int
forall s a. PreferAnnotation s a -> [a]
forall a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
forall s a. (a -> a -> a) -> PreferAnnotation s a -> a
forall s m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
forall s b a. (b -> a -> b) -> b -> PreferAnnotation s a -> b
forall s a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => PreferAnnotation s a -> a
$cproduct :: forall s a. Num a => PreferAnnotation s a -> a
sum :: forall a. Num a => PreferAnnotation s a -> a
$csum :: forall s a. Num a => PreferAnnotation s a -> a
minimum :: forall a. Ord a => PreferAnnotation s a -> a
$cminimum :: forall s a. Ord a => PreferAnnotation s a -> a
maximum :: forall a. Ord a => PreferAnnotation s a -> a
$cmaximum :: forall s a. Ord a => PreferAnnotation s a -> a
elem :: forall a. Eq a => a -> PreferAnnotation s a -> Bool
$celem :: forall s a. Eq a => a -> PreferAnnotation s a -> Bool
length :: forall a. PreferAnnotation s a -> Int
$clength :: forall s a. PreferAnnotation s a -> Int
null :: forall a. PreferAnnotation s a -> Bool
$cnull :: forall s a. PreferAnnotation s a -> Bool
toList :: forall a. PreferAnnotation s a -> [a]
$ctoList :: forall s a. PreferAnnotation s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> PreferAnnotation s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> PreferAnnotation s a -> a
foldr1 :: forall a. (a -> a -> a) -> PreferAnnotation s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> PreferAnnotation s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> PreferAnnotation s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> PreferAnnotation s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> PreferAnnotation s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> PreferAnnotation s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> PreferAnnotation s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> PreferAnnotation s a -> m
fold :: forall m. Monoid m => PreferAnnotation s m -> m
$cfold :: forall s m. Monoid m => PreferAnnotation s m -> m
Foldable, forall a b. a -> PreferAnnotation s b -> PreferAnnotation s a
forall a b.
(a -> b) -> PreferAnnotation s a -> PreferAnnotation s b
forall s a b. a -> PreferAnnotation s b -> PreferAnnotation s a
forall s a b.
(a -> b) -> PreferAnnotation s a -> PreferAnnotation s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> PreferAnnotation s b -> PreferAnnotation s a
$c<$ :: forall s a b. a -> PreferAnnotation s b -> PreferAnnotation s a
fmap :: forall a b.
(a -> b) -> PreferAnnotation s a -> PreferAnnotation s b
$cfmap :: forall s a b.
(a -> b) -> PreferAnnotation s a -> PreferAnnotation s b
Functor, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (PreferAnnotation s a) x -> PreferAnnotation s a
forall s a x. PreferAnnotation s a -> Rep (PreferAnnotation s a) x
$cto :: forall s a x. Rep (PreferAnnotation s a) x -> PreferAnnotation s a
$cfrom :: forall s a x. PreferAnnotation s a -> Rep (PreferAnnotation s a) x
Generic, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
PreferAnnotation s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
PreferAnnotation s a -> Code m (PreferAnnotation s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => PreferAnnotation s a -> m Exp
forall (m :: * -> *).
Quote m =>
PreferAnnotation s a -> Code m (PreferAnnotation s a)
liftTyped :: forall (m :: * -> *).
Quote m =>
PreferAnnotation s a -> Code m (PreferAnnotation s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
PreferAnnotation s a -> Code m (PreferAnnotation s a)
lift :: forall (m :: * -> *). Quote m => PreferAnnotation s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
PreferAnnotation s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => PreferAnnotation s a -> ()
rnf :: PreferAnnotation s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => PreferAnnotation s a -> ()
NFData, PreferAnnotation s a -> PreferAnnotation s a -> Bool
PreferAnnotation s a -> PreferAnnotation s a -> Ordering
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
forall {s} {a}. (Ord s, Ord a) => Eq (PreferAnnotation s a)
forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Ordering
forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a
-> PreferAnnotation s a -> PreferAnnotation s a
min :: PreferAnnotation s a
-> PreferAnnotation s a -> PreferAnnotation s a
$cmin :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a
-> PreferAnnotation s a -> PreferAnnotation s a
max :: PreferAnnotation s a
-> PreferAnnotation s a -> PreferAnnotation s a
$cmax :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a
-> PreferAnnotation s a -> PreferAnnotation s a
>= :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c>= :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
> :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c> :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
<= :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c<= :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
< :: PreferAnnotation s a -> PreferAnnotation s a -> Bool
$c< :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Bool
compare :: PreferAnnotation s a -> PreferAnnotation s a -> Ordering
$ccompare :: forall s a.
(Ord s, Ord a) =>
PreferAnnotation s a -> PreferAnnotation s a -> Ordering
Ord, Int -> PreferAnnotation s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a.
(Show s, Show a) =>
Int -> PreferAnnotation s a -> ShowS
forall s a. (Show s, Show a) => [PreferAnnotation s a] -> ShowS
forall s a. (Show s, Show a) => PreferAnnotation s a -> String
showList :: [PreferAnnotation s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [PreferAnnotation s a] -> ShowS
show :: PreferAnnotation s a -> String
$cshow :: forall s a. (Show s, Show a) => PreferAnnotation s a -> String
showsPrec :: Int -> PreferAnnotation s a -> ShowS
$cshowsPrec :: forall s a.
(Show s, Show a) =>
Int -> PreferAnnotation s a -> ShowS
Show, forall s. Functor (PreferAnnotation s)
forall s. Foldable (PreferAnnotation s)
forall s (m :: * -> *) a.
Monad m =>
PreferAnnotation s (m a) -> m (PreferAnnotation s a)
forall s (f :: * -> *) a.
Applicative f =>
PreferAnnotation s (f a) -> f (PreferAnnotation s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> PreferAnnotation s a -> m (PreferAnnotation s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> PreferAnnotation s a -> f (PreferAnnotation s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> PreferAnnotation s a -> f (PreferAnnotation s b)
sequence :: forall (m :: * -> *) a.
Monad m =>
PreferAnnotation s (m a) -> m (PreferAnnotation s a)
$csequence :: forall s (m :: * -> *) a.
Monad m =>
PreferAnnotation s (m a) -> m (PreferAnnotation s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> PreferAnnotation s a -> m (PreferAnnotation s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> PreferAnnotation s a -> m (PreferAnnotation s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
PreferAnnotation s (f a) -> f (PreferAnnotation s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
PreferAnnotation s (f a) -> f (PreferAnnotation s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> PreferAnnotation s a -> f (PreferAnnotation s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> PreferAnnotation s a -> f (PreferAnnotation s b)
Traversable)
instance Bifunctor PreferAnnotation where
first :: forall a b c.
(a -> b) -> PreferAnnotation a c -> PreferAnnotation b c
first a -> b
_ PreferAnnotation a c
PreferFromSource = forall s a. PreferAnnotation s a
PreferFromSource
first a -> b
f (PreferFromWith Expr a c
e ) = forall s a. Expr s a -> PreferAnnotation s a
PreferFromWith (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
f Expr a c
e)
first a -> b
_ PreferAnnotation a c
PreferFromCompletion = forall s a. PreferAnnotation s a
PreferFromCompletion
second :: forall b c a.
(b -> c) -> PreferAnnotation a b -> PreferAnnotation a c
second = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
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 (RecordField s a -> Constr
RecordField s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (RecordField s a)
forall s a. (Data s, Data a) => RecordField s a -> Constr
forall s a. (Data s, Data a) => RecordField s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> RecordField s a -> RecordField s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> RecordField s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> RecordField s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (RecordField s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> RecordField s a -> c (RecordField s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (RecordField s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (RecordField s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (RecordField s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> RecordField s a -> c (RecordField s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (RecordField s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> RecordField s a -> m (RecordField s a)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> RecordField s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> RecordField s a -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> RecordField s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> RecordField s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> RecordField s a -> r
gmapT :: (forall b. Data b => b -> b) -> RecordField s a -> RecordField s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> RecordField s a -> RecordField s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (RecordField s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (RecordField s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (RecordField s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (RecordField s a))
dataTypeOf :: RecordField s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => RecordField s a -> DataType
toConstr :: RecordField s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => RecordField s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (RecordField s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (RecordField s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> RecordField s a -> c (RecordField s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> RecordField s a -> c (RecordField s a)
Data, RecordField s a -> RecordField s a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall s a.
(Eq s, Eq a) =>
RecordField s a -> RecordField s a -> Bool
/= :: RecordField s a -> RecordField s a -> Bool
$c/= :: forall s a.
(Eq s, Eq a) =>
RecordField s a -> RecordField s a -> Bool
== :: RecordField s a -> RecordField s a -> Bool
$c== :: forall s a.
(Eq s, Eq a) =>
RecordField s a -> RecordField s a -> Bool
Eq, forall a. RecordField s a -> Bool
forall s a. Eq a => a -> RecordField s a -> Bool
forall s a. Num a => RecordField s a -> a
forall s a. Ord a => RecordField s a -> a
forall m a. Monoid m => (a -> m) -> RecordField s a -> m
forall s m. Monoid m => RecordField s m -> m
forall s a. RecordField s a -> Bool
forall s a. RecordField s a -> Int
forall s a. RecordField s a -> [a]
forall a b. (a -> b -> b) -> b -> RecordField s a -> b
forall s a. (a -> a -> a) -> RecordField s a -> a
forall s m a. Monoid m => (a -> m) -> RecordField s a -> m
forall s b a. (b -> a -> b) -> b -> RecordField s a -> b
forall s a b. (a -> b -> b) -> b -> RecordField s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => RecordField s a -> a
$cproduct :: forall s a. Num a => RecordField s a -> a
sum :: forall a. Num a => RecordField s a -> a
$csum :: forall s a. Num a => RecordField s a -> a
minimum :: forall a. Ord a => RecordField s a -> a
$cminimum :: forall s a. Ord a => RecordField s a -> a
maximum :: forall a. Ord a => RecordField s a -> a
$cmaximum :: forall s a. Ord a => RecordField s a -> a
elem :: forall a. Eq a => a -> RecordField s a -> Bool
$celem :: forall s a. Eq a => a -> RecordField s a -> Bool
length :: forall a. RecordField s a -> Int
$clength :: forall s a. RecordField s a -> Int
null :: forall a. RecordField s a -> Bool
$cnull :: forall s a. RecordField s a -> Bool
toList :: forall a. RecordField s a -> [a]
$ctoList :: forall s a. RecordField s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> RecordField s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> RecordField s a -> a
foldr1 :: forall a. (a -> a -> a) -> RecordField s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> RecordField s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> RecordField s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> RecordField s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> RecordField s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> RecordField s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> RecordField s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> RecordField s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> RecordField s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> RecordField s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> RecordField s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> RecordField s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> RecordField s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> RecordField s a -> m
fold :: forall m. Monoid m => RecordField s m -> m
$cfold :: forall s m. Monoid m => RecordField s m -> m
Foldable, forall a b. a -> RecordField s b -> RecordField s a
forall a b. (a -> b) -> RecordField s a -> RecordField s b
forall s a b. a -> RecordField s b -> RecordField s a
forall s a b. (a -> b) -> RecordField s a -> RecordField s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> RecordField s b -> RecordField s a
$c<$ :: forall s a b. a -> RecordField s b -> RecordField s a
fmap :: forall a b. (a -> b) -> RecordField s a -> RecordField s b
$cfmap :: forall s a b. (a -> b) -> RecordField s a -> RecordField s b
Functor, 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
$cto :: forall s a x. Rep (RecordField s a) x -> RecordField s a
$cfrom :: forall s a x. RecordField s a -> Rep (RecordField s a) x
Generic, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
RecordField s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
RecordField s a -> Code m (RecordField s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => RecordField s a -> m Exp
forall (m :: * -> *).
Quote m =>
RecordField s a -> Code m (RecordField s a)
liftTyped :: forall (m :: * -> *).
Quote m =>
RecordField s a -> Code m (RecordField s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
RecordField s a -> Code m (RecordField s a)
lift :: forall (m :: * -> *). Quote m => RecordField s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
RecordField s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => RecordField s a -> ()
rnf :: RecordField s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => RecordField s a -> ()
NFData, RecordField s a -> RecordField s a -> Bool
RecordField s a -> RecordField s a -> Ordering
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
forall {s} {a}. (Ord s, Ord a) => Eq (RecordField s a)
forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Bool
forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Ordering
forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> RecordField s a
min :: RecordField s a -> RecordField s a -> RecordField s a
$cmin :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> RecordField s a
max :: RecordField s a -> RecordField s a -> RecordField s a
$cmax :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> RecordField s a
>= :: RecordField s a -> RecordField s a -> Bool
$c>= :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Bool
> :: RecordField s a -> RecordField s a -> Bool
$c> :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Bool
<= :: RecordField s a -> RecordField s a -> Bool
$c<= :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Bool
< :: RecordField s a -> RecordField s a -> Bool
$c< :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Bool
compare :: RecordField s a -> RecordField s a -> Ordering
$ccompare :: forall s a.
(Ord s, Ord a) =>
RecordField s a -> RecordField s a -> Ordering
Ord, Int -> RecordField s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a. (Show s, Show a) => Int -> RecordField s a -> ShowS
forall s a. (Show s, Show a) => [RecordField s a] -> ShowS
forall s a. (Show s, Show a) => RecordField s a -> String
showList :: [RecordField s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [RecordField s a] -> ShowS
show :: RecordField s a -> String
$cshow :: forall s a. (Show s, Show a) => RecordField s a -> String
showsPrec :: Int -> RecordField s a -> ShowS
$cshowsPrec :: forall s a. (Show s, Show a) => Int -> RecordField s a -> ShowS
Show, forall s. Functor (RecordField s)
forall s. Foldable (RecordField s)
forall s (m :: * -> *) a.
Monad m =>
RecordField s (m a) -> m (RecordField s a)
forall s (f :: * -> *) a.
Applicative f =>
RecordField s (f a) -> f (RecordField s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> RecordField s a -> m (RecordField s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> RecordField s a -> f (RecordField s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> RecordField s a -> f (RecordField s b)
sequence :: forall (m :: * -> *) a.
Monad m =>
RecordField s (m a) -> m (RecordField s a)
$csequence :: forall s (m :: * -> *) a.
Monad m =>
RecordField s (m a) -> m (RecordField s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> RecordField s a -> m (RecordField s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> RecordField s a -> m (RecordField s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
RecordField s (f a) -> f (RecordField s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
RecordField s (f a) -> f (RecordField s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> RecordField s a -> f (RecordField s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> RecordField s a -> f (RecordField s b)
Traversable)
makeRecordField :: Expr s a -> RecordField s a
makeRecordField :: forall s a. Expr s a -> RecordField s a
makeRecordField Expr s a
e = forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField forall a. Maybe a
Nothing Expr s a
e forall a. Maybe a
Nothing forall a. Maybe a
Nothing
instance Bifunctor RecordField where
first :: forall a b c. (a -> b) -> RecordField a c -> RecordField b c
first a -> b
k (RecordField Maybe a
s0 Expr a c
value Maybe a
s1 Maybe a
s2) =
forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
s0) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
value) (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
s1) (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
s2)
second :: forall b c a. (b -> c) -> RecordField a b -> RecordField a c
second = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
data FunctionBinding s a = FunctionBinding
{ forall s a. FunctionBinding s a -> Maybe s
functionBindingSrc0 :: Maybe s
, forall s a. FunctionBinding s a -> Text
functionBindingVariable :: Text
, forall s a. FunctionBinding s a -> Maybe s
functionBindingSrc1 :: Maybe s
, forall s a. FunctionBinding s a -> Maybe s
functionBindingSrc2 :: Maybe s
, forall s a. FunctionBinding s a -> Expr s a
functionBindingAnnotation :: Expr s a
} deriving (FunctionBinding s a -> Constr
FunctionBinding s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (FunctionBinding s a)
forall s a. (Data s, Data a) => FunctionBinding s a -> Constr
forall s a. (Data s, Data a) => FunctionBinding s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b)
-> FunctionBinding s a -> FunctionBinding s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> FunctionBinding s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> FunctionBinding s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FunctionBinding s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> FunctionBinding s a
-> c (FunctionBinding s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (FunctionBinding s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FunctionBinding s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FunctionBinding s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> FunctionBinding s a
-> c (FunctionBinding s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FunctionBinding s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> FunctionBinding s a -> m (FunctionBinding s a)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> FunctionBinding s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> FunctionBinding s a -> u
gmapQ :: forall u.
(forall d. Data d => d -> u) -> FunctionBinding s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> FunctionBinding s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FunctionBinding s a -> r
gmapT :: (forall b. Data b => b -> b)
-> FunctionBinding s a -> FunctionBinding s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b)
-> FunctionBinding s a -> FunctionBinding s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FunctionBinding s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FunctionBinding s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (FunctionBinding s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (FunctionBinding s a))
dataTypeOf :: FunctionBinding s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => FunctionBinding s a -> DataType
toConstr :: FunctionBinding s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => FunctionBinding s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FunctionBinding s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FunctionBinding s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> FunctionBinding s a
-> c (FunctionBinding s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> FunctionBinding s a
-> c (FunctionBinding s a)
Data, FunctionBinding s a -> FunctionBinding s a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall s a.
(Eq s, Eq a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
/= :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c/= :: forall s a.
(Eq s, Eq a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
== :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c== :: forall s a.
(Eq s, Eq a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
Eq, forall a. FunctionBinding s a -> Bool
forall s a. Eq a => a -> FunctionBinding s a -> Bool
forall s a. Num a => FunctionBinding s a -> a
forall s a. Ord a => FunctionBinding s a -> a
forall m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
forall s m. Monoid m => FunctionBinding s m -> m
forall s a. FunctionBinding s a -> Bool
forall s a. FunctionBinding s a -> Int
forall s a. FunctionBinding s a -> [a]
forall a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
forall s a. (a -> a -> a) -> FunctionBinding s a -> a
forall s m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
forall s b a. (b -> a -> b) -> b -> FunctionBinding s a -> b
forall s a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => FunctionBinding s a -> a
$cproduct :: forall s a. Num a => FunctionBinding s a -> a
sum :: forall a. Num a => FunctionBinding s a -> a
$csum :: forall s a. Num a => FunctionBinding s a -> a
minimum :: forall a. Ord a => FunctionBinding s a -> a
$cminimum :: forall s a. Ord a => FunctionBinding s a -> a
maximum :: forall a. Ord a => FunctionBinding s a -> a
$cmaximum :: forall s a. Ord a => FunctionBinding s a -> a
elem :: forall a. Eq a => a -> FunctionBinding s a -> Bool
$celem :: forall s a. Eq a => a -> FunctionBinding s a -> Bool
length :: forall a. FunctionBinding s a -> Int
$clength :: forall s a. FunctionBinding s a -> Int
null :: forall a. FunctionBinding s a -> Bool
$cnull :: forall s a. FunctionBinding s a -> Bool
toList :: forall a. FunctionBinding s a -> [a]
$ctoList :: forall s a. FunctionBinding s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> FunctionBinding s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> FunctionBinding s a -> a
foldr1 :: forall a. (a -> a -> a) -> FunctionBinding s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> FunctionBinding s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> FunctionBinding s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> FunctionBinding s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> FunctionBinding s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> FunctionBinding s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> FunctionBinding s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> FunctionBinding s a -> m
fold :: forall m. Monoid m => FunctionBinding s m -> m
$cfold :: forall s m. Monoid m => FunctionBinding s m -> m
Foldable, forall a b. a -> FunctionBinding s b -> FunctionBinding s a
forall a b. (a -> b) -> FunctionBinding s a -> FunctionBinding s b
forall s a b. a -> FunctionBinding s b -> FunctionBinding s a
forall s a b.
(a -> b) -> FunctionBinding s a -> FunctionBinding s b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> FunctionBinding s b -> FunctionBinding s a
$c<$ :: forall s a b. a -> FunctionBinding s b -> FunctionBinding s a
fmap :: forall a b. (a -> b) -> FunctionBinding s a -> FunctionBinding s b
$cfmap :: forall s a b.
(a -> b) -> FunctionBinding s a -> FunctionBinding s b
Functor, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (FunctionBinding s a) x -> FunctionBinding s a
forall s a x. FunctionBinding s a -> Rep (FunctionBinding s a) x
$cto :: forall s a x. Rep (FunctionBinding s a) x -> FunctionBinding s a
$cfrom :: forall s a x. FunctionBinding s a -> Rep (FunctionBinding s a) x
Generic, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
FunctionBinding s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
FunctionBinding s a -> Code m (FunctionBinding s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => FunctionBinding s a -> m Exp
forall (m :: * -> *).
Quote m =>
FunctionBinding s a -> Code m (FunctionBinding s a)
liftTyped :: forall (m :: * -> *).
Quote m =>
FunctionBinding s a -> Code m (FunctionBinding s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
FunctionBinding s a -> Code m (FunctionBinding s a)
lift :: forall (m :: * -> *). Quote m => FunctionBinding s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
FunctionBinding s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => FunctionBinding s a -> ()
rnf :: FunctionBinding s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => FunctionBinding s a -> ()
NFData, FunctionBinding s a -> FunctionBinding s a -> Bool
FunctionBinding s a -> FunctionBinding s a -> Ordering
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
forall {s} {a}. (Ord s, Ord a) => Eq (FunctionBinding s a)
forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Ordering
forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> FunctionBinding s a
min :: FunctionBinding s a -> FunctionBinding s a -> FunctionBinding s a
$cmin :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> FunctionBinding s a
max :: FunctionBinding s a -> FunctionBinding s a -> FunctionBinding s a
$cmax :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> FunctionBinding s a
>= :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c>= :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
> :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c> :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
<= :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c<= :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
< :: FunctionBinding s a -> FunctionBinding s a -> Bool
$c< :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Bool
compare :: FunctionBinding s a -> FunctionBinding s a -> Ordering
$ccompare :: forall s a.
(Ord s, Ord a) =>
FunctionBinding s a -> FunctionBinding s a -> Ordering
Ord, Int -> FunctionBinding s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a. (Show s, Show a) => Int -> FunctionBinding s a -> ShowS
forall s a. (Show s, Show a) => [FunctionBinding s a] -> ShowS
forall s a. (Show s, Show a) => FunctionBinding s a -> String
showList :: [FunctionBinding s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [FunctionBinding s a] -> ShowS
show :: FunctionBinding s a -> String
$cshow :: forall s a. (Show s, Show a) => FunctionBinding s a -> String
showsPrec :: Int -> FunctionBinding s a -> ShowS
$cshowsPrec :: forall s a. (Show s, Show a) => Int -> FunctionBinding s a -> ShowS
Show, forall s. Functor (FunctionBinding s)
forall s. Foldable (FunctionBinding s)
forall s (m :: * -> *) a.
Monad m =>
FunctionBinding s (m a) -> m (FunctionBinding s a)
forall s (f :: * -> *) a.
Applicative f =>
FunctionBinding s (f a) -> f (FunctionBinding s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FunctionBinding s a -> m (FunctionBinding s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FunctionBinding s a -> f (FunctionBinding s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FunctionBinding s a -> f (FunctionBinding s b)
sequence :: forall (m :: * -> *) a.
Monad m =>
FunctionBinding s (m a) -> m (FunctionBinding s a)
$csequence :: forall s (m :: * -> *) a.
Monad m =>
FunctionBinding s (m a) -> m (FunctionBinding s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FunctionBinding s a -> m (FunctionBinding s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FunctionBinding s a -> m (FunctionBinding s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
FunctionBinding s (f a) -> f (FunctionBinding s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
FunctionBinding s (f a) -> f (FunctionBinding s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FunctionBinding s a -> f (FunctionBinding s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FunctionBinding s a -> f (FunctionBinding s b)
Traversable)
makeFunctionBinding :: Text -> Expr s a -> FunctionBinding s a
makeFunctionBinding :: forall s a. Text -> Expr s a -> FunctionBinding s a
makeFunctionBinding Text
l Expr s a
t = forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding forall a. Maybe a
Nothing Text
l forall a. Maybe a
Nothing forall a. Maybe a
Nothing Expr s a
t
instance Bifunctor FunctionBinding where
first :: forall a b c.
(a -> b) -> FunctionBinding a c -> FunctionBinding b c
first a -> b
k (FunctionBinding Maybe a
src0 Text
label Maybe a
src1 Maybe a
src2 Expr a c
type_) =
forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
src0) Text
label (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
src1) (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe a
src2) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
type_)
second :: forall b c a.
(b -> c) -> FunctionBinding a b -> FunctionBinding a c
second = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
data FieldSelection s = FieldSelection
{ forall s. FieldSelection s -> Maybe s
fieldSelectionSrc0 :: Maybe s
, forall s. FieldSelection s -> Text
fieldSelectionLabel :: !Text
, forall s. FieldSelection s -> Maybe s
fieldSelectionSrc1 :: Maybe s
} deriving (FieldSelection s -> Constr
FieldSelection s -> DataType
forall {s}. Data s => Typeable (FieldSelection s)
forall s. Data s => FieldSelection s -> Constr
forall s. Data s => FieldSelection s -> DataType
forall s.
Data s =>
(forall b. Data b => b -> b)
-> FieldSelection s -> FieldSelection s
forall s u.
Data s =>
Int -> (forall d. Data d => d -> u) -> FieldSelection s -> u
forall s u.
Data s =>
(forall d. Data d => d -> u) -> FieldSelection s -> [u]
forall s r r'.
Data s =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
forall s r r'.
Data s =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
forall s (m :: * -> *).
(Data s, Monad m) =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
forall s (m :: * -> *).
(Data s, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
forall s (c :: * -> *).
Data s =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FieldSelection s)
forall s (c :: * -> *).
Data s =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FieldSelection s -> c (FieldSelection s)
forall s (t :: * -> *) (c :: * -> *).
(Data s, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (FieldSelection s))
forall s (t :: * -> * -> *) (c :: * -> *).
(Data s, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FieldSelection s))
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 (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FieldSelection s)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FieldSelection s -> c (FieldSelection s)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (FieldSelection s))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
$cgmapMo :: forall s (m :: * -> *).
(Data s, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
$cgmapMp :: forall s (m :: * -> *).
(Data s, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
$cgmapM :: forall s (m :: * -> *).
(Data s, Monad m) =>
(forall d. Data d => d -> m d)
-> FieldSelection s -> m (FieldSelection s)
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> FieldSelection s -> u
$cgmapQi :: forall s u.
Data s =>
Int -> (forall d. Data d => d -> u) -> FieldSelection s -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> FieldSelection s -> [u]
$cgmapQ :: forall s u.
Data s =>
(forall d. Data d => d -> u) -> FieldSelection s -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
$cgmapQr :: forall s r r'.
Data s =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
$cgmapQl :: forall s r r'.
Data s =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> FieldSelection s -> r
gmapT :: (forall b. Data b => b -> b)
-> FieldSelection s -> FieldSelection s
$cgmapT :: forall s.
Data s =>
(forall b. Data b => b -> b)
-> FieldSelection s -> FieldSelection s
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FieldSelection s))
$cdataCast2 :: forall s (t :: * -> * -> *) (c :: * -> *).
(Data s, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (FieldSelection s))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (FieldSelection s))
$cdataCast1 :: forall s (t :: * -> *) (c :: * -> *).
(Data s, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (FieldSelection s))
dataTypeOf :: FieldSelection s -> DataType
$cdataTypeOf :: forall s. Data s => FieldSelection s -> DataType
toConstr :: FieldSelection s -> Constr
$ctoConstr :: forall s. Data s => FieldSelection s -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FieldSelection s)
$cgunfold :: forall s (c :: * -> *).
Data s =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (FieldSelection s)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FieldSelection s -> c (FieldSelection s)
$cgfoldl :: forall s (c :: * -> *).
Data s =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> FieldSelection s -> c (FieldSelection s)
Data, FieldSelection s -> FieldSelection s -> Bool
forall s. Eq s => FieldSelection s -> FieldSelection s -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FieldSelection s -> FieldSelection s -> Bool
$c/= :: forall s. Eq s => FieldSelection s -> FieldSelection s -> Bool
== :: FieldSelection s -> FieldSelection s -> Bool
$c== :: forall s. Eq s => FieldSelection s -> FieldSelection s -> Bool
Eq, forall a. Eq a => a -> FieldSelection a -> Bool
forall a. Num a => FieldSelection a -> a
forall a. Ord a => FieldSelection a -> a
forall m. Monoid m => FieldSelection m -> m
forall a. FieldSelection a -> Bool
forall a. FieldSelection a -> Int
forall a. FieldSelection a -> [a]
forall a. (a -> a -> a) -> FieldSelection a -> a
forall m a. Monoid m => (a -> m) -> FieldSelection a -> m
forall b a. (b -> a -> b) -> b -> FieldSelection a -> b
forall a b. (a -> b -> b) -> b -> FieldSelection a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => FieldSelection a -> a
$cproduct :: forall a. Num a => FieldSelection a -> a
sum :: forall a. Num a => FieldSelection a -> a
$csum :: forall a. Num a => FieldSelection a -> a
minimum :: forall a. Ord a => FieldSelection a -> a
$cminimum :: forall a. Ord a => FieldSelection a -> a
maximum :: forall a. Ord a => FieldSelection a -> a
$cmaximum :: forall a. Ord a => FieldSelection a -> a
elem :: forall a. Eq a => a -> FieldSelection a -> Bool
$celem :: forall a. Eq a => a -> FieldSelection a -> Bool
length :: forall a. FieldSelection a -> Int
$clength :: forall a. FieldSelection a -> Int
null :: forall a. FieldSelection a -> Bool
$cnull :: forall a. FieldSelection a -> Bool
toList :: forall a. FieldSelection a -> [a]
$ctoList :: forall a. FieldSelection a -> [a]
foldl1 :: forall a. (a -> a -> a) -> FieldSelection a -> a
$cfoldl1 :: forall a. (a -> a -> a) -> FieldSelection a -> a
foldr1 :: forall a. (a -> a -> a) -> FieldSelection a -> a
$cfoldr1 :: forall a. (a -> a -> a) -> FieldSelection a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> FieldSelection a -> b
$cfoldl' :: forall b a. (b -> a -> b) -> b -> FieldSelection a -> b
foldl :: forall b a. (b -> a -> b) -> b -> FieldSelection a -> b
$cfoldl :: forall b a. (b -> a -> b) -> b -> FieldSelection a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> FieldSelection a -> b
$cfoldr' :: forall a b. (a -> b -> b) -> b -> FieldSelection a -> b
foldr :: forall a b. (a -> b -> b) -> b -> FieldSelection a -> b
$cfoldr :: forall a b. (a -> b -> b) -> b -> FieldSelection a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> FieldSelection a -> m
$cfoldMap' :: forall m a. Monoid m => (a -> m) -> FieldSelection a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> FieldSelection a -> m
$cfoldMap :: forall m a. Monoid m => (a -> m) -> FieldSelection a -> m
fold :: forall m. Monoid m => FieldSelection m -> m
$cfold :: forall m. Monoid m => FieldSelection m -> m
Foldable, forall a b. a -> FieldSelection b -> FieldSelection a
forall a b. (a -> b) -> FieldSelection a -> FieldSelection b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> FieldSelection b -> FieldSelection a
$c<$ :: forall a b. a -> FieldSelection b -> FieldSelection a
fmap :: forall a b. (a -> b) -> FieldSelection a -> FieldSelection b
$cfmap :: forall a b. (a -> b) -> FieldSelection a -> FieldSelection b
Functor, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s x. Rep (FieldSelection s) x -> FieldSelection s
forall s x. FieldSelection s -> Rep (FieldSelection s) x
$cto :: forall s x. Rep (FieldSelection s) x -> FieldSelection s
$cfrom :: forall s x. FieldSelection s -> Rep (FieldSelection s) x
Generic, forall s (m :: * -> *).
(Lift s, Quote m) =>
FieldSelection s -> m Exp
forall s (m :: * -> *).
(Lift s, Quote m) =>
FieldSelection s -> Code m (FieldSelection s)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => FieldSelection s -> m Exp
forall (m :: * -> *).
Quote m =>
FieldSelection s -> Code m (FieldSelection s)
liftTyped :: forall (m :: * -> *).
Quote m =>
FieldSelection s -> Code m (FieldSelection s)
$cliftTyped :: forall s (m :: * -> *).
(Lift s, Quote m) =>
FieldSelection s -> Code m (FieldSelection s)
lift :: forall (m :: * -> *). Quote m => FieldSelection s -> m Exp
$clift :: forall s (m :: * -> *).
(Lift s, Quote m) =>
FieldSelection s -> m Exp
Lift, forall s. NFData s => FieldSelection s -> ()
forall a. (a -> ()) -> NFData a
rnf :: FieldSelection s -> ()
$crnf :: forall s. NFData s => FieldSelection s -> ()
NFData, FieldSelection s -> FieldSelection s -> Bool
FieldSelection s -> FieldSelection s -> Ordering
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
forall {s}. Ord s => Eq (FieldSelection s)
forall s. Ord s => FieldSelection s -> FieldSelection s -> Bool
forall s. Ord s => FieldSelection s -> FieldSelection s -> Ordering
forall s.
Ord s =>
FieldSelection s -> FieldSelection s -> FieldSelection s
min :: FieldSelection s -> FieldSelection s -> FieldSelection s
$cmin :: forall s.
Ord s =>
FieldSelection s -> FieldSelection s -> FieldSelection s
max :: FieldSelection s -> FieldSelection s -> FieldSelection s
$cmax :: forall s.
Ord s =>
FieldSelection s -> FieldSelection s -> FieldSelection s
>= :: FieldSelection s -> FieldSelection s -> Bool
$c>= :: forall s. Ord s => FieldSelection s -> FieldSelection s -> Bool
> :: FieldSelection s -> FieldSelection s -> Bool
$c> :: forall s. Ord s => FieldSelection s -> FieldSelection s -> Bool
<= :: FieldSelection s -> FieldSelection s -> Bool
$c<= :: forall s. Ord s => FieldSelection s -> FieldSelection s -> Bool
< :: FieldSelection s -> FieldSelection s -> Bool
$c< :: forall s. Ord s => FieldSelection s -> FieldSelection s -> Bool
compare :: FieldSelection s -> FieldSelection s -> Ordering
$ccompare :: forall s. Ord s => FieldSelection s -> FieldSelection s -> Ordering
Ord, Int -> FieldSelection s -> ShowS
forall s. Show s => Int -> FieldSelection s -> ShowS
forall s. Show s => [FieldSelection s] -> ShowS
forall s. Show s => FieldSelection s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FieldSelection s] -> ShowS
$cshowList :: forall s. Show s => [FieldSelection s] -> ShowS
show :: FieldSelection s -> String
$cshow :: forall s. Show s => FieldSelection s -> String
showsPrec :: Int -> FieldSelection s -> ShowS
$cshowsPrec :: forall s. Show s => Int -> FieldSelection s -> ShowS
Show, Functor FieldSelection
Foldable FieldSelection
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (m :: * -> *) a.
Monad m =>
FieldSelection (m a) -> m (FieldSelection a)
forall (f :: * -> *) a.
Applicative f =>
FieldSelection (f a) -> f (FieldSelection a)
forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FieldSelection a -> m (FieldSelection b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FieldSelection a -> f (FieldSelection b)
sequence :: forall (m :: * -> *) a.
Monad m =>
FieldSelection (m a) -> m (FieldSelection a)
$csequence :: forall (m :: * -> *) a.
Monad m =>
FieldSelection (m a) -> m (FieldSelection a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FieldSelection a -> m (FieldSelection b)
$cmapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> FieldSelection a -> m (FieldSelection b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
FieldSelection (f a) -> f (FieldSelection a)
$csequenceA :: forall (f :: * -> *) a.
Applicative f =>
FieldSelection (f a) -> f (FieldSelection a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FieldSelection a -> f (FieldSelection b)
$ctraverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> FieldSelection a -> f (FieldSelection b)
Traversable)
makeFieldSelection :: Text -> FieldSelection s
makeFieldSelection :: forall s. Text -> FieldSelection s
makeFieldSelection Text
t = forall s. Maybe s -> Text -> Maybe s -> FieldSelection s
FieldSelection forall a. Maybe a
Nothing Text
t forall a. Maybe a
Nothing
data WithComponent = WithLabel Text | WithQuestion
deriving (Typeable WithComponent
WithComponent -> Constr
WithComponent -> DataType
(forall b. Data b => b -> b) -> WithComponent -> WithComponent
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) -> WithComponent -> u
forall u. (forall d. Data d => d -> u) -> WithComponent -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c WithComponent
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> WithComponent -> c WithComponent
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c WithComponent)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c WithComponent)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> WithComponent -> m WithComponent
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> WithComponent -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> WithComponent -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> WithComponent -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> WithComponent -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> WithComponent -> r
gmapT :: (forall b. Data b => b -> b) -> WithComponent -> WithComponent
$cgmapT :: (forall b. Data b => b -> b) -> WithComponent -> WithComponent
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c WithComponent)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c WithComponent)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c WithComponent)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c WithComponent)
dataTypeOf :: WithComponent -> DataType
$cdataTypeOf :: WithComponent -> DataType
toConstr :: WithComponent -> Constr
$ctoConstr :: WithComponent -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c WithComponent
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c WithComponent
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> WithComponent -> c WithComponent
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> WithComponent -> c WithComponent
Data, WithComponent -> WithComponent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WithComponent -> WithComponent -> Bool
$c/= :: WithComponent -> WithComponent -> Bool
== :: WithComponent -> WithComponent -> Bool
$c== :: WithComponent -> WithComponent -> Bool
Eq, forall x. Rep WithComponent x -> WithComponent
forall x. WithComponent -> Rep WithComponent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep WithComponent x -> WithComponent
$cfrom :: forall x. WithComponent -> Rep WithComponent x
Generic, forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => WithComponent -> m Exp
forall (m :: * -> *).
Quote m =>
WithComponent -> Code m WithComponent
liftTyped :: forall (m :: * -> *).
Quote m =>
WithComponent -> Code m WithComponent
$cliftTyped :: forall (m :: * -> *).
Quote m =>
WithComponent -> Code m WithComponent
lift :: forall (m :: * -> *). Quote m => WithComponent -> m Exp
$clift :: forall (m :: * -> *). Quote m => WithComponent -> m Exp
Lift, WithComponent -> ()
forall a. (a -> ()) -> NFData a
rnf :: WithComponent -> ()
$crnf :: WithComponent -> ()
NFData, Eq WithComponent
WithComponent -> WithComponent -> Bool
WithComponent -> WithComponent -> Ordering
WithComponent -> WithComponent -> WithComponent
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
min :: WithComponent -> WithComponent -> WithComponent
$cmin :: WithComponent -> WithComponent -> WithComponent
max :: WithComponent -> WithComponent -> WithComponent
$cmax :: WithComponent -> WithComponent -> WithComponent
>= :: WithComponent -> WithComponent -> Bool
$c>= :: WithComponent -> WithComponent -> Bool
> :: WithComponent -> WithComponent -> Bool
$c> :: WithComponent -> WithComponent -> Bool
<= :: WithComponent -> WithComponent -> Bool
$c<= :: WithComponent -> WithComponent -> Bool
< :: WithComponent -> WithComponent -> Bool
$c< :: WithComponent -> WithComponent -> Bool
compare :: WithComponent -> WithComponent -> Ordering
$ccompare :: WithComponent -> WithComponent -> Ordering
Ord, Int -> WithComponent -> ShowS
[WithComponent] -> ShowS
WithComponent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WithComponent] -> ShowS
$cshowList :: [WithComponent] -> ShowS
show :: WithComponent -> String
$cshow :: WithComponent -> String
showsPrec :: Int -> WithComponent -> ShowS
$cshowsPrec :: Int -> WithComponent -> ShowS
Show)
data Expr s a
= Const Const
| Var Var
| Lam (Maybe CharacterSet) (FunctionBinding s a) (Expr s a)
| Pi (Maybe CharacterSet) Text (Expr s a) (Expr s a)
| App (Expr s a) (Expr s a)
| Let (Binding s a) (Expr s a)
| Annot (Expr s a) (Expr s a)
| Bool
| BoolLit Bool
| BoolAnd (Expr s a) (Expr s a)
| BoolOr (Expr s a) (Expr s a)
| BoolEQ (Expr s a) (Expr s a)
| BoolNE (Expr s a) (Expr s a)
| BoolIf (Expr s a) (Expr s a) (Expr s a)
| Natural
| NaturalLit Natural
| NaturalFold
| NaturalBuild
| NaturalIsZero
| NaturalEven
| NaturalOdd
| NaturalToInteger
| NaturalShow
| NaturalSubtract
| NaturalPlus (Expr s a) (Expr s a)
| NaturalTimes (Expr s a) (Expr s a)
| Integer
| IntegerLit Integer
| IntegerClamp
| IntegerNegate
| IntegerShow
| IntegerToDouble
| Double
| DoubleLit DhallDouble
| DoubleShow
| Text
| TextLit (Chunks s a)
| TextAppend (Expr s a) (Expr s a)
| TextReplace
| TextShow
| Date
| DateLiteral Time.Day
| Time
| TimeLiteral
Time.TimeOfDay
Word
| TimeZone
| TimeZoneLiteral Time.TimeZone
| List
| ListLit (Maybe (Expr s a)) (Seq (Expr s a))
| ListAppend (Expr s a) (Expr s a)
| ListBuild
| ListFold
| ListLength
| ListHead
| ListLast
| ListIndexed
| ListReverse
| Optional
| Some (Expr s a)
| None
| Record (Map Text (RecordField s a))
| RecordLit (Map Text (RecordField s a))
| Union (Map Text (Maybe (Expr s a)))
| Combine (Maybe CharacterSet) (Maybe Text) (Expr s a) (Expr s a)
| CombineTypes (Maybe CharacterSet) (Expr s a) (Expr s a)
| Prefer (Maybe CharacterSet) (PreferAnnotation s a) (Expr s a) (Expr s a)
| RecordCompletion (Expr s a) (Expr s a)
| Merge (Expr s a) (Expr s a) (Maybe (Expr s a))
| ToMap (Expr s a) (Maybe (Expr s a))
| ShowConstructor (Expr s a)
| Field (Expr s a) (FieldSelection s)
| Project (Expr s a) (Either [Text] (Expr s a))
| Assert (Expr s a)
| Equivalent (Maybe CharacterSet) (Expr s a) (Expr s a)
| With (Expr s a) (NonEmpty WithComponent) (Expr s a)
| Note s (Expr s a)
| ImportAlt (Expr s a) (Expr s a)
| Embed a
deriving (forall a. Expr s a -> Bool
forall s a. Eq a => a -> Expr s a -> Bool
forall s a. Num a => Expr s a -> a
forall s a. Ord a => Expr s a -> a
forall m a. Monoid m => (a -> m) -> Expr s a -> m
forall s m. Monoid m => Expr s m -> m
forall s a. Expr s a -> Bool
forall s a. Expr s a -> Int
forall s a. Expr s a -> [a]
forall a b. (a -> b -> b) -> b -> Expr s a -> b
forall s a. (a -> a -> a) -> Expr s a -> a
forall s m a. Monoid m => (a -> m) -> Expr s a -> m
forall s b a. (b -> a -> b) -> b -> Expr s a -> b
forall s a b. (a -> b -> b) -> b -> Expr s a -> b
forall (t :: * -> *).
(forall m. Monoid m => t m -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall m a. Monoid m => (a -> m) -> t a -> m)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall a b. (a -> b -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall b a. (b -> a -> b) -> b -> t a -> b)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. (a -> a -> a) -> t a -> a)
-> (forall a. t a -> [a])
-> (forall a. t a -> Bool)
-> (forall a. t a -> Int)
-> (forall a. Eq a => a -> t a -> Bool)
-> (forall a. Ord a => t a -> a)
-> (forall a. Ord a => t a -> a)
-> (forall a. Num a => t a -> a)
-> (forall a. Num a => t a -> a)
-> Foldable t
product :: forall a. Num a => Expr s a -> a
$cproduct :: forall s a. Num a => Expr s a -> a
sum :: forall a. Num a => Expr s a -> a
$csum :: forall s a. Num a => Expr s a -> a
minimum :: forall a. Ord a => Expr s a -> a
$cminimum :: forall s a. Ord a => Expr s a -> a
maximum :: forall a. Ord a => Expr s a -> a
$cmaximum :: forall s a. Ord a => Expr s a -> a
elem :: forall a. Eq a => a -> Expr s a -> Bool
$celem :: forall s a. Eq a => a -> Expr s a -> Bool
length :: forall a. Expr s a -> Int
$clength :: forall s a. Expr s a -> Int
null :: forall a. Expr s a -> Bool
$cnull :: forall s a. Expr s a -> Bool
toList :: forall a. Expr s a -> [a]
$ctoList :: forall s a. Expr s a -> [a]
foldl1 :: forall a. (a -> a -> a) -> Expr s a -> a
$cfoldl1 :: forall s a. (a -> a -> a) -> Expr s a -> a
foldr1 :: forall a. (a -> a -> a) -> Expr s a -> a
$cfoldr1 :: forall s a. (a -> a -> a) -> Expr s a -> a
foldl' :: forall b a. (b -> a -> b) -> b -> Expr s a -> b
$cfoldl' :: forall s b a. (b -> a -> b) -> b -> Expr s a -> b
foldl :: forall b a. (b -> a -> b) -> b -> Expr s a -> b
$cfoldl :: forall s b a. (b -> a -> b) -> b -> Expr s a -> b
foldr' :: forall a b. (a -> b -> b) -> b -> Expr s a -> b
$cfoldr' :: forall s a b. (a -> b -> b) -> b -> Expr s a -> b
foldr :: forall a b. (a -> b -> b) -> b -> Expr s a -> b
$cfoldr :: forall s a b. (a -> b -> b) -> b -> Expr s a -> b
foldMap' :: forall m a. Monoid m => (a -> m) -> Expr s a -> m
$cfoldMap' :: forall s m a. Monoid m => (a -> m) -> Expr s a -> m
foldMap :: forall m a. Monoid m => (a -> m) -> Expr s a -> m
$cfoldMap :: forall s m a. Monoid m => (a -> m) -> Expr s a -> m
fold :: forall m. Monoid m => Expr s m -> m
$cfold :: forall s m. Monoid m => Expr s m -> m
Foldable, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall s a x. Rep (Expr s a) x -> Expr s a
forall s a x. Expr s a -> Rep (Expr s a) x
$cto :: forall s a x. Rep (Expr s a) x -> Expr s a
$cfrom :: forall s a x. Expr s a -> Rep (Expr s a) x
Generic, forall s. Functor (Expr s)
forall s. Foldable (Expr s)
forall s (m :: * -> *) a. Monad m => Expr s (m a) -> m (Expr s a)
forall s (f :: * -> *) a.
Applicative f =>
Expr s (f a) -> f (Expr s a)
forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Expr s a -> m (Expr s b)
forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Expr s a -> f (Expr s b)
forall (t :: * -> *).
Functor t
-> Foldable t
-> (forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> t a -> f (t b))
-> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a))
-> (forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> t a -> m (t b))
-> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a))
-> Traversable t
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Expr s a -> f (Expr s b)
sequence :: forall (m :: * -> *) a. Monad m => Expr s (m a) -> m (Expr s a)
$csequence :: forall s (m :: * -> *) a. Monad m => Expr s (m a) -> m (Expr s a)
mapM :: forall (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Expr s a -> m (Expr s b)
$cmapM :: forall s (m :: * -> *) a b.
Monad m =>
(a -> m b) -> Expr s a -> m (Expr s b)
sequenceA :: forall (f :: * -> *) a.
Applicative f =>
Expr s (f a) -> f (Expr s a)
$csequenceA :: forall s (f :: * -> *) a.
Applicative f =>
Expr s (f a) -> f (Expr s a)
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Expr s a -> f (Expr s b)
$ctraverse :: forall s (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Expr s a -> f (Expr s b)
Traversable, Int -> Expr s a -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall s a. (Show s, Show a) => Int -> Expr s a -> ShowS
forall s a. (Show s, Show a) => [Expr s a] -> ShowS
forall s a. (Show s, Show a) => Expr s a -> String
showList :: [Expr s a] -> ShowS
$cshowList :: forall s a. (Show s, Show a) => [Expr s a] -> ShowS
show :: Expr s a -> String
$cshow :: forall s a. (Show s, Show a) => Expr s a -> String
showsPrec :: Int -> Expr s a -> ShowS
$cshowsPrec :: forall s a. (Show s, Show a) => Int -> Expr s a -> ShowS
Show, Expr s a -> Constr
Expr s a -> DataType
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 {s} {a}. (Data s, Data a) => Typeable (Expr s a)
forall s a. (Data s, Data a) => Expr s a -> Constr
forall s a. (Data s, Data a) => Expr s a -> DataType
forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Expr s a -> Expr s a
forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Expr s a -> u
forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Expr s a -> [u]
forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Expr s a)
forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Expr s a -> c (Expr s a)
forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Expr s a))
forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expr s a))
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Expr s a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Expr s a -> c (Expr s a)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expr s a))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
$cgmapMo :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
$cgmapMp :: forall s a (m :: * -> *).
(Data s, Data a, MonadPlus m) =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
$cgmapM :: forall s a (m :: * -> *).
(Data s, Data a, Monad m) =>
(forall d. Data d => d -> m d) -> Expr s a -> m (Expr s a)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Expr s a -> u
$cgmapQi :: forall s a u.
(Data s, Data a) =>
Int -> (forall d. Data d => d -> u) -> Expr s a -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> Expr s a -> [u]
$cgmapQ :: forall s a u.
(Data s, Data a) =>
(forall d. Data d => d -> u) -> Expr s a -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
$cgmapQr :: forall s a r r'.
(Data s, Data a) =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
$cgmapQl :: forall s a r r'.
(Data s, Data a) =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> Expr s a -> r
gmapT :: (forall b. Data b => b -> b) -> Expr s a -> Expr s a
$cgmapT :: forall s a.
(Data s, Data a) =>
(forall b. Data b => b -> b) -> Expr s a -> Expr s a
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expr s a))
$cdataCast2 :: forall s a (t :: * -> * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expr s a))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (Expr s a))
$cdataCast1 :: forall s a (t :: * -> *) (c :: * -> *).
(Data s, Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (Expr s a))
dataTypeOf :: Expr s a -> DataType
$cdataTypeOf :: forall s a. (Data s, Data a) => Expr s a -> DataType
toConstr :: Expr s a -> Constr
$ctoConstr :: forall s a. (Data s, Data a) => Expr s a -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Expr s a)
$cgunfold :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (Expr s a)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Expr s a -> c (Expr s a)
$cgfoldl :: forall s a (c :: * -> *).
(Data s, Data a) =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> Expr s a -> c (Expr s a)
Data, forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Expr s a -> m Exp
forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Expr s a -> Code m (Expr s a)
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => Expr s a -> m Exp
forall (m :: * -> *). Quote m => Expr s a -> Code m (Expr s a)
liftTyped :: forall (m :: * -> *). Quote m => Expr s a -> Code m (Expr s a)
$cliftTyped :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Expr s a -> Code m (Expr s a)
lift :: forall (m :: * -> *). Quote m => Expr s a -> m Exp
$clift :: forall s a (m :: * -> *).
(Lift s, Lift a, Quote m) =>
Expr s a -> m Exp
Lift, forall a. (a -> ()) -> NFData a
forall s a. (NFData s, NFData a) => Expr s a -> ()
rnf :: Expr s a -> ()
$crnf :: forall s a. (NFData s, NFData a) => Expr s a -> ()
NFData)
deriving instance (Eq s, Eq a) => Eq (Expr s a)
deriving instance (Ord s, Ord a) => Ord (Expr s a)
instance Functor (Expr s) where
fmap :: forall a b. (a -> b) -> Expr s a -> Expr s b
fmap a -> b
f (Embed a
a) = forall s a. a -> Expr s a
Embed (a -> b
f a
a)
fmap a -> b
f (Let Binding s a
b Expr s a
e2) = forall s a. Binding s a -> Expr s a -> Expr s a
Let (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f Binding s a
b) (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f Expr s a
e2)
fmap a -> b
f (Note s
s Expr s a
e1) = forall s a. s -> Expr s a -> Expr s a
Note s
s (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f Expr s a
e1)
fmap a -> b
f (Record Map Text (RecordField s a)
a) = forall s a. Map Text (RecordField s a) -> Expr s a
Record forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
fmap a -> b
f (RecordLit Map Text (RecordField s a)
a) = forall s a. Map Text (RecordField s a) -> Expr s a
RecordLit forall a b. (a -> b) -> a -> b
$ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
fmap a -> b
f (Lam Maybe CharacterSet
cs FunctionBinding s a
fb Expr s a
e) = forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam Maybe CharacterSet
cs (a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> FunctionBinding s a
fb) (a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a
e)
fmap a -> b
f (Field Expr s a
a FieldSelection s
b) = forall s a. Expr s a -> FieldSelection s -> Expr s a
Field (a -> b
f forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a
a) FieldSelection s
b
fmap a -> b
f Expr s a
expression = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f) Expr s a
expression
{-# INLINABLE fmap #-}
instance Applicative (Expr s) where
pure :: forall a. a -> Expr s a
pure = forall s a. a -> Expr s a
Embed
<*> :: forall a b. Expr s (a -> b) -> Expr s a -> Expr s b
(<*>) = forall (m :: * -> *) a b. Monad m => m (a -> b) -> m a -> m b
Control.Monad.ap
instance Monad (Expr s) where
return :: forall a. a -> Expr s a
return = forall (f :: * -> *) a. Applicative f => a -> f a
pure
Expr s a
expression >>= :: forall a b. Expr s a -> (a -> Expr s b) -> Expr s b
>>= a -> Expr s b
k = case Expr s a
expression of
Embed a
a -> a -> Expr s b
k a
a
Let Binding s a
a Expr s a
b -> forall s a. Binding s a -> Expr s a -> Expr s a
Let (Binding s a -> Binding s b
adaptBinding Binding s a
a) (Expr s a
b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
Note s
a Expr s a
b -> forall s a. s -> Expr s a -> Expr s a
Note s
a (Expr s a
b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
Record Map Text (RecordField s a)
a -> forall s a. Map Text (RecordField s a) -> Expr s a
Record forall a b. (a -> b) -> a -> b
$ RecordField s a -> RecordField s b
bindRecordKeyValues forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
RecordLit Map Text (RecordField s a)
a -> forall s a. Map Text (RecordField s a) -> Expr s a
RecordLit forall a b. (a -> b) -> a -> b
$ RecordField s a -> RecordField s b
bindRecordKeyValues forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
Lam Maybe CharacterSet
cs FunctionBinding s a
a Expr s a
b -> forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam Maybe CharacterSet
cs (FunctionBinding s a -> FunctionBinding s b
adaptFunctionBinding FunctionBinding s a
a) (Expr s a
b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
Field Expr s a
a FieldSelection s
b -> forall s a. Expr s a -> FieldSelection s -> Expr s a
Field (Expr s a
a forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k) FieldSelection s
b
Expr s a
_ -> forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions (forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k) Expr s a
expression
where
bindRecordKeyValues :: RecordField s a -> RecordField s b
bindRecordKeyValues (RecordField Maybe s
s0 Expr s a
e Maybe s
s1 Maybe s
s2) =
forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField Maybe s
s0 (Expr s a
e forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k) Maybe s
s1 Maybe s
s2
adaptBinding :: Binding s a -> Binding s b
adaptBinding (Binding Maybe s
src0 Text
c Maybe s
src1 Maybe (Maybe s, Expr s a)
d Maybe s
src2 Expr s a
e) =
forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding Maybe s
src0 Text
c Maybe s
src1 (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall {a}. (a, Expr s a) -> (a, Expr s b)
adaptBindingAnnotation Maybe (Maybe s, Expr s a)
d) Maybe s
src2 (Expr s a
e forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
adaptFunctionBinding :: FunctionBinding s a -> FunctionBinding s b
adaptFunctionBinding (FunctionBinding Maybe s
src0 Text
label Maybe s
src1 Maybe s
src2 Expr s a
type_) =
forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding Maybe s
src0 Text
label Maybe s
src1 Maybe s
src2 (Expr s a
type_ forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
adaptBindingAnnotation :: (a, Expr s a) -> (a, Expr s b)
adaptBindingAnnotation (a
src3, Expr s a
f) = (a
src3, Expr s a
f forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= a -> Expr s b
k)
instance Bifunctor Expr where
first :: forall a b c. (a -> b) -> Expr a c -> Expr b c
first a -> b
k (Note a
a Expr a c
b ) = forall s a. s -> Expr s a -> Expr s a
Note (a -> b
k a
a) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
b)
first a -> b
_ (Embed c
a ) = forall s a. a -> Expr s a
Embed c
a
first a -> b
k (Let Binding a c
a Expr a c
b ) = forall s a. Binding s a -> Expr s a -> Expr s a
Let (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Binding a c
a) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
b)
first a -> b
k (Record Map Text (RecordField a c)
a ) = forall s a. Map Text (RecordField s a) -> Expr s a
Record forall a b. (a -> b) -> a -> b
$ forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField a c)
a
first a -> b
k (RecordLit Map Text (RecordField a c)
a) = forall s a. Map Text (RecordField s a) -> Expr s a
RecordLit forall a b. (a -> b) -> a -> b
$ forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField a c)
a
first a -> b
k (Lam Maybe CharacterSet
cs FunctionBinding a c
a Expr a c
b ) = forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam Maybe CharacterSet
cs (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k FunctionBinding a c
a) (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
b)
first a -> b
k (Field Expr a c
a FieldSelection a
b ) = forall s a. Expr s a -> FieldSelection s -> Expr s a
Field (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k Expr a c
a) (a -> b
k forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> FieldSelection a
b)
first a -> b
k Expr a c
expression = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions (forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first a -> b
k) Expr a c
expression
second :: forall b c a. (b -> c) -> Expr a b -> Expr a c
second = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
instance IsString (Expr s a) where
fromString :: String -> Expr s a
fromString String
str = forall s a. Var -> Expr s a
Var (forall a. IsString a => String -> a
fromString String
str)
instance Pretty a => Pretty (Expr s a) where
pretty :: forall ann. Expr s a -> Doc ann
pretty = forall ann xxx. Doc ann -> Doc xxx
Pretty.unAnnotate forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a s. Pretty a => Expr s a -> Doc Ann
prettyExpr
multiLet :: Binding s a -> Expr s a -> MultiLet s a
multiLet :: forall s a. Binding s a -> Expr s a -> MultiLet s a
multiLet Binding s a
b0 = \case
Let Binding s a
b1 Expr s a
e1 ->
let MultiLet NonEmpty (Binding s a)
bs Expr s a
e = forall s a. Binding s a -> Expr s a -> MultiLet s a
multiLet Binding s a
b1 Expr s a
e1
in forall s a. NonEmpty (Binding s a) -> Expr s a -> MultiLet s a
MultiLet (forall a. a -> NonEmpty a -> NonEmpty a
NonEmpty.cons Binding s a
b0 NonEmpty (Binding s a)
bs) Expr s a
e
Expr s a
e -> forall s a. NonEmpty (Binding s a) -> Expr s a -> MultiLet s a
MultiLet (Binding s a
b0 forall a. a -> [a] -> NonEmpty a
:| []) Expr s a
e
wrapInLets :: Foldable f => f (Binding s a) -> Expr s a -> Expr s a
wrapInLets :: forall (f :: * -> *) s a.
Foldable f =>
f (Binding s a) -> Expr s a -> Expr s a
wrapInLets f (Binding s a)
bs Expr s a
e = forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr forall s a. Binding s a -> Expr s a -> Expr s a
Let Expr s a
e f (Binding s a)
bs
data MultiLet s a = MultiLet (NonEmpty (Binding s a)) (Expr s a)
subExpressions
:: Applicative f => (Expr s a -> f (Expr s a)) -> Expr s a -> f (Expr s a)
subExpressions :: forall (f :: * -> *) s a.
Applicative f =>
(Expr s a -> f (Expr s a)) -> Expr s a -> f (Expr s a)
subExpressions = forall (f :: * -> *) a s b.
Applicative f =>
(a -> f (Expr s b))
-> (Expr s a -> f (Expr s b)) -> Expr s a -> f (Expr s b)
subExpressionsWith (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. a -> Expr s a
Embed)
{-# INLINABLE subExpressions #-}
subExpressionsWith
:: Applicative f => (a -> f (Expr s b)) -> (Expr s a -> f (Expr s b)) -> Expr s a -> f (Expr s b)
subExpressionsWith :: forall (f :: * -> *) a s b.
Applicative f =>
(a -> f (Expr s b))
-> (Expr s a -> f (Expr s b)) -> Expr s a -> f (Expr s b)
subExpressionsWith a -> f (Expr s b)
h Expr s a -> f (Expr s b)
_ (Embed a
a) = a -> f (Expr s b)
h a
a
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (Note s
a Expr s a
b) = forall s a. s -> Expr s a -> Expr s a
Note s
a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr s b)
f Expr s a
b
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (Let Binding s a
a Expr s a
b) = forall s a. Binding s a -> Expr s a -> Expr s a
Let forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) s a b.
Applicative f =>
(Expr s a -> f (Expr s b)) -> Binding s a -> f (Binding s b)
bindingExprs Expr s a -> f (Expr s b)
f Binding s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr s b)
f Expr s a
b
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (Record Map Text (RecordField s a)
a) = forall s a. Map Text (RecordField s a) -> Expr s a
Record forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (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) Map Text (RecordField s a)
a
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (RecordLit Map Text (RecordField s a)
a) = forall s a. Map Text (RecordField s a) -> Expr s a
RecordLit forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (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) Map Text (RecordField s a)
a
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (Lam Maybe CharacterSet
cs FunctionBinding s a
fb Expr s a
e) = forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam Maybe CharacterSet
cs forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) s a b.
Applicative f =>
(Expr s a -> f (Expr s b))
-> FunctionBinding s a -> f (FunctionBinding s b)
functionBindingExprs Expr s a -> f (Expr s b)
f FunctionBinding s a
fb 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
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f (Field Expr s a
a FieldSelection s
b) = forall s a. Expr s a -> FieldSelection s -> Expr s a
Field forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr s b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure FieldSelection s
b
subExpressionsWith a -> f (Expr s b)
_ Expr s a -> f (Expr s b)
f Expr s a
expression = forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions Expr s a -> f (Expr s b)
f Expr s a
expression
{-# INLINABLE subExpressionsWith #-}
unsafeSubExpressions
:: Applicative f => (Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions :: forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Const Const
c) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Const -> Expr s a
Const Const
c)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Var Var
v) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Var -> Expr s a
Var Var
v)
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Pi Maybe CharacterSet
cs Text
a Expr s a
b Expr s a
c) = forall s a.
Maybe CharacterSet -> Text -> Expr s a -> Expr s a -> Expr s a
Pi Maybe CharacterSet
cs Text
a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
c
unsafeSubExpressions Expr s a -> f (Expr t b)
f (App Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
App forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Annot Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
Annot forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Bool = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Bool
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (BoolLit Bool
b) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Bool -> Expr s a
BoolLit Bool
b)
unsafeSubExpressions Expr s a -> f (Expr t b)
f (BoolAnd Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
BoolAnd forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (BoolOr Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
BoolOr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (BoolEQ Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
BoolEQ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (BoolNE Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
BoolNE forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (BoolIf Expr s a
a Expr s a
b Expr s a
c) = forall s a. Expr s a -> Expr s a -> Expr s a -> Expr s a
BoolIf forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
c
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Natural = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Natural
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (NaturalLit Natural
n) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Natural -> Expr s a
NaturalLit Natural
n)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalFold = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalFold
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalBuild = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalBuild
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalIsZero = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalIsZero
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalEven = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalEven
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalOdd = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalOdd
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalToInteger = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalToInteger
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalShow = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalShow
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
NaturalSubtract = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
NaturalSubtract
unsafeSubExpressions Expr s a -> f (Expr t b)
f (NaturalPlus Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
NaturalPlus forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (NaturalTimes Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
NaturalTimes forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Integer = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Integer
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (IntegerLit Integer
n) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Integer -> Expr s a
IntegerLit Integer
n)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
IntegerClamp = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
IntegerClamp
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
IntegerNegate = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
IntegerNegate
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
IntegerShow = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
IntegerShow
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
IntegerToDouble = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
IntegerToDouble
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Double = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Double
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (DoubleLit DhallDouble
n) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. DhallDouble -> Expr s a
DoubleLit DhallDouble
n)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
DoubleShow = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
DoubleShow
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Text = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Text
unsafeSubExpressions Expr s a -> f (Expr t b)
f (TextLit Chunks s a
chunks) =
forall s a. Chunks s a -> Expr s a
TextLit forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Chunks s a -> f (Chunks t b)
chunkExprs Expr s a -> f (Expr t b)
f Chunks s a
chunks
unsafeSubExpressions Expr s a -> f (Expr t b)
f (TextAppend Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
TextAppend forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
TextReplace = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
TextReplace
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
TextShow = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
TextShow
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Date = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Date
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (DateLiteral Day
a) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. Day -> Expr s a
DateLiteral Day
a)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Time = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Time
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (TimeLiteral TimeOfDay
a Word
b) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. TimeOfDay -> Word -> Expr s a
TimeLiteral TimeOfDay
a Word
b)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
TimeZone = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
TimeZone
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (TimeZoneLiteral TimeZone
a) = forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall s a. TimeZone -> Expr s a
TimeZoneLiteral TimeZone
a)
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
List = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
List
unsafeSubExpressions Expr s a -> f (Expr t b)
f (ListLit Maybe (Expr s a)
a Seq (Expr s a)
b) = forall s a. Maybe (Expr s a) -> Seq (Expr s a) -> Expr s a
ListLit forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f Maybe (Expr s a)
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f Seq (Expr s a)
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (ListAppend Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
ListAppend forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListBuild = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListBuild
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListFold = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListFold
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListLength = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListLength
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListHead = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListHead
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListLast = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListLast
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListIndexed = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListIndexed
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
ListReverse = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
ListReverse
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
Optional = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
Optional
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Some Expr s a
a) = forall s a. Expr s a -> Expr s a
Some forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a
unsafeSubExpressions Expr s a -> f (Expr t b)
_ Expr s a
None = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. Expr s a
None
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Union Map Text (Maybe (Expr s a))
a) = forall s a. Map Text (Maybe (Expr s a)) -> Expr s a
Union forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f) Map Text (Maybe (Expr s a))
a
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Combine Maybe CharacterSet
cs Maybe Text
a Expr s a
b Expr s a
c) = forall s a.
Maybe CharacterSet
-> Maybe Text -> Expr s a -> Expr s a -> Expr s a
Combine Maybe CharacterSet
cs Maybe Text
a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
c
unsafeSubExpressions Expr s a -> f (Expr t b)
f (CombineTypes Maybe CharacterSet
cs Expr s a
a Expr s a
b) = forall s a. Maybe CharacterSet -> Expr s a -> Expr s a -> Expr s a
CombineTypes Maybe CharacterSet
cs forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Prefer Maybe CharacterSet
cs PreferAnnotation s a
a Expr s a
b Expr s a
c) = forall s a.
Maybe CharacterSet
-> PreferAnnotation s a -> Expr s a -> Expr s a -> Expr s a
Prefer Maybe CharacterSet
cs forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> f (PreferAnnotation t b)
a' forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
c
where
a' :: f (PreferAnnotation t b)
a' = case PreferAnnotation s a
a of
PreferAnnotation s a
PreferFromSource -> forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. PreferAnnotation s a
PreferFromSource
PreferFromWith Expr s a
d -> forall s a. Expr s a -> PreferAnnotation s a
PreferFromWith forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
d
PreferAnnotation s a
PreferFromCompletion -> forall (f :: * -> *) a. Applicative f => a -> f a
pure forall s a. PreferAnnotation s a
PreferFromCompletion
unsafeSubExpressions Expr s a -> f (Expr t b)
f (RecordCompletion Expr s a
a Expr s a
b) = forall s a. Expr s a -> Expr s a -> Expr s a
RecordCompletion forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Merge Expr s a
a Expr s a
b Maybe (Expr s a)
t) = forall s a. Expr s a -> Expr s a -> Maybe (Expr s a) -> Expr s a
Merge forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f Maybe (Expr s a)
t
unsafeSubExpressions Expr s a -> f (Expr t b)
f (ToMap Expr s a
a Maybe (Expr s a)
t) = forall s a. Expr s a -> Maybe (Expr s a) -> Expr s a
ToMap forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f Maybe (Expr s a)
t
unsafeSubExpressions Expr s a -> f (Expr t b)
f (ShowConstructor Expr s a
a) = forall s a. Expr s a -> Expr s a
ShowConstructor forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Project Expr s a
a Either [Text] (Expr s a)
b) = forall s a. Expr s a -> Either [Text] (Expr s a) -> Expr s a
Project forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f Either [Text] (Expr s a)
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Assert Expr s a
a) = forall s a. Expr s a -> Expr s a
Assert forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a
unsafeSubExpressions Expr s a -> f (Expr t b)
f (Equivalent Maybe CharacterSet
cs Expr s a
a Expr s a
b) = forall s a. Maybe CharacterSet -> Expr s a -> Expr s a -> Expr s a
Equivalent Maybe CharacterSet
cs forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
b
unsafeSubExpressions Expr s a -> f (Expr t b)
f (With Expr s a
a NonEmpty WithComponent
b Expr s a
c) = forall s a.
Expr s a -> NonEmpty WithComponent -> Expr s a -> Expr s a
With forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
a forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure NonEmpty WithComponent
b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
c
unsafeSubExpressions Expr s a -> f (Expr t b)
f (ImportAlt Expr s a
l Expr s a
r) = forall s a. Expr s a -> Expr s a -> Expr s a
ImportAlt forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Expr s a -> f (Expr t b)
f Expr s a
l forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr t b)
f Expr s a
r
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Let {}) = forall a. Text -> a
unhandledConstructor Text
"Let"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Note {}) = forall a. Text -> a
unhandledConstructor Text
"Note"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Embed {}) = forall a. Text -> a
unhandledConstructor Text
"Embed"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Record {}) = forall a. Text -> a
unhandledConstructor Text
"Record"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (RecordLit {}) = forall a. Text -> a
unhandledConstructor Text
"RecordLit"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Lam {}) = forall a. Text -> a
unhandledConstructor Text
"Lam"
unsafeSubExpressions Expr s a -> f (Expr t b)
_ (Field {}) = forall a. Text -> a
unhandledConstructor Text
"Field"
{-# INLINABLE unsafeSubExpressions #-}
unhandledConstructor :: Text -> a
unhandledConstructor :: forall a. Text -> a
unhandledConstructor Text
constructor =
Text -> forall b. b
internalError
( Text
"Dhall.Syntax.unsafeSubExpressions: Unhandled "
forall a. Semigroup a => a -> a -> a
<> Text
constructor
forall a. Semigroup a => a -> a -> a
<> Text
" construtor"
)
bindingExprs
:: (Applicative f)
=> (Expr s a -> f (Expr s b))
-> Binding s a -> f (Binding s b)
bindingExprs :: forall (f :: * -> *) s a b.
Applicative f =>
(Expr s a -> f (Expr s b)) -> Binding s a -> f (Binding s b)
bindingExprs Expr s a -> f (Expr s b)
f (Binding Maybe s
s0 Text
n Maybe s
s1 Maybe (Maybe s, Expr s a)
t Maybe s
s2 Expr s a
v) =
forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s0
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
n
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr s b)
f) Maybe (Maybe s, Expr s a)
t
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s2
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr s b)
f Expr s a
v
{-# INLINABLE bindingExprs #-}
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) =
forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s0
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
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s2
{-# INLINABLE recordFieldExprs #-}
functionBindingExprs
:: Applicative f
=> (Expr s a -> f (Expr s b))
-> FunctionBinding s a -> f (FunctionBinding s b)
functionBindingExprs :: forall (f :: * -> *) s a b.
Applicative f =>
(Expr s a -> f (Expr s b))
-> FunctionBinding s a -> f (FunctionBinding s b)
functionBindingExprs Expr s a -> f (Expr s b)
f (FunctionBinding Maybe s
s0 Text
label Maybe s
s1 Maybe s
s2 Expr s a
type_) =
forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s0
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
label
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe s
s2
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Expr s a -> f (Expr s b)
f Expr s a
type_
{-# INLINABLE functionBindingExprs #-}
chunkExprs
:: Applicative f
=> (Expr s a -> f (Expr t b))
-> Chunks s a -> f (Chunks t b)
chunkExprs :: forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Chunks s a -> f (Chunks t b)
chunkExprs Expr s a -> f (Expr t b)
f (Chunks [(Text, Expr s a)]
chunks Text
final) =
forall a b c. (a -> b -> c) -> b -> a -> c
flip forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks Text
final forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse (forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
traverse Expr s a -> f (Expr t b)
f) [(Text, Expr s a)]
chunks
{-# INLINABLE chunkExprs #-}
newtype Directory = Directory { Directory -> [Text]
components :: [Text] }
deriving stock (Directory -> Directory -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Directory -> Directory -> Bool
$c/= :: Directory -> Directory -> Bool
== :: Directory -> Directory -> Bool
$c== :: Directory -> Directory -> Bool
Eq, forall x. Rep Directory x -> Directory
forall x. Directory -> Rep Directory x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Directory x -> Directory
$cfrom :: forall x. Directory -> Rep Directory x
Generic, Eq Directory
Directory -> Directory -> Bool
Directory -> Directory -> Ordering
Directory -> Directory -> Directory
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
min :: Directory -> Directory -> Directory
$cmin :: Directory -> Directory -> Directory
max :: Directory -> Directory -> Directory
$cmax :: Directory -> Directory -> Directory
>= :: Directory -> Directory -> Bool
$c>= :: Directory -> Directory -> Bool
> :: Directory -> Directory -> Bool
$c> :: Directory -> Directory -> Bool
<= :: Directory -> Directory -> Bool
$c<= :: Directory -> Directory -> Bool
< :: Directory -> Directory -> Bool
$c< :: Directory -> Directory -> Bool
compare :: Directory -> Directory -> Ordering
$ccompare :: Directory -> Directory -> Ordering
Ord, Int -> Directory -> ShowS
[Directory] -> ShowS
Directory -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Directory] -> ShowS
$cshowList :: [Directory] -> ShowS
show :: Directory -> String
$cshow :: Directory -> String
showsPrec :: Int -> Directory -> ShowS
$cshowsPrec :: Int -> Directory -> ShowS
Show)
deriving anyclass Directory -> ()
forall a. (a -> ()) -> NFData a
rnf :: Directory -> ()
$crnf :: Directory -> ()
NFData
instance Semigroup Directory where
Directory [Text]
components₀ <> :: Directory -> Directory -> Directory
<> Directory [Text]
components₁ =
[Text] -> Directory
Directory ([Text]
components₁ forall a. Semigroup a => a -> a -> a
<> [Text]
components₀)
instance Pretty Directory where
pretty :: forall ann. Directory -> Doc ann
pretty (Directory {[Text]
components :: [Text]
components :: Directory -> [Text]
..}) = forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap forall ann. Text -> Doc ann
prettyPathComponent (forall a. [a] -> [a]
reverse [Text]
components)
prettyPathComponent :: Text -> Doc ann
prettyPathComponent :: forall ann. Text -> Doc ann
prettyPathComponent Text
text
| (Char -> Bool) -> Text -> Bool
Data.Text.all Char -> Bool
pathCharacter Text
text =
Doc ann
"/" forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Text
text
| Bool
otherwise =
Doc ann
"/\"" forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Text
text forall a. Semigroup a => a -> a -> a
<> Doc ann
"\""
data File = File
{ File -> Directory
directory :: Directory
, File -> Text
file :: Text
} deriving (File -> File -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: File -> File -> Bool
$c/= :: File -> File -> Bool
== :: File -> File -> Bool
$c== :: File -> File -> Bool
Eq, forall x. Rep File x -> File
forall x. File -> Rep File x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep File x -> File
$cfrom :: forall x. File -> Rep File x
Generic, Eq File
File -> File -> Bool
File -> File -> Ordering
File -> File -> File
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
min :: File -> File -> File
$cmin :: File -> File -> File
max :: File -> File -> File
$cmax :: File -> File -> File
>= :: File -> File -> Bool
$c>= :: File -> File -> Bool
> :: File -> File -> Bool
$c> :: File -> File -> Bool
<= :: File -> File -> Bool
$c<= :: File -> File -> Bool
< :: File -> File -> Bool
$c< :: File -> File -> Bool
compare :: File -> File -> Ordering
$ccompare :: File -> File -> Ordering
Ord, Int -> File -> ShowS
[File] -> ShowS
File -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [File] -> ShowS
$cshowList :: [File] -> ShowS
show :: File -> String
$cshow :: File -> String
showsPrec :: Int -> File -> ShowS
$cshowsPrec :: Int -> File -> ShowS
Show, File -> ()
forall a. (a -> ()) -> NFData a
rnf :: File -> ()
$crnf :: File -> ()
NFData)
instance Pretty File where
pretty :: forall ann. File -> Doc ann
pretty (File {Text
Directory
file :: Text
directory :: Directory
file :: File -> Text
directory :: File -> Directory
..}) =
forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Directory
directory
forall a. Semigroup a => a -> a -> a
<> forall ann. Text -> Doc ann
prettyPathComponent Text
file
instance Semigroup File where
File Directory
directory₀ Text
_ <> :: File -> File -> File
<> File Directory
directory₁ Text
file =
Directory -> Text -> File
File (Directory
directory₀ forall a. Semigroup a => a -> a -> a
<> Directory
directory₁) Text
file
data FilePrefix
= Absolute
| Here
| Parent
| Home
deriving (FilePrefix -> FilePrefix -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FilePrefix -> FilePrefix -> Bool
$c/= :: FilePrefix -> FilePrefix -> Bool
== :: FilePrefix -> FilePrefix -> Bool
$c== :: FilePrefix -> FilePrefix -> Bool
Eq, forall x. Rep FilePrefix x -> FilePrefix
forall x. FilePrefix -> Rep FilePrefix x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep FilePrefix x -> FilePrefix
$cfrom :: forall x. FilePrefix -> Rep FilePrefix x
Generic, Eq FilePrefix
FilePrefix -> FilePrefix -> Bool
FilePrefix -> FilePrefix -> Ordering
FilePrefix -> FilePrefix -> FilePrefix
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
min :: FilePrefix -> FilePrefix -> FilePrefix
$cmin :: FilePrefix -> FilePrefix -> FilePrefix
max :: FilePrefix -> FilePrefix -> FilePrefix
$cmax :: FilePrefix -> FilePrefix -> FilePrefix
>= :: FilePrefix -> FilePrefix -> Bool
$c>= :: FilePrefix -> FilePrefix -> Bool
> :: FilePrefix -> FilePrefix -> Bool
$c> :: FilePrefix -> FilePrefix -> Bool
<= :: FilePrefix -> FilePrefix -> Bool
$c<= :: FilePrefix -> FilePrefix -> Bool
< :: FilePrefix -> FilePrefix -> Bool
$c< :: FilePrefix -> FilePrefix -> Bool
compare :: FilePrefix -> FilePrefix -> Ordering
$ccompare :: FilePrefix -> FilePrefix -> Ordering
Ord, Int -> FilePrefix -> ShowS
[FilePrefix] -> ShowS
FilePrefix -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FilePrefix] -> ShowS
$cshowList :: [FilePrefix] -> ShowS
show :: FilePrefix -> String
$cshow :: FilePrefix -> String
showsPrec :: Int -> FilePrefix -> ShowS
$cshowsPrec :: Int -> FilePrefix -> ShowS
Show, FilePrefix -> ()
forall a. (a -> ()) -> NFData a
rnf :: FilePrefix -> ()
$crnf :: FilePrefix -> ()
NFData)
instance Pretty FilePrefix where
pretty :: forall ann. FilePrefix -> Doc ann
pretty FilePrefix
Absolute = Doc ann
""
pretty FilePrefix
Here = Doc ann
"."
pretty FilePrefix
Parent = Doc ann
".."
pretty FilePrefix
Home = Doc ann
"~"
data Scheme = HTTP | HTTPS deriving (Scheme -> Scheme -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Scheme -> Scheme -> Bool
$c/= :: Scheme -> Scheme -> Bool
== :: Scheme -> Scheme -> Bool
$c== :: Scheme -> Scheme -> Bool
Eq, forall x. Rep Scheme x -> Scheme
forall x. Scheme -> Rep Scheme x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Scheme x -> Scheme
$cfrom :: forall x. Scheme -> Rep Scheme x
Generic, Eq Scheme
Scheme -> Scheme -> Bool
Scheme -> Scheme -> Ordering
Scheme -> Scheme -> Scheme
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
min :: Scheme -> Scheme -> Scheme
$cmin :: Scheme -> Scheme -> Scheme
max :: Scheme -> Scheme -> Scheme
$cmax :: Scheme -> Scheme -> Scheme
>= :: Scheme -> Scheme -> Bool
$c>= :: Scheme -> Scheme -> Bool
> :: Scheme -> Scheme -> Bool
$c> :: Scheme -> Scheme -> Bool
<= :: Scheme -> Scheme -> Bool
$c<= :: Scheme -> Scheme -> Bool
< :: Scheme -> Scheme -> Bool
$c< :: Scheme -> Scheme -> Bool
compare :: Scheme -> Scheme -> Ordering
$ccompare :: Scheme -> Scheme -> Ordering
Ord, Int -> Scheme -> ShowS
[Scheme] -> ShowS
Scheme -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Scheme] -> ShowS
$cshowList :: [Scheme] -> ShowS
show :: Scheme -> String
$cshow :: Scheme -> String
showsPrec :: Int -> Scheme -> ShowS
$cshowsPrec :: Int -> Scheme -> ShowS
Show, Scheme -> ()
forall a. (a -> ()) -> NFData a
rnf :: Scheme -> ()
$crnf :: Scheme -> ()
NFData)
data URL = URL
{ URL -> Scheme
scheme :: Scheme
, URL -> Text
authority :: Text
, URL -> File
path :: File
, URL -> Maybe Text
query :: Maybe Text
, :: Maybe (Expr Src Import)
} deriving (URL -> URL -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: URL -> URL -> Bool
$c/= :: URL -> URL -> Bool
== :: URL -> URL -> Bool
$c== :: URL -> URL -> Bool
Eq, forall x. Rep URL x -> URL
forall x. URL -> Rep URL x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep URL x -> URL
$cfrom :: forall x. URL -> Rep URL x
Generic, Eq URL
URL -> URL -> Bool
URL -> URL -> Ordering
URL -> URL -> URL
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
min :: URL -> URL -> URL
$cmin :: URL -> URL -> URL
max :: URL -> URL -> URL
$cmax :: URL -> URL -> URL
>= :: URL -> URL -> Bool
$c>= :: URL -> URL -> Bool
> :: URL -> URL -> Bool
$c> :: URL -> URL -> Bool
<= :: URL -> URL -> Bool
$c<= :: URL -> URL -> Bool
< :: URL -> URL -> Bool
$c< :: URL -> URL -> Bool
compare :: URL -> URL -> Ordering
$ccompare :: URL -> URL -> Ordering
Ord, Int -> URL -> ShowS
[URL] -> ShowS
URL -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [URL] -> ShowS
$cshowList :: [URL] -> ShowS
show :: URL -> String
$cshow :: URL -> String
showsPrec :: Int -> URL -> ShowS
$cshowsPrec :: Int -> URL -> ShowS
Show, URL -> ()
forall a. (a -> ()) -> NFData a
rnf :: URL -> ()
$crnf :: URL -> ()
NFData)
instance Pretty URL where
pretty :: forall ann. URL -> Doc ann
pretty (URL {Maybe Text
Maybe (Expr Src Import)
Text
Scheme
File
headers :: Maybe (Expr Src Import)
query :: Maybe Text
path :: File
authority :: Text
scheme :: Scheme
headers :: URL -> Maybe (Expr Src Import)
query :: URL -> Maybe Text
path :: URL -> File
authority :: URL -> Text
scheme :: URL -> Scheme
..}) =
Doc ann
schemeDoc
forall a. Semigroup a => a -> a -> a
<> Doc ann
"://"
forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Text
authority
forall a. Semigroup a => a -> a -> a
<> forall {ann}. Doc ann
pathDoc
forall a. Semigroup a => a -> a -> a
<> forall {ann}. Doc ann
queryDoc
forall a. Semigroup a => a -> a -> a
<> forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap forall {a} {xxx}. Pretty a => a -> Doc xxx
prettyHeaders Maybe (Expr Src Import)
headers
where
prettyHeaders :: a -> Doc xxx
prettyHeaders a
h =
Doc xxx
" using (" forall a. Semigroup a => a -> a -> a
<> forall ann xxx. Doc ann -> Doc xxx
Pretty.unAnnotate (forall a ann. Pretty a => a -> Doc ann
Pretty.pretty a
h) forall a. Semigroup a => a -> a -> a
<> Doc xxx
")"
File {Text
Directory
file :: Text
directory :: Directory
file :: File -> Text
directory :: File -> Directory
..} = File
path
Directory {[Text]
components :: [Text]
components :: Directory -> [Text]
..} = Directory
directory
pathDoc :: Doc ann
pathDoc =
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap forall ann. Text -> Doc ann
prettyURIComponent (forall a. [a] -> [a]
reverse [Text]
components)
forall a. Semigroup a => a -> a -> a
<> forall ann. Text -> Doc ann
prettyURIComponent Text
file
schemeDoc :: Doc ann
schemeDoc = case Scheme
scheme of
Scheme
HTTP -> Doc ann
"http"
Scheme
HTTPS -> Doc ann
"https"
queryDoc :: Doc ann
queryDoc = case Maybe Text
query of
Maybe Text
Nothing -> Doc ann
""
Just Text
q -> Doc ann
"?" forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Text
q
prettyURIComponent :: Text -> Doc ann
prettyURIComponent :: forall ann. Text -> Doc ann
prettyURIComponent Text
text =
forall a ann. Pretty a => a -> Doc ann
Pretty.pretty forall a b. (a -> b) -> a -> b
$ ShowS
URI.normalizeCase forall a b. (a -> b) -> a -> b
$ ShowS
URI.normalizeEscape forall a b. (a -> b) -> a -> b
$ String
"/" forall a. Semigroup a => a -> a -> a
<> Text -> String
Data.Text.unpack Text
text
data ImportType
= Local FilePrefix File
| Remote URL
| Env Text
| Missing
deriving (ImportType -> ImportType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImportType -> ImportType -> Bool
$c/= :: ImportType -> ImportType -> Bool
== :: ImportType -> ImportType -> Bool
$c== :: ImportType -> ImportType -> Bool
Eq, forall x. Rep ImportType x -> ImportType
forall x. ImportType -> Rep ImportType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ImportType x -> ImportType
$cfrom :: forall x. ImportType -> Rep ImportType x
Generic, Eq ImportType
ImportType -> ImportType -> Bool
ImportType -> ImportType -> Ordering
ImportType -> ImportType -> ImportType
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
min :: ImportType -> ImportType -> ImportType
$cmin :: ImportType -> ImportType -> ImportType
max :: ImportType -> ImportType -> ImportType
$cmax :: ImportType -> ImportType -> ImportType
>= :: ImportType -> ImportType -> Bool
$c>= :: ImportType -> ImportType -> Bool
> :: ImportType -> ImportType -> Bool
$c> :: ImportType -> ImportType -> Bool
<= :: ImportType -> ImportType -> Bool
$c<= :: ImportType -> ImportType -> Bool
< :: ImportType -> ImportType -> Bool
$c< :: ImportType -> ImportType -> Bool
compare :: ImportType -> ImportType -> Ordering
$ccompare :: ImportType -> ImportType -> Ordering
Ord, Int -> ImportType -> ShowS
[ImportType] -> ShowS
ImportType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ImportType] -> ShowS
$cshowList :: [ImportType] -> ShowS
show :: ImportType -> String
$cshow :: ImportType -> String
showsPrec :: Int -> ImportType -> ShowS
$cshowsPrec :: Int -> ImportType -> ShowS
Show, ImportType -> ()
forall a. (a -> ()) -> NFData a
rnf :: ImportType -> ()
$crnf :: ImportType -> ()
NFData)
parent :: File
parent :: File
parent = File { directory :: Directory
directory = Directory { components :: [Text]
components = [ Text
".." ] }, file :: Text
file = Text
"" }
instance Semigroup ImportType where
Local FilePrefix
prefix File
file₀ <> :: ImportType -> ImportType -> ImportType
<> Local FilePrefix
Here File
file₁ = FilePrefix -> File -> ImportType
Local FilePrefix
prefix (File
file₀ forall a. Semigroup a => a -> a -> a
<> File
file₁)
Remote (URL { path :: URL -> File
path = File
path₀, Maybe Text
Maybe (Expr Src Import)
Text
Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
headers :: URL -> Maybe (Expr Src Import)
query :: URL -> Maybe Text
authority :: URL -> Text
scheme :: URL -> Scheme
..}) <> Local FilePrefix
Here File
path₁ =
URL -> ImportType
Remote (URL { path :: File
path = File
path₀ forall a. Semigroup a => a -> a -> a
<> File
path₁, Maybe Text
Maybe (Expr Src Import)
Text
Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
..})
Local FilePrefix
prefix File
file₀ <> Local FilePrefix
Parent File
file₁ =
FilePrefix -> File -> ImportType
Local FilePrefix
prefix (File
file₀ forall a. Semigroup a => a -> a -> a
<> File
parent forall a. Semigroup a => a -> a -> a
<> File
file₁)
Remote (URL { path :: URL -> File
path = File
path₀, Maybe Text
Maybe (Expr Src Import)
Text
Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
headers :: URL -> Maybe (Expr Src Import)
query :: URL -> Maybe Text
authority :: URL -> Text
scheme :: URL -> Scheme
.. }) <> Local FilePrefix
Parent File
path₁ =
URL -> ImportType
Remote (URL { path :: File
path = File
path₀ forall a. Semigroup a => a -> a -> a
<> File
parent forall a. Semigroup a => a -> a -> a
<> File
path₁, Maybe Text
Maybe (Expr Src Import)
Text
Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
headers :: Maybe (Expr Src Import)
query :: Maybe Text
authority :: Text
scheme :: Scheme
.. })
ImportType
import₀ <> Remote (URL { headers :: URL -> Maybe (Expr Src Import)
headers = Maybe (Expr Src Import)
headers₀, Maybe Text
Text
Scheme
File
query :: Maybe Text
path :: File
authority :: Text
scheme :: Scheme
query :: URL -> Maybe Text
path :: URL -> File
authority :: URL -> Text
scheme :: URL -> Scheme
.. }) =
URL -> ImportType
Remote (URL { headers :: Maybe (Expr Src Import)
headers = Maybe (Expr Src Import)
headers₁, Maybe Text
Text
Scheme
File
query :: Maybe Text
path :: File
authority :: Text
scheme :: Scheme
query :: Maybe Text
path :: File
authority :: Text
scheme :: Scheme
.. })
where
importHashed₀ :: Import
importHashed₀ = ImportHashed -> ImportMode -> Import
Import (Maybe SHA256Digest -> ImportType -> ImportHashed
ImportHashed forall a. Maybe a
Nothing ImportType
import₀) ImportMode
Code
headers₁ :: Maybe (Expr Src Import)
headers₁ = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Import
importHashed₀ forall a. Semigroup a => a -> a -> a
<>)) Maybe (Expr Src Import)
headers₀
ImportType
_ <> ImportType
import₁ =
ImportType
import₁
instance Pretty ImportType where
pretty :: forall ann. ImportType -> Doc ann
pretty (Local FilePrefix
prefix File
file) =
forall a ann. Pretty a => a -> Doc ann
Pretty.pretty FilePrefix
prefix forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty File
file
pretty (Remote URL
url) = forall a ann. Pretty a => a -> Doc ann
Pretty.pretty URL
url
pretty (Env Text
env) = Doc ann
"env:" forall a. Semigroup a => a -> a -> a
<> forall ann. Text -> Doc ann
prettyEnvironmentVariable Text
env
pretty ImportType
Missing = Doc ann
"missing"
data ImportMode = Code | RawText | Location
deriving (ImportMode -> ImportMode -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImportMode -> ImportMode -> Bool
$c/= :: ImportMode -> ImportMode -> Bool
== :: ImportMode -> ImportMode -> Bool
$c== :: ImportMode -> ImportMode -> Bool
Eq, forall x. Rep ImportMode x -> ImportMode
forall x. ImportMode -> Rep ImportMode x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ImportMode x -> ImportMode
$cfrom :: forall x. ImportMode -> Rep ImportMode x
Generic, Eq ImportMode
ImportMode -> ImportMode -> Bool
ImportMode -> ImportMode -> Ordering
ImportMode -> ImportMode -> ImportMode
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
min :: ImportMode -> ImportMode -> ImportMode
$cmin :: ImportMode -> ImportMode -> ImportMode
max :: ImportMode -> ImportMode -> ImportMode
$cmax :: ImportMode -> ImportMode -> ImportMode
>= :: ImportMode -> ImportMode -> Bool
$c>= :: ImportMode -> ImportMode -> Bool
> :: ImportMode -> ImportMode -> Bool
$c> :: ImportMode -> ImportMode -> Bool
<= :: ImportMode -> ImportMode -> Bool
$c<= :: ImportMode -> ImportMode -> Bool
< :: ImportMode -> ImportMode -> Bool
$c< :: ImportMode -> ImportMode -> Bool
compare :: ImportMode -> ImportMode -> Ordering
$ccompare :: ImportMode -> ImportMode -> Ordering
Ord, Int -> ImportMode -> ShowS
[ImportMode] -> ShowS
ImportMode -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ImportMode] -> ShowS
$cshowList :: [ImportMode] -> ShowS
show :: ImportMode -> String
$cshow :: ImportMode -> String
showsPrec :: Int -> ImportMode -> ShowS
$cshowsPrec :: Int -> ImportMode -> ShowS
Show, ImportMode -> ()
forall a. (a -> ()) -> NFData a
rnf :: ImportMode -> ()
$crnf :: ImportMode -> ()
NFData)
data ImportHashed = ImportHashed
{ ImportHashed -> Maybe SHA256Digest
hash :: Maybe Dhall.Crypto.SHA256Digest
, ImportHashed -> ImportType
importType :: ImportType
} deriving (ImportHashed -> ImportHashed -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImportHashed -> ImportHashed -> Bool
$c/= :: ImportHashed -> ImportHashed -> Bool
== :: ImportHashed -> ImportHashed -> Bool
$c== :: ImportHashed -> ImportHashed -> Bool
Eq, forall x. Rep ImportHashed x -> ImportHashed
forall x. ImportHashed -> Rep ImportHashed x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ImportHashed x -> ImportHashed
$cfrom :: forall x. ImportHashed -> Rep ImportHashed x
Generic, Eq ImportHashed
ImportHashed -> ImportHashed -> Bool
ImportHashed -> ImportHashed -> Ordering
ImportHashed -> ImportHashed -> ImportHashed
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
min :: ImportHashed -> ImportHashed -> ImportHashed
$cmin :: ImportHashed -> ImportHashed -> ImportHashed
max :: ImportHashed -> ImportHashed -> ImportHashed
$cmax :: ImportHashed -> ImportHashed -> ImportHashed
>= :: ImportHashed -> ImportHashed -> Bool
$c>= :: ImportHashed -> ImportHashed -> Bool
> :: ImportHashed -> ImportHashed -> Bool
$c> :: ImportHashed -> ImportHashed -> Bool
<= :: ImportHashed -> ImportHashed -> Bool
$c<= :: ImportHashed -> ImportHashed -> Bool
< :: ImportHashed -> ImportHashed -> Bool
$c< :: ImportHashed -> ImportHashed -> Bool
compare :: ImportHashed -> ImportHashed -> Ordering
$ccompare :: ImportHashed -> ImportHashed -> Ordering
Ord, Int -> ImportHashed -> ShowS
[ImportHashed] -> ShowS
ImportHashed -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ImportHashed] -> ShowS
$cshowList :: [ImportHashed] -> ShowS
show :: ImportHashed -> String
$cshow :: ImportHashed -> String
showsPrec :: Int -> ImportHashed -> ShowS
$cshowsPrec :: Int -> ImportHashed -> ShowS
Show, ImportHashed -> ()
forall a. (a -> ()) -> NFData a
rnf :: ImportHashed -> ()
$crnf :: ImportHashed -> ()
NFData)
instance Semigroup ImportHashed where
ImportHashed Maybe SHA256Digest
_ ImportType
importType₀ <> :: ImportHashed -> ImportHashed -> ImportHashed
<> ImportHashed Maybe SHA256Digest
hash ImportType
importType₁ =
Maybe SHA256Digest -> ImportType -> ImportHashed
ImportHashed Maybe SHA256Digest
hash (ImportType
importType₀ forall a. Semigroup a => a -> a -> a
<> ImportType
importType₁)
instance Pretty ImportHashed where
pretty :: forall ann. ImportHashed -> Doc ann
pretty (ImportHashed Maybe SHA256Digest
Nothing ImportType
p) =
forall a ann. Pretty a => a -> Doc ann
Pretty.pretty ImportType
p
pretty (ImportHashed (Just SHA256Digest
h) ImportType
p) =
forall ann. Doc ann -> Doc ann
Pretty.group (forall ann. Doc ann -> Doc ann -> Doc ann
Pretty.flatAlt forall {ann}. Doc ann
long forall {ann}. Doc ann
short)
where
long :: Doc ann
long =
forall ann. Doc ann -> Doc ann
Pretty.align
( forall a ann. Pretty a => a -> Doc ann
Pretty.pretty ImportType
p forall a. Semigroup a => a -> a -> a
<> forall {ann}. Doc ann
Pretty.hardline
forall a. Semigroup a => a -> a -> a
<> Doc ann
" sha256:" forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty (forall a. Show a => a -> String
show SHA256Digest
h)
)
short :: Doc ann
short = forall a ann. Pretty a => a -> Doc ann
Pretty.pretty ImportType
p forall a. Semigroup a => a -> a -> a
<> Doc ann
" sha256:" forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty (forall a. Show a => a -> String
show SHA256Digest
h)
data Import = Import
{ Import -> ImportHashed
importHashed :: ImportHashed
, Import -> ImportMode
importMode :: ImportMode
} deriving (Import -> Import -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Import -> Import -> Bool
$c/= :: Import -> Import -> Bool
== :: Import -> Import -> Bool
$c== :: Import -> Import -> Bool
Eq, forall x. Rep Import x -> Import
forall x. Import -> Rep Import x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Import x -> Import
$cfrom :: forall x. Import -> Rep Import x
Generic, Eq Import
Import -> Import -> Bool
Import -> Import -> Ordering
Import -> Import -> Import
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
min :: Import -> Import -> Import
$cmin :: Import -> Import -> Import
max :: Import -> Import -> Import
$cmax :: Import -> Import -> Import
>= :: Import -> Import -> Bool
$c>= :: Import -> Import -> Bool
> :: Import -> Import -> Bool
$c> :: Import -> Import -> Bool
<= :: Import -> Import -> Bool
$c<= :: Import -> Import -> Bool
< :: Import -> Import -> Bool
$c< :: Import -> Import -> Bool
compare :: Import -> Import -> Ordering
$ccompare :: Import -> Import -> Ordering
Ord, Int -> Import -> ShowS
[Import] -> ShowS
Import -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Import] -> ShowS
$cshowList :: [Import] -> ShowS
show :: Import -> String
$cshow :: Import -> String
showsPrec :: Int -> Import -> ShowS
$cshowsPrec :: Int -> Import -> ShowS
Show, Import -> ()
forall a. (a -> ()) -> NFData a
rnf :: Import -> ()
$crnf :: Import -> ()
NFData)
instance Semigroup Import where
Import ImportHashed
importHashed₀ ImportMode
_ <> :: Import -> Import -> Import
<> Import ImportHashed
importHashed₁ ImportMode
code =
ImportHashed -> ImportMode -> Import
Import (ImportHashed
importHashed₀ forall a. Semigroup a => a -> a -> a
<> ImportHashed
importHashed₁) ImportMode
code
instance Pretty Import where
pretty :: forall ann. Import -> Doc ann
pretty (Import {ImportHashed
ImportMode
importMode :: ImportMode
importHashed :: ImportHashed
importMode :: Import -> ImportMode
importHashed :: Import -> ImportHashed
..}) = forall a ann. Pretty a => a -> Doc ann
Pretty.pretty ImportHashed
importHashed forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
Pretty.pretty Text
suffix
where
suffix :: Text
suffix :: Text
suffix = case ImportMode
importMode of
ImportMode
RawText -> Text
" as Text"
ImportMode
Location -> Text
" as Location"
ImportMode
Code -> Text
""
pathCharacter :: Char -> Bool
pathCharacter :: Char -> Bool
pathCharacter Char
c =
Char
'\x21' forall a. Eq a => a -> a -> Bool
== Char
c
Bool -> Bool -> Bool
|| (Char
'\x24' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x27')
Bool -> Bool -> Bool
|| (Char
'\x2A' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x2B')
Bool -> Bool -> Bool
|| (Char
'\x2D' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x2E')
Bool -> Bool -> Bool
|| (Char
'\x30' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x3B')
Bool -> Bool -> Bool
|| Char
c forall a. Eq a => a -> a -> Bool
== Char
'\x3D'
Bool -> Bool -> Bool
|| (Char
'\x40' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x5A')
Bool -> Bool -> Bool
|| (Char
'\x5E' forall a. Ord a => a -> a -> Bool
<= Char
c Bool -> Bool -> Bool
&& Char
c forall a. Ord a => a -> a -> Bool
<= Char
'\x7A')
Bool -> Bool -> Bool
|| Char
c forall a. Eq a => a -> a -> Bool
== Char
'\x7C'
Bool -> Bool -> Bool
|| Char
c forall a. Eq a => a -> a -> Bool
== Char
'\x7E'
denote :: Expr s a -> Expr t a
denote :: forall s a t. Expr s a -> Expr t a
denote = \case
Note s
_ Expr s a
b -> forall s a t. Expr s a -> Expr t a
denote Expr s a
b
Let Binding s a
a Expr s a
b -> forall s a. Binding s a -> Expr s a -> Expr s a
Let (forall {s} {a} {s}. Binding s a -> Binding s a
denoteBinding Binding s a
a) (forall s a t. Expr s a -> Expr t a
denote Expr s a
b)
Embed a
a -> forall s a. a -> Expr s a
Embed a
a
Combine Maybe CharacterSet
_ Maybe Text
_ Expr s a
b Expr s a
c -> forall s a.
Maybe CharacterSet
-> Maybe Text -> Expr s a -> Expr s a -> Expr s a
Combine forall a. Maybe a
Nothing forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
b) (forall s a t. Expr s a -> Expr t a
denote Expr s a
c)
CombineTypes Maybe CharacterSet
_ Expr s a
b Expr s a
c -> forall s a. Maybe CharacterSet -> Expr s a -> Expr s a -> Expr s a
CombineTypes forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
b) (forall s a t. Expr s a -> Expr t a
denote Expr s a
c)
Prefer Maybe CharacterSet
_ PreferAnnotation s a
a Expr s a
b Expr s a
c -> forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions forall s a t. Expr s a -> Expr t a
denote forall a b. (a -> b) -> a -> b
$ forall s a.
Maybe CharacterSet
-> PreferAnnotation s a -> Expr s a -> Expr s a -> Expr s a
Prefer forall a. Maybe a
Nothing PreferAnnotation s a
a Expr s a
b Expr s a
c
Record Map Text (RecordField s a)
a -> forall s a. Map Text (RecordField s a) -> Expr s a
Record forall a b. (a -> b) -> a -> b
$ forall {s} {a} {s}. RecordField s a -> RecordField s a
denoteRecordField forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
RecordLit Map Text (RecordField s a)
a -> forall s a. Map Text (RecordField s a) -> Expr s a
RecordLit forall a b. (a -> b) -> a -> b
$ forall {s} {a} {s}. RecordField s a -> RecordField s a
denoteRecordField forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map Text (RecordField s a)
a
Lam Maybe CharacterSet
_ FunctionBinding s a
a Expr s a
b -> forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam forall a. Maybe a
Nothing (forall {s} {a} {s}. FunctionBinding s a -> FunctionBinding s a
denoteFunctionBinding FunctionBinding s a
a) (forall s a t. Expr s a -> Expr t a
denote Expr s a
b)
Pi Maybe CharacterSet
_ Text
t Expr s a
a Expr s a
b -> forall s a.
Maybe CharacterSet -> Text -> Expr s a -> Expr s a -> Expr s a
Pi forall a. Maybe a
Nothing Text
t (forall s a t. Expr s a -> Expr t a
denote Expr s a
a) (forall s a t. Expr s a -> Expr t a
denote Expr s a
b)
Field Expr s a
a (FieldSelection Maybe s
_ Text
b Maybe s
_) -> forall s a. Expr s a -> FieldSelection s -> Expr s a
Field (forall s a t. Expr s a -> Expr t a
denote Expr s a
a) (forall s. Maybe s -> Text -> Maybe s -> FieldSelection s
FieldSelection forall a. Maybe a
Nothing Text
b forall a. Maybe a
Nothing)
Equivalent Maybe CharacterSet
_ Expr s a
a Expr s a
b -> forall s a. Maybe CharacterSet -> Expr s a -> Expr s a -> Expr s a
Equivalent forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
a) (forall s a t. Expr s a -> Expr t a
denote Expr s a
b)
Expr s a
expression -> forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a t b.
Applicative f =>
(Expr s a -> f (Expr t b)) -> Expr s a -> f (Expr t b)
unsafeSubExpressions forall s a t. Expr s a -> Expr t a
denote Expr s a
expression
where
denoteRecordField :: RecordField s a -> RecordField s a
denoteRecordField (RecordField Maybe s
_ Expr s a
e Maybe s
_ Maybe s
_) = forall s a.
Maybe s -> Expr s a -> Maybe s -> Maybe s -> RecordField s a
RecordField forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
e) forall a. Maybe a
Nothing forall a. Maybe a
Nothing
denoteBinding :: Binding s a -> Binding s a
denoteBinding (Binding Maybe s
_ Text
c Maybe s
_ Maybe (Maybe s, Expr s a)
d Maybe s
_ Expr s a
e) =
forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding forall a. Maybe a
Nothing Text
c forall a. Maybe a
Nothing (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall {a} {s} {a} {a} {t}. (a, Expr s a) -> (Maybe a, Expr t a)
denoteBindingAnnotation Maybe (Maybe s, Expr s a)
d) forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
e)
denoteBindingAnnotation :: (a, Expr s a) -> (Maybe a, Expr t a)
denoteBindingAnnotation (a
_, Expr s a
f) = (forall a. Maybe a
Nothing, forall s a t. Expr s a -> Expr t a
denote Expr s a
f)
denoteFunctionBinding :: FunctionBinding s a -> FunctionBinding s a
denoteFunctionBinding (FunctionBinding Maybe s
_ Text
l Maybe s
_ Maybe s
_ Expr s a
t) =
forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding forall a. Maybe a
Nothing Text
l forall a. Maybe a
Nothing forall a. Maybe a
Nothing (forall s a t. Expr s a -> Expr t a
denote Expr s a
t)
renote :: Expr Void a -> Expr s a
renote :: forall a s. Expr Void a -> Expr s a
renote = forall a b. a -> b
unsafeCoerce
{-# INLINE renote #-}
shallowDenote :: Expr s a -> Expr s a
shallowDenote :: forall s a. Expr s a -> Expr s a
shallowDenote (Note s
_ Expr s a
e) = forall s a. Expr s a -> Expr s a
shallowDenote Expr s a
e
shallowDenote Expr s a
e = Expr s a
e
reservedKeywords :: HashSet Text
reservedKeywords :: HashSet Text
reservedKeywords =
forall a. (Eq a, Hashable a) => [a] -> HashSet a
Data.HashSet.fromList
[ Text
"if"
, Text
"then"
, Text
"else"
, Text
"let"
, Text
"in"
, Text
"using"
, Text
"missing"
, Text
"as"
, Text
"Infinity"
, Text
"NaN"
, Text
"merge"
, Text
"Some"
, Text
"toMap"
, Text
"assert"
, Text
"forall"
, Text
"with"
]
reservedIdentifiers :: HashSet Text
reservedIdentifiers :: HashSet Text
reservedIdentifiers = HashSet Text
reservedKeywords forall a. Semigroup a => a -> a -> a
<>
forall a. (Eq a, Hashable a) => [a] -> HashSet a
Data.HashSet.fromList
[
Text
"Natural/fold"
, Text
"Natural/build"
, Text
"Natural/isZero"
, Text
"Natural/even"
, Text
"Natural/odd"
, Text
"Natural/toInteger"
, Text
"Natural/show"
, Text
"Natural/subtract"
, Text
"Integer"
, Text
"Integer/clamp"
, Text
"Integer/negate"
, Text
"Integer/show"
, Text
"Integer/toDouble"
, Text
"Integer/show"
, Text
"Natural/subtract"
, Text
"Double/show"
, Text
"List/build"
, Text
"List/fold"
, Text
"List/length"
, Text
"List/head"
, Text
"List/last"
, Text
"List/indexed"
, Text
"List/reverse"
, Text
"Text/replace"
, Text
"Text/show"
, Text
"Bool"
, Text
"True"
, Text
"False"
, Text
"Optional"
, Text
"None"
, Text
"Natural"
, Text
"Integer"
, Text
"Double"
, Text
"Text"
, Text
"Date"
, Text
"Time"
, Text
"TimeZone"
, Text
"List"
, Text
"Type"
, Text
"Kind"
, Text
"Sort"
]
splitOn :: Text -> Text -> NonEmpty Text
splitOn :: Text -> Text -> NonEmpty Text
splitOn Text
needle Text
haystack =
case Text -> Text -> [Text]
Data.Text.splitOn Text
needle Text
haystack of
[] -> Text
"" forall a. a -> [a] -> NonEmpty a
:| []
Text
t : [Text]
ts -> Text
t forall a. a -> [a] -> NonEmpty a
:| [Text]
ts
linesLiteral :: Chunks s a -> NonEmpty (Chunks s a)
linesLiteral :: forall s a. Chunks s a -> NonEmpty (Chunks s a)
linesLiteral (Chunks [] Text
suffix) =
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks []) (Text -> Text -> NonEmpty Text
splitOn Text
"\n" Text
suffix)
linesLiteral (Chunks ((Text
prefix, Expr s a
interpolation) : [(Text, Expr s a)]
pairs₀) Text
suffix₀) =
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr
forall a. a -> NonEmpty a -> NonEmpty a
NonEmpty.cons
(forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks ((Text
lastLine, Expr s a
interpolation) forall a. a -> [a] -> [a]
: [(Text, Expr s a)]
pairs₁) Text
suffix₁ forall a. a -> [a] -> NonEmpty a
:| [Chunks s a]
chunks)
(forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks []) [Text]
initLines)
where
splitLines :: NonEmpty Text
splitLines = Text -> Text -> NonEmpty Text
splitOn Text
"\n" Text
prefix
initLines :: [Text]
initLines = forall a. NonEmpty a -> [a]
NonEmpty.init NonEmpty Text
splitLines
lastLine :: Text
lastLine = forall a. NonEmpty a -> a
NonEmpty.last NonEmpty Text
splitLines
Chunks [(Text, Expr s a)]
pairs₁ Text
suffix₁ :| [Chunks s a]
chunks = forall s a. Chunks s a -> NonEmpty (Chunks s a)
linesLiteral (forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [(Text, Expr s a)]
pairs₀ Text
suffix₀)
unlinesLiteral :: NonEmpty (Chunks s a) -> Chunks s a
unlinesLiteral :: forall s a. NonEmpty (Chunks s a) -> Chunks s a
unlinesLiteral NonEmpty (Chunks s a)
chunks =
forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
Data.Foldable.fold (forall a. a -> NonEmpty a -> NonEmpty a
NonEmpty.intersperse Chunks s a
"\n" NonEmpty (Chunks s a)
chunks)
emptyLine :: Chunks s a -> Bool
emptyLine :: forall s a. Chunks s a -> Bool
emptyLine (Chunks [] Text
"" ) = Bool
True
emptyLine (Chunks [] Text
"\r") = Bool
True
emptyLine Chunks s a
_ = Bool
False
leadingSpaces :: Chunks s a -> Text
leadingSpaces :: forall s a. Chunks s a -> Text
leadingSpaces Chunks s a
chunks = (Char -> Bool) -> Text -> Text
Data.Text.takeWhile Char -> Bool
isSpace Text
firstText
where
isSpace :: Char -> Bool
isSpace Char
c = Char
c forall a. Eq a => a -> a -> Bool
== Char
' ' Bool -> Bool -> Bool
|| Char
c forall a. Eq a => a -> a -> Bool
== Char
'\t'
firstText :: Text
firstText =
case Chunks s a
chunks of
Chunks [] Text
suffix -> Text
suffix
Chunks ((Text
prefix, Expr s a
_) : [(Text, Expr s a)]
_ ) Text
_ -> Text
prefix
longestSharedWhitespacePrefix :: NonEmpty (Chunks s a) -> Text
longestSharedWhitespacePrefix :: forall s a. NonEmpty (Chunks s a) -> Text
longestSharedWhitespacePrefix NonEmpty (Chunks s a)
literals =
case forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall s a. Chunks s a -> Text
leadingSpaces [Chunks s a]
filteredLines of
Text
l : [Text]
ls -> forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
Data.Foldable.foldl' Text -> Text -> Text
sharedPrefix Text
l [Text]
ls
[] -> Text
""
where
sharedPrefix :: Text -> Text -> Text
sharedPrefix Text
ab Text
ac =
case Text -> Text -> Maybe (Text, Text, Text)
Data.Text.commonPrefixes Text
ab Text
ac of
Just (Text
a, Text
_b, Text
_c) -> Text
a
Maybe (Text, Text, Text)
Nothing -> Text
""
filteredLines :: [Chunks s a]
filteredLines = [Chunks s a]
newInit forall a. Semigroup a => a -> a -> a
<> forall (f :: * -> *) a. Applicative f => a -> f a
pure Chunks s a
oldLast
where
oldInit :: [Chunks s a]
oldInit = forall a. NonEmpty a -> [a]
NonEmpty.init NonEmpty (Chunks s a)
literals
oldLast :: Chunks s a
oldLast = forall a. NonEmpty a -> a
NonEmpty.last NonEmpty (Chunks s a)
literals
newInit :: [Chunks s a]
newInit = forall a. (a -> Bool) -> [a] -> [a]
filter (Bool -> Bool
not forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall s a. Chunks s a -> Bool
emptyLine) [Chunks s a]
oldInit
dropLiteral :: Int -> Chunks s a -> Chunks s a
dropLiteral :: forall s a. Int -> Chunks s a -> Chunks s a
dropLiteral Int
n (Chunks [] Text
suffix) =
forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks [] (Int -> Text -> Text
Data.Text.drop Int
n Text
suffix)
dropLiteral Int
n (Chunks ((Text
prefix, Expr s a
interpolation) : [(Text, Expr s a)]
rest) Text
suffix) =
forall s a. [(Text, Expr s a)] -> Text -> Chunks s a
Chunks ((Int -> Text -> Text
Data.Text.drop Int
n Text
prefix, Expr s a
interpolation) forall a. a -> [a] -> [a]
: [(Text, Expr s a)]
rest) Text
suffix
toDoubleQuoted :: Chunks Src a -> Chunks Src a
toDoubleQuoted :: forall a. Chunks Src a -> Chunks Src a
toDoubleQuoted Chunks Src a
literal =
forall s a. NonEmpty (Chunks s a) -> Chunks s a
unlinesLiteral (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall s a. Int -> Chunks s a -> Chunks s a
dropLiteral Int
indent) NonEmpty (Chunks Src a)
literals)
where
literals :: NonEmpty (Chunks Src a)
literals = forall s a. Chunks s a -> NonEmpty (Chunks s a)
linesLiteral Chunks Src a
literal
longestSharedPrefix :: Text
longestSharedPrefix = forall s a. NonEmpty (Chunks s a) -> Text
longestSharedWhitespacePrefix NonEmpty (Chunks Src a)
literals
indent :: Int
indent = Text -> Int
Data.Text.length Text
longestSharedPrefix
shift :: Int -> Var -> Expr s a -> Expr s a
shift :: forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (V Text
x Int
n) (Var (V Text
x' Int
n')) = forall s a. Var -> Expr s a
Var (Text -> Int -> Var
V Text
x' Int
n'')
where
n'' :: Int
n'' = if Text
x forall a. Eq a => a -> a -> Bool
== Text
x' Bool -> Bool -> Bool
&& Int
n forall a. Ord a => a -> a -> Bool
<= Int
n' then Int
n' forall a. Num a => a -> a -> a
+ Int
d else Int
n'
shift Int
d (V Text
x Int
n) (Lam Maybe CharacterSet
cs (FunctionBinding Maybe s
src0 Text
x' Maybe s
src1 Maybe s
src2 Expr s a
_A) Expr s a
b) =
forall s a.
Maybe CharacterSet -> FunctionBinding s a -> Expr s a -> Expr s a
Lam Maybe CharacterSet
cs (forall s a.
Maybe s
-> Text -> Maybe s -> Maybe s -> Expr s a -> FunctionBinding s a
FunctionBinding Maybe s
src0 Text
x' Maybe s
src1 Maybe s
src2 Expr s a
_A') Expr s a
b'
where
_A' :: Expr s a
_A' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n ) Expr s a
_A
b' :: Expr s a
b' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n') Expr s a
b
where
n' :: Int
n' = if Text
x forall a. Eq a => a -> a -> Bool
== Text
x' then Int
n forall a. Num a => a -> a -> a
+ Int
1 else Int
n
shift Int
d (V Text
x Int
n) (Pi Maybe CharacterSet
cs Text
x' Expr s a
_A Expr s a
_B) = forall s a.
Maybe CharacterSet -> Text -> Expr s a -> Expr s a -> Expr s a
Pi Maybe CharacterSet
cs Text
x' Expr s a
_A' Expr s a
_B'
where
_A' :: Expr s a
_A' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n ) Expr s a
_A
_B' :: Expr s a
_B' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n') Expr s a
_B
where
n' :: Int
n' = if Text
x forall a. Eq a => a -> a -> Bool
== Text
x' then Int
n forall a. Num a => a -> a -> a
+ Int
1 else Int
n
shift Int
d (V Text
x Int
n) (Let (Binding Maybe s
src0 Text
f Maybe s
src1 Maybe (Maybe s, Expr s a)
mt Maybe s
src2 Expr s a
r) Expr s a
e) =
forall s a. Binding s a -> Expr s a -> Expr s a
Let (forall s a.
Maybe s
-> Text
-> Maybe s
-> Maybe (Maybe s, Expr s a)
-> Maybe s
-> Expr s a
-> Binding s a
Binding Maybe s
src0 Text
f Maybe s
src1 Maybe (Maybe s, Expr s a)
mt' Maybe s
src2 Expr s a
r') Expr s a
e'
where
e' :: Expr s a
e' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n') Expr s a
e
where
n' :: Int
n' = if Text
x forall a. Eq a => a -> a -> Bool
== Text
f then Int
n forall a. Num a => a -> a -> a
+ Int
1 else Int
n
mt' :: Maybe (Maybe s, Expr s a)
mt' = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n))) Maybe (Maybe s, Expr s a)
mt
r' :: Expr s a
r' = forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d (Text -> Int -> Var
V Text
x Int
n) Expr s a
r
shift Int
d Var
v Expr s a
expression = forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
Lens.over forall (f :: * -> *) s a.
Applicative f =>
(Expr s a -> f (Expr s a)) -> Expr s a -> f (Expr s a)
subExpressions (forall s a. Int -> Var -> Expr s a -> Expr s a
shift Int
d Var
v) Expr s a
expression
_ERROR :: String
_ERROR :: String
_ERROR = String
"\ESC[1;31mError\ESC[0m"
internalError :: Data.Text.Text -> forall b . b
internalError :: Text -> forall b. b
internalError Text
text = forall a. HasCallStack => String -> a
error ([String] -> String
unlines
[ String
_ERROR forall a. Semigroup a => a -> a -> a
<> String
": Compiler bug "
, String
" "
, String
"Explanation: This error message means that there is a bug in the Dhall compiler."
, String
"You didn't do anything wrong, but if you would like to see this problem fixed "
, String
"then you should report the bug at: "
, String
" "
, String
"https://github.com/dhall-lang/dhall-haskell/issues "
, String
" "
, String
"Please include the following text in your bug report: "
, String
" "
, String
"``` "
, Text -> String
Data.Text.unpack Text
text forall a. Semigroup a => a -> a -> a
<> String
" "
, String
"``` "
] )