forked from GitHub/gf-core
Choice-splitting versions of mapVariants and mapConstVs
This commit is contained in:
@@ -3,7 +3,8 @@
|
|||||||
module GF.Compile.Compute.Concrete2
|
module GF.Compile.Compute.Concrete2
|
||||||
(Env, Scope, Value(..), Variants(..), Constraint, OptionInfo(..), ChoiceMap, cleanOptions,
|
(Env, Scope, Value(..), Variants(..), Constraint, OptionInfo(..), ChoiceMap, cleanOptions,
|
||||||
ConstValue(..), ConstVariants(..), Globals(..), PredefTable, EvalM,
|
ConstValue(..), ConstVariants(..), Globals(..), PredefTable, EvalM,
|
||||||
mapVariants, unvariants, variants2consts, consts2variants,
|
mapVariants, mapVariantsC, unvariants, variants2consts,
|
||||||
|
mapConstVs, mapConstVsC, unconstVs, consts2variants,
|
||||||
runEvalM, runEvalMWithOpts, stdPredef, globals, withState,
|
runEvalM, runEvalMWithOpts, stdPredef, globals, withState,
|
||||||
PredefImpl, Predef(..), ($\),
|
PredefImpl, Predef(..), ($\),
|
||||||
pdCanonicalArgs, pdArity,
|
pdCanonicalArgs, pdArity,
|
||||||
@@ -102,6 +103,10 @@ mapVariants :: (Value -> Value) -> Variants -> Variants
|
|||||||
mapVariants f (VarFree vs) = VarFree (f <$> vs)
|
mapVariants f (VarFree vs) = VarFree (f <$> vs)
|
||||||
mapVariants f (VarOpts n cs) = VarOpts n (second f <$> cs)
|
mapVariants f (VarOpts n cs) = VarOpts n (second f <$> cs)
|
||||||
|
|
||||||
|
mapVariantsC :: (Choice -> Value -> Value) -> Choice -> Variants -> Variants
|
||||||
|
mapVariantsC f c (VarFree vs) = VarFree (mapC f c vs)
|
||||||
|
mapVariantsC f c (VarOpts n cs) = VarOpts n (mapC (second . f) c cs)
|
||||||
|
|
||||||
unvariants :: Variants -> [Value]
|
unvariants :: Variants -> [Value]
|
||||||
unvariants (VarFree vs) = vs
|
unvariants (VarFree vs) = vs
|
||||||
unvariants (VarOpts n cs) = snd <$> cs
|
unvariants (VarOpts n cs) = snd <$> cs
|
||||||
@@ -142,6 +147,10 @@ mapConstVs :: (ConstValue a -> ConstValue b) -> ConstVariants a -> ConstVariants
|
|||||||
mapConstVs f (ConstFree vs) = ConstFree (f <$> vs)
|
mapConstVs f (ConstFree vs) = ConstFree (f <$> vs)
|
||||||
mapConstVs f (ConstOpts n cs) = ConstOpts n (second f <$> cs)
|
mapConstVs f (ConstOpts n cs) = ConstOpts n (second f <$> cs)
|
||||||
|
|
||||||
|
mapConstVsC :: (Choice -> ConstValue a -> ConstValue b) -> Choice -> ConstVariants a -> ConstVariants b
|
||||||
|
mapConstVsC f c (ConstFree vs) = ConstFree (mapC f c vs)
|
||||||
|
mapConstVsC f c (ConstOpts n cs) = ConstOpts n (mapC (second . f) c cs)
|
||||||
|
|
||||||
unconstVs :: ConstVariants a -> [ConstValue a]
|
unconstVs :: ConstVariants a -> [ConstValue a]
|
||||||
unconstVs (ConstFree vs) = vs
|
unconstVs (ConstFree vs) = vs
|
||||||
unconstVs (ConstOpts n cs) = snd <$> cs
|
unconstVs (ConstOpts n cs) = snd <$> cs
|
||||||
|
|||||||
Reference in New Issue
Block a user