helper function to collapse double conditionals Cond[Cond[T]] to Cond[T]
determines if two conditional values have equal value in all configurations
alternative implementation with more satisifiability checks and potentially fewer comparisons
combines entries from two conditional values to a conditional pair of values
combines entries from two conditional values to a conditional pair of values
this explodes variability and may repeat values as needed
explodes a list of optional entries to choice of lists.
explodes a list of optional entries to choice of lists.
use carefully, can be very expensive and can explode to huge choices
helper function to flatten optlists of conditionals into optlists without conditionals
returns the last element (which may differ in different contexts) or None if the list is empty
convenience function to map a function over all possible combinations of two conditional values
convenience function to map a function over all possible combinations of two conditional values
uses a common flatmap-map combination
same as mapCombination, but additionally avoids (some) infeasible computations.
same as mapCombination, but additionally avoids (some) infeasible computations.
since this involves satisifability checks, it may be more expensive than mapCombination but fewer computations may be performed, since infeasible combinations are skipped
conditional fold, see vfoldRight
conditional implementation of a fold operation on lists with optional entries.
conditional implementation of a fold operation on lists with optional entries.
on optional elements in the list the computation is split (if necessary) and the result is computed separately under all possible contexts
in contrast to foldRight, this version may introduce variation in a single implementation and propagates a variability context
a list of conditional values
an initial result value (conditional)
a function performing the operation
the result of the fold
conditional implementation of a fold operation on lists with optional entries.
conditional implementation of a fold operation on lists with optional entries.
on optional elements in the list the computation is split (if necessary) and the result is computed separately under all possible contexts
in contrast to foldRight, this version may introduce variation in a single implementation
a list of conditional values
an initial result value (conditional)
a function performing the operation
the result of the fold
conditional implementation of a fold operation on lists with optional entries.
conditional implementation of a fold operation on lists with optional entries.
on optional elements in the list the computation is split (if necessary) and the result is computed separately under all possible contexts
a list of conditional values
an initial result value (conditional)
a function performing the operation
the result of the fold
same as mapCombination, but additionally preserves a context during the computation
same as vmapCombination, but additionally avoids (some) infeasible computations.
same as vmapCombination, but additionally avoids (some) infeasible computations.
since this involves satisifability checks, it may be more expensive than vmapCombination but fewer computations may be performed, since infeasible combinations are skipped
(Since version 0.4.0) misnamed, use mapCombinedOp instead
(Since version 0.4.0) renamed to vfoldRight for consistency
(Since version 0.4.0) renamed to vfoldRightS for consistency
(Since version 0.4.0) renamed to vfoldRight for consistency
(Since version 0.4.0) renamed to vfoldRightR for consistency
(Since version 0.4.0) use value.simplify(ctx) instead
(Since version 0.4.0) removed due to unclear specification
(Since version 0.4.0) misnamed, use value.when(identity) instead
(Since version 0.4.0) use value.toList instead
(Since version 0.4.0) use value.toList().map(_._1) instead
(Since version 0.4.0) renamed to vmapCombination for consistency
(Since version 0.4.0) only for backward compatibility
(Since version 0.4.0) only for backward compatibility
maintains a map a name may be mapped to alternative entries with different feature expressions