-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Jsonnet implementaton in pure Haskell
--
-- Please see the README on GitHub at
-- https://github.com/moleike/jsonnet-haskell#readme
@package jsonnet
@version 0.3.0.0
-- | Annotated trees, based on fixplate
module Language.Jsonnet.Annotate
type AnnF f a = Product (Const a) f
-- | Annotated fixed-point type. Equivalent to CoFree f a
type Ann f a = Fix (AnnF f a)
pattern AnnF :: forall {a1} {g} {a2}. g a2 -> a1 -> Product (Const a1 :: Type -> Type) g a2
annMap :: Functor f => (a -> b) -> Ann f a -> Ann f b
forget :: Functor f => Ann f a -> Fix f
attrib :: Ann f a -> a
inherit :: Functor f => (Fix f -> a -> (b, a)) -> a -> Fix f -> Ann f b
annZip :: Functor f => Fix (AnnF (AnnF f a) b) -> Ann f (a, b)
module Language.Jsonnet.Parser.SrcSpan
data SrcSpan
SrcSpan :: SourcePos -> SourcePos -> SrcSpan
[spanBegin] :: SrcSpan -> SourcePos
[spanEnd] :: SrcSpan -> SourcePos
class HasSrcSpan a
srcSpan :: HasSrcSpan a => a -> SrcSpan
instance Language.Jsonnet.Parser.SrcSpan.HasSrcSpan Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance Unbound.Generics.LocallyNameless.Subst.Subst b Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Base.Semigroup Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance Data.Data.Data Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Generics.Generic Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Read.Read Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Show.Show Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Classes.Eq Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance GHC.Classes.Ord Language.Jsonnet.Parser.SrcSpan.SrcSpan
module Language.Jsonnet.Common
data Literal
Null :: Literal
Bool :: Bool -> Literal
String :: Text -> Literal
Number :: Scientific -> Literal
data Prim
UnyOp :: UnyOp -> Prim
BinOp :: BinOp -> Prim
Cond :: Prim
data BinOp
Add :: BinOp
Sub :: BinOp
Mul :: BinOp
Div :: BinOp
Mod :: BinOp
Lt :: BinOp
Le :: BinOp
Gt :: BinOp
Ge :: BinOp
Eq :: BinOp
Ne :: BinOp
And :: BinOp
Or :: BinOp
Xor :: BinOp
ShiftL :: BinOp
ShiftR :: BinOp
LAnd :: BinOp
LOr :: BinOp
In :: BinOp
Lookup :: BinOp
data UnyOp
Compl :: UnyOp
LNot :: UnyOp
Plus :: UnyOp
Minus :: UnyOp
Err :: UnyOp
data Strictness
Strict :: Strictness
Lazy :: Strictness
data Arg a
Pos :: a -> Arg a
Named :: String -> a -> Arg a
data Args a
Args :: [Arg a] -> Strictness -> Args a
[args] :: Args a -> [Arg a]
[strictness] :: Args a -> Strictness
data Assert a
Assert :: a -> Maybe a -> a -> Assert a
[cond] :: Assert a -> a
[msg] :: Assert a -> Maybe a
[expr] :: Assert a -> a
data CompSpec a
CompSpec :: String -> a -> Maybe a -> CompSpec a
[var] :: CompSpec a -> String
[forspec] :: CompSpec a -> a
[ifspec] :: CompSpec a -> Maybe a
data StackFrame a
StackFrame :: Name a -> SrcSpan -> StackFrame a
[name] :: StackFrame a -> Name a
[span] :: StackFrame a -> SrcSpan
newtype Backtrace a
Backtrace :: [StackFrame a] -> Backtrace a
data Visibility
Visible :: Visibility
Hidden :: Visibility
Forced :: Visibility
class HasVisibility a
visible :: HasVisibility a => a -> Bool
forced :: HasVisibility a => a -> Bool
hidden :: HasVisibility a => a -> Bool
instance GHC.Show.Show (Language.Jsonnet.Common.StackFrame a)
instance GHC.Classes.Eq (Language.Jsonnet.Common.StackFrame a)
instance GHC.Show.Show (Language.Jsonnet.Common.Backtrace a)
instance GHC.Classes.Eq (Language.Jsonnet.Common.Backtrace a)
instance Data.Data.Data Language.Jsonnet.Common.Visibility
instance GHC.Generics.Generic Language.Jsonnet.Common.Visibility
instance GHC.Show.Show Language.Jsonnet.Common.Visibility
instance GHC.Read.Read Language.Jsonnet.Common.Visibility
instance GHC.Classes.Eq Language.Jsonnet.Common.Visibility
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Visibility
instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.CompSpec
instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.CompSpec a)
instance Data.Traversable.Traversable Language.Jsonnet.Common.CompSpec
instance Data.Foldable.Foldable Language.Jsonnet.Common.CompSpec
instance GHC.Base.Functor Language.Jsonnet.Common.CompSpec
instance GHC.Generics.Generic (Language.Jsonnet.Common.CompSpec a)
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.CompSpec a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.CompSpec a)
instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.CompSpec a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.CompSpec a)
instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Assert
instance Data.Traversable.Traversable Language.Jsonnet.Common.Assert
instance Data.Foldable.Foldable Language.Jsonnet.Common.Assert
instance GHC.Base.Functor Language.Jsonnet.Common.Assert
instance GHC.Generics.Generic (Language.Jsonnet.Common.Assert a)
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Assert a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Assert a)
instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Assert a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Assert a)
instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Assert a)
instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Args
instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Args a)
instance Data.Traversable.Traversable Language.Jsonnet.Common.Args
instance Data.Foldable.Foldable Language.Jsonnet.Common.Args
instance GHC.Base.Functor Language.Jsonnet.Common.Args
instance GHC.Generics.Generic (Language.Jsonnet.Common.Args a)
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Args a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Args a)
instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Args a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Args a)
instance Data.Functor.Classes.Show1 Language.Jsonnet.Common.Arg
instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Common.Arg a)
instance Data.Data.Data Language.Jsonnet.Common.BinOp
instance GHC.Generics.Generic Language.Jsonnet.Common.BinOp
instance GHC.Classes.Eq Language.Jsonnet.Common.BinOp
instance GHC.Show.Show Language.Jsonnet.Common.BinOp
instance Data.Data.Data Language.Jsonnet.Common.UnyOp
instance GHC.Generics.Generic Language.Jsonnet.Common.UnyOp
instance GHC.Classes.Eq Language.Jsonnet.Common.UnyOp
instance GHC.Show.Show Language.Jsonnet.Common.UnyOp
instance Data.Data.Data Language.Jsonnet.Common.Prim
instance GHC.Generics.Generic Language.Jsonnet.Common.Prim
instance GHC.Classes.Eq Language.Jsonnet.Common.Prim
instance GHC.Show.Show Language.Jsonnet.Common.Prim
instance Data.Data.Data Language.Jsonnet.Common.Strictness
instance GHC.Generics.Generic Language.Jsonnet.Common.Strictness
instance GHC.Show.Show Language.Jsonnet.Common.Strictness
instance GHC.Read.Read Language.Jsonnet.Common.Strictness
instance GHC.Classes.Eq Language.Jsonnet.Common.Strictness
instance Data.Traversable.Traversable Language.Jsonnet.Common.Arg
instance Data.Foldable.Foldable Language.Jsonnet.Common.Arg
instance GHC.Base.Functor Language.Jsonnet.Common.Arg
instance GHC.Generics.Generic1 Language.Jsonnet.Common.Arg
instance GHC.Generics.Generic (Language.Jsonnet.Common.Arg a)
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Common.Arg a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Common.Arg a)
instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Common.Arg a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Common.Arg a)
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Strictness
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Prim
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.UnyOp
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.BinOp
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Common.Literal
instance Unbound.Generics.LocallyNameless.Subst.Subst a Language.Jsonnet.Common.Literal
instance Data.Data.Data Language.Jsonnet.Common.Literal
instance GHC.Generics.Generic Language.Jsonnet.Common.Literal
instance GHC.Classes.Ord Language.Jsonnet.Common.Literal
instance GHC.Classes.Eq Language.Jsonnet.Common.Literal
instance GHC.Show.Show Language.Jsonnet.Common.Literal
module Language.Jsonnet.Core
type Param a = (Name a, Embed a)
data CField
CField :: Core -> Core -> Visibility -> CField
[fieldKey] :: CField -> Core
[fieldVal] :: CField -> Core
[fieldVis] :: CField -> Visibility
mkField :: Core -> Core -> Visibility -> CField
data Comp
ArrC :: Bind (Name Core) (Core, Maybe Core) -> Comp
ObjC :: Bind (Name Core) (CField, Maybe Core) -> Comp
type Lam = Bind (Rec [Param Core]) Core
type Let = Bind (Rec [(Name Core, Embed Core)]) Core
data Core
[CLoc] :: SrcSpan -> Core -> Core
[CLit] :: Literal -> Core
[CVar] :: Name Core -> Core
[CLam] :: Lam -> Core
[CPrim] :: Prim -> Core
[CApp] :: Core -> Args Core -> Core
[CLet] :: Let -> Core
[CObj] :: [CField] -> Core
[CArr] :: [Core] -> Core
[CComp] :: Comp -> Core -> Core
instance GHC.Generics.Generic Language.Jsonnet.Core.CField
instance GHC.Show.Show Language.Jsonnet.Core.CField
instance GHC.Generics.Generic Language.Jsonnet.Core.Comp
instance GHC.Show.Show Language.Jsonnet.Core.Comp
instance GHC.Generics.Generic Language.Jsonnet.Core.Core
instance GHC.Show.Show Language.Jsonnet.Core.Core
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.CField
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.Comp
instance Unbound.Generics.LocallyNameless.Alpha.Alpha Language.Jsonnet.Core.Core
instance Data.String.IsString (Unbound.Generics.LocallyNameless.Name.Name Language.Jsonnet.Core.Core)
module Language.Jsonnet.Error
data Error
ParserError :: ParserError -> Error
CheckError :: CheckError -> Maybe SrcSpan -> Error
EvalError :: EvalError -> Backtrace Core -> Error
data EvalError
TypeMismatch :: Text -> Text -> EvalError
[expected] :: EvalError -> Text
[actual] :: EvalError -> Text
InvalidKey :: Doc -> EvalError
DuplicateKey :: Doc -> EvalError
NoSuchKey :: Doc -> EvalError
InvalidIndex :: Doc -> EvalError
IndexOutOfBounds :: Scientific -> EvalError
DivByZero :: EvalError
VarNotFound :: Doc -> EvalError
AssertionFailed :: Doc -> EvalError
TooManyArgs :: Int -> EvalError
ParamNotBound :: Doc -> EvalError
BadParam :: Doc -> EvalError
StdError :: Doc -> EvalError
RuntimeError :: Doc -> EvalError
ManifestError :: Doc -> EvalError
data ParserError
ParseError :: ParseErrorBundle Text Void -> ParserError
ImportError :: IOError -> Maybe SrcSpan -> ParserError
data CheckError
DuplicateParam :: String -> CheckError
PosAfterNamedParam :: CheckError
DuplicateBinding :: String -> CheckError
instance GHC.Show.Show Language.Jsonnet.Error.EvalError
instance GHC.Show.Show Language.Jsonnet.Error.ParserError
instance GHC.Classes.Eq Language.Jsonnet.Error.ParserError
instance GHC.Show.Show Language.Jsonnet.Error.CheckError
instance GHC.Show.Show Language.Jsonnet.Error.Error
instance GHC.Exception.Type.Exception Language.Jsonnet.Error.EvalError
module Language.Jsonnet.Eval.Monad
type Ctx a = Map (Name Core) a
-- | Simulate a call-stack to report stack traces
data CallStack
CallStack :: [Maybe SrcSpan] -> [Name Core] -> CallStack
-- | source location of call-sites
[_spans] :: CallStack -> [Maybe SrcSpan]
-- | names of called functions
[_scopes] :: CallStack -> [Name Core]
spans :: Lens' CallStack [Maybe SrcSpan]
scopes :: Lens' CallStack [Name Core]
emptyStack :: CallStack
data EvalState a
EvalState :: Ctx a -> CallStack -> Maybe SrcSpan -> EvalState a
-- | binding local variables to their values
[_ctx] :: EvalState a -> Ctx a
-- | call-stack simulation
[_callStack] :: EvalState a -> CallStack
-- | source span of expression being evaluated
[_currentPos] :: EvalState a -> Maybe SrcSpan
currentPos :: forall a_aZwG. Lens' (EvalState a_aZwG) (Maybe SrcSpan)
ctx :: forall a_aZwG a_aZDT. Lens (EvalState a_aZwG) (EvalState a_aZDT) (Ctx a_aZwG) (Ctx a_aZDT)
callStack :: forall a_aZwG. Lens' (EvalState a_aZwG) CallStack
newtype EvalM a b
EvalM :: ExceptT Error (ReaderT (EvalState a) (FreshMT IO)) b -> EvalM a b
[unEval] :: EvalM a b -> ExceptT Error (ReaderT (EvalState a) (FreshMT IO)) b
runEvalM :: Ctx a -> EvalM a b -> IO (Either Error b)
throwE :: EvalError -> EvalM a b
extendEnv :: Ctx a -> EvalM a b -> EvalM a b
withEnv :: Ctx a -> EvalM a b -> EvalM a b
pushStackFrame :: (Name Core, Maybe SrcSpan) -> EvalM a b -> EvalM a b
getBacktrace :: EvalM a (Backtrace Core)
instance Unbound.Generics.LocallyNameless.Fresh.Fresh (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Fix.MonadFix (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Fail.MonadFail (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Catch.MonadMask (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Catch.MonadCatch (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Catch.MonadThrow (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Error.Class.MonadError Language.Jsonnet.Error.Error (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.Reader.Class.MonadReader (Language.Jsonnet.Eval.Monad.EvalState a) (Language.Jsonnet.Eval.Monad.EvalM a)
instance Control.Monad.IO.Class.MonadIO (Language.Jsonnet.Eval.Monad.EvalM a)
instance GHC.Base.Monad (Language.Jsonnet.Eval.Monad.EvalM a)
instance GHC.Base.Applicative (Language.Jsonnet.Eval.Monad.EvalM a)
instance GHC.Base.Functor (Language.Jsonnet.Eval.Monad.EvalM a)
module Language.Jsonnet.Pretty
ppNumber :: Scientific -> Doc
ppJson :: Int -> Value -> Doc
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Unbound.Generics.LocallyNameless.Name.Name a)
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Data.Text.Internal.Text
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Data.Aeson.Types.Internal.Value
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.ParserError
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.CheckError
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.EvalError
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Jsonnet.Common.StackFrame a)
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty (Language.Jsonnet.Common.Backtrace a)
instance Text.PrettyPrint.ANSI.Leijen.Internal.Pretty Language.Jsonnet.Error.Error
module Language.Jsonnet.Syntax
type Ident = String
type Param a = (Ident, Maybe a)
data EField a
EField :: a -> a -> Visibility -> Bool -> EField a
[key] :: EField a -> a
[value] :: EField a -> a
[visibility] :: EField a -> Visibility
[override] :: EField a -> Bool
data ExprF a
ELit :: Literal -> ExprF a
EIdent :: Ident -> ExprF a
EFun :: [Param a] -> a -> ExprF a
EApply :: a -> Args a -> ExprF a
ELocal :: NonEmpty (Ident, a) -> a -> ExprF a
-- | non-empty list of recursive bindings
[bnds] :: ExprF a -> NonEmpty (Ident, a)
-- | body expression
[expr] :: ExprF a -> a
EObj :: [(Ident, a)] -> [EField a] -> ExprF a
[locals] :: ExprF a -> [(Ident, a)]
[fields] :: ExprF a -> [EField a]
EArr :: [a] -> ExprF a
EErr :: a -> ExprF a
ELookup :: a -> a -> ExprF a
EIndex :: a -> a -> ExprF a
EAssert :: Assert a -> ExprF a
EIf :: a -> a -> ExprF a
EIfElse :: a -> a -> a -> ExprF a
ESlice :: a -> Maybe a -> Maybe a -> Maybe a -> ExprF a
-- | body expression
[expr] :: ExprF a -> a
[start] :: ExprF a -> Maybe a
[end] :: ExprF a -> Maybe a
[step] :: ExprF a -> Maybe a
EBinOp :: BinOp -> a -> a -> ExprF a
EUnyOp :: UnyOp -> a -> ExprF a
EArrComp :: a -> NonEmpty (CompSpec a) -> ExprF a
-- | body expression
[expr] :: ExprF a -> a
[comp] :: ExprF a -> NonEmpty (CompSpec a)
EObjComp :: EField a -> [(Ident, a)] -> NonEmpty (CompSpec a) -> ExprF a
[field] :: ExprF a -> EField a
[locals] :: ExprF a -> [(Ident, a)]
[comp] :: ExprF a -> NonEmpty (CompSpec a)
newtype Import
Import :: FilePath -> Import
type ExprF' = Sum ExprF (Const Import)
mkImportF :: String -> ExprF' a
mkNullF :: ExprF' a
mkIntF :: Integral b => b -> ExprF' a
mkFloatF :: Scientific -> ExprF' a
mkStrF :: String -> ExprF' a
mkBoolF :: Bool -> ExprF' a
mkIdentF :: Ident -> ExprF' a
mkFunF :: [Param a] -> a -> ExprF' a
mkApplyF :: a -> Args a -> ExprF' a
mkIfF :: a -> a -> ExprF' a
mkIfElseF :: a -> a -> a -> ExprF' a
mkLocalF :: NonEmpty (Ident, a) -> a -> ExprF' a
mkLookupF :: a -> a -> ExprF' a
mkIndexF :: a -> a -> ExprF' a
mkSliceF :: a -> Maybe a -> Maybe a -> Maybe a -> ExprF' a
mkObjectF :: [EField a] -> [(Ident, a)] -> ExprF' a
mkArrayF :: [a] -> ExprF' a
mkErrorF :: a -> ExprF' a
mkAssertF :: a -> Maybe a -> a -> ExprF' a
mkArrCompF :: a -> NonEmpty (CompSpec a) -> ExprF' a
mkObjCompF :: EField a -> [(Ident, a)] -> NonEmpty (CompSpec a) -> ExprF' a
instance GHC.Classes.Eq Language.Jsonnet.Syntax.Import
instance GHC.Show.Show Language.Jsonnet.Syntax.Import
instance Data.Functor.Classes.Show1 Language.Jsonnet.Syntax.ExprF
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Syntax.ExprF a)
instance GHC.Generics.Generic (Language.Jsonnet.Syntax.ExprF a)
instance Data.Traversable.Traversable Language.Jsonnet.Syntax.ExprF
instance Data.Foldable.Foldable Language.Jsonnet.Syntax.ExprF
instance GHC.Base.Functor Language.Jsonnet.Syntax.ExprF
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Syntax.ExprF a)
instance Data.Functor.Classes.Show1 Language.Jsonnet.Syntax.EField
instance Data.Traversable.Traversable Language.Jsonnet.Syntax.EField
instance Data.Foldable.Foldable Language.Jsonnet.Syntax.EField
instance GHC.Base.Functor Language.Jsonnet.Syntax.EField
instance GHC.Generics.Generic (Language.Jsonnet.Syntax.EField a)
instance Data.Data.Data a => Data.Data.Data (Language.Jsonnet.Syntax.EField a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Jsonnet.Syntax.EField a)
instance GHC.Read.Read a => GHC.Read.Read (Language.Jsonnet.Syntax.EField a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Jsonnet.Syntax.EField a)
instance Unbound.Generics.LocallyNameless.Alpha.Alpha a => Unbound.Generics.LocallyNameless.Alpha.Alpha (Language.Jsonnet.Syntax.EField a)
module Language.Jsonnet.Desugar
desugar :: Desugarer a => a -> Core
instance Language.Jsonnet.Desugar.Desugarer (Language.Jsonnet.Annotate.Ann Language.Jsonnet.Syntax.ExprF ())
instance Language.Jsonnet.Desugar.Desugarer (Language.Jsonnet.Annotate.Ann Language.Jsonnet.Syntax.ExprF Language.Jsonnet.Parser.SrcSpan.SrcSpan)
module Language.Jsonnet.Check
type Check = ExceptT Error IO
check :: Ann ExprF SrcSpan -> Check ()
module Language.Jsonnet.Syntax.Annotated
-- | annotated syntax tree with resolved imports
type Expr = Ann ExprF SrcSpan
-- | annotated syntax tree with unresolved imports
type Expr' = Ann ExprF' SrcSpan
mkApply :: Expr' -> Args Expr' -> Expr'
mkLookup :: Expr' -> Expr' -> Expr'
mkIndex :: Expr' -> Expr' -> Expr'
mkSlice :: Maybe Expr' -> Maybe Expr' -> Maybe Expr' -> Expr' -> Expr'
mkBinOp :: BinOp -> Expr' -> Expr' -> Expr'
mkUnyOp :: UnyOp -> Expr' -> Expr'
-- | Parser for Jsonnet source code.
module Language.Jsonnet.Parser
parse :: MonadError Error m => FilePath -> Text -> m Expr'
resolveImports :: (MonadError Error m, MonadIO m) => FilePath -> Expr' -> m Expr
module Language.Jsonnet.TH
liftText :: Text -> Q Exp
liftDataWithText :: Data a => a -> Q Exp
parse :: FilePath -> Text -> Q Exp
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Arg a)
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Parser.SrcSpan.SrcSpan
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Visibility
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Args a)
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Strictness
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Literal
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.Prim
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.BinOp
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Common.UnyOp
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Syntax.EField a)
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.Assert a)
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Common.CompSpec a)
instance Data.Data.Data a => Language.Haskell.TH.Syntax.Lift (Language.Jsonnet.Syntax.ExprF a)
instance (Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable f, Data.Typeable.Internal.Typeable g, Data.Data.Data (f a), Data.Data.Data (g a)) => Language.Haskell.TH.Syntax.Lift (Data.Functor.Product.Product f g a)
instance Language.Haskell.TH.Syntax.Lift Language.Jsonnet.Syntax.Annotated.Expr
module Language.Jsonnet.Std.TH
stdlibPath :: String
mkStdlib :: Q Exp
module Language.Jsonnet.TH.QQ
jsonnet :: QuasiQuoter
module Language.Jsonnet.Value
type Eval = EvalM Value
type Env = Ctx Value
data Value
VNull :: Value
VBool :: !Bool -> Value
VStr :: !Text -> Value
VNum :: !Scientific -> Value
VObj :: !Object -> Value
VArr :: !Vector Value -> Value
VThunk :: !Core -> !Env -> Value
VIndir :: !Ref -> Value
VPrim :: !Prim -> Value
VClos :: !Lam -> !Env -> Value
VFun :: !Fun -> Value
data VField
VField :: Value -> Value -> Value -> Visibility -> VField
[fieldKey] :: VField -> Value
[fieldValWHNF] :: VField -> Value
[fieldVal] :: VField -> Value
[fieldVis] :: VField -> Visibility
type Fun = Value -> Eval Value
type Object = HashMap Text VField
data Cell
Cell :: Value -> Bool -> Cell
[cellVal] :: Cell -> Value
[cellIsWHNF] :: Cell -> Bool
type Ref = IORef Cell
class HasValue a
inj :: HasValue a => a -> Value
proj :: HasValue a => Value -> Eval a
mkCell :: Value -> Cell
mkIndirV :: MonadIO m => Value -> m Value
mkThunk :: Core -> Eval Value
allocate :: MonadIO m => Value -> m (IORef Cell)
instance GHC.Generics.Generic Language.Jsonnet.Value.VField
instance GHC.Generics.Generic Language.Jsonnet.Value.Cell
instance Language.Jsonnet.Value.HasValue Language.Jsonnet.Value.Value
instance Language.Jsonnet.Common.HasVisibility Language.Jsonnet.Value.VField
module Language.Jsonnet.Eval
rnf :: Core -> Eval Value
whnfV :: Value -> Eval Value
whnf :: Core -> Eval Value
mkValue :: Core -> Eval Value
lookupVar :: Name Core -> Eval Value
whnfLiteral :: Literal -> Value
whnfArgs :: Args Core -> Eval [Arg Value]
whnfApp :: Core -> Args Core -> Eval Value
withStackFrame :: Core -> Eval a -> Eval a
whnfClos :: Env -> Lam -> [Arg Value] -> Eval Value
appDefaults :: [(Name Core, Core)] -> Core -> Eval Value
splitArgs :: [Arg b1] -> [(Name a1, b2)] -> EvalM a2 ([(Name a1, b2)], [(Name a1, b1)], [(Name a1, b1)])
whnfPrim :: Prim -> [Arg Value] -> Eval Value
whnfBinOp :: BinOp -> Value -> Value -> Eval Value
whnfLogical :: HasValue a => (a -> Bool) -> Value -> Value -> Eval Value
append :: Value -> Value -> Eval Text
whnfUnyOp :: UnyOp -> Value -> Eval Value
toString :: Value -> Eval Text
whnfCond :: Value -> Value -> Value -> Eval Value
whnfLookup :: Value -> Value -> Eval Value
whnfIndir :: Ref -> Eval Value
whnfLetrec :: Let -> Eval Value
whnfObj :: [CField] -> Eval Value
whnfField :: Env -> CField -> Eval (Maybe (Text, VField))
flattenArrays :: Vector (Vector Value) -> Vector Value
whnfComp :: Comp -> Core -> Eval Value
-- | Right-biased union of two objects, i.e. '{x : 1} + {x : 2} == {x : 2}'
-- with OO-like self and super support via value
-- recursion (knot-tying)
mergeWith :: Object -> Object -> Eval Value
visibleKeys :: Object -> HashMap Text Value
liftMaybe :: EvalError -> Maybe a -> Eval a
manifest :: Value -> Eval Value
objectFieldsEx :: Object -> Bool -> [Text]
objectHasEx :: Object -> Text -> Bool -> Bool
primitiveEquals :: Value -> Value -> Eval Bool
equals :: Value -> Value -> Eval Bool
allM :: Monad m => (a -> m Bool) -> [a] -> m Bool
liftF :: (HasValue a, HasValue b) => (a -> b) -> Value -> Eval Value
liftF2 :: (HasValue a, HasValue b, HasValue c) => (a -> b -> c) -> Value -> Value -> Eval Value
proj' :: HasValue a => Value -> Eval a
throwTypeMismatch :: Text -> Value -> Eval a
showTy :: Value -> Eval Text
instance Language.Jsonnet.Value.HasValue GHC.Types.Bool
instance Language.Jsonnet.Value.HasValue Data.Text.Internal.Text
instance Language.Jsonnet.Value.HasValue [GHC.Types.Char]
instance Language.Jsonnet.Value.HasValue Data.ByteString.Internal.ByteString
instance Language.Jsonnet.Value.HasValue Data.Scientific.Scientific
instance Language.Jsonnet.Value.HasValue GHC.Types.Double
instance GHC.Real.Integral a => Language.Jsonnet.Value.HasValue a
instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue (GHC.Maybe.Maybe a)
instance Language.Jsonnet.Value.HasValue Language.Jsonnet.Value.Object
instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue (Data.Vector.Vector a)
instance Language.Jsonnet.Value.HasValue a => Language.Jsonnet.Value.HasValue [a]
instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b) => Language.Jsonnet.Value.HasValue (a -> b)
instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b, Language.Jsonnet.Value.HasValue c) => Language.Jsonnet.Value.HasValue (a -> b -> c)
instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b) => Language.Jsonnet.Value.HasValue (a -> Language.Jsonnet.Value.Eval b)
instance (Language.Jsonnet.Value.HasValue a, Language.Jsonnet.Value.HasValue b, Language.Jsonnet.Value.HasValue c) => Language.Jsonnet.Value.HasValue (a -> b -> Language.Jsonnet.Value.Eval c)
module Language.Jsonnet.Std.Lib
-- | Jsonnet standard library built-in methods
std :: Value
objectHasEx :: Object -> Text -> Bool -> Bool
instance Data.Aeson.Types.FromJSON.FromJSON Language.Jsonnet.Value.Value
module Language.Jsonnet
data JsonnetM a
interpret :: Config -> Text -> IO (Either Error Value)
newtype Config
Config :: FilePath -> Config
[fname] :: Config -> FilePath
data Value
VNull :: Value
VBool :: !Bool -> Value
VStr :: !Text -> Value
VNum :: !Scientific -> Value
VObj :: !Object -> Value
VArr :: !Vector Value -> Value
VThunk :: !Core -> !Env -> Value
VIndir :: !Ref -> Value
VPrim :: !Prim -> Value
VClos :: !Lam -> !Env -> Value
VFun :: !Fun -> Value
runJsonnetM :: Config -> JsonnetM a -> IO (Either Error a)
parse :: Text -> JsonnetM Expr
-- | evaluate a Core expression with the implicit stdlib
evaluate :: Core -> JsonnetM Value
desugar :: Expr -> JsonnetM Core
instance Control.Monad.Fail.MonadFail Language.Jsonnet.JsonnetM
instance Control.Monad.Catch.MonadMask Language.Jsonnet.JsonnetM
instance Control.Monad.Catch.MonadCatch Language.Jsonnet.JsonnetM
instance Control.Monad.Catch.MonadThrow Language.Jsonnet.JsonnetM
instance Control.Monad.Error.Class.MonadError Language.Jsonnet.Error.Error Language.Jsonnet.JsonnetM
instance Control.Monad.Reader.Class.MonadReader Language.Jsonnet.Config Language.Jsonnet.JsonnetM
instance Control.Monad.Fix.MonadFix Language.Jsonnet.JsonnetM
instance Control.Monad.IO.Class.MonadIO Language.Jsonnet.JsonnetM
instance GHC.Base.Monad Language.Jsonnet.JsonnetM
instance GHC.Base.Applicative Language.Jsonnet.JsonnetM
instance GHC.Base.Functor Language.Jsonnet.JsonnetM